چند اجاره پیشرفته EKS با Fargate و Karpenter

مقدمه
سرویس Kubernetes آمازون Elastic (EKS) یک بستر قدرتمند برای اجرای بارهای کاری کانتینر شده در مقیاس است. با این حال ، با رشد سازمانها ، آنها اغلب باید از آنها حمایت کنند چند اجاره– اجرای چندین تیم ، برنامه ها یا مشتریان در یک خوشه واحد ضمن اطمینان از انزوا ، امنیت و راندمان هزینه.
در این مقاله یک راهنمای جامع برای اجرای چند اجاره پیشرفته در EKS با استفاده از غوغا (محاسبه بدون سرور) و کارپنتر (خودکار سازی). ما پوشش خواهیم داد:
- نام های نام Kubernetes برای انزوا منطقی.
- سهمیه منابع برای اجرای محدوده منابع.
- IAM نقش برای حساب های خدمات (IRSA) برای کنترل دسترسی ریز دانه.
- غوغا وت کارپنتر برای تأمین منابع کارآمد.
در پایان این راهنما ، یک خوشه EKS چند مستاجر کاملاً کاربردی با بهینه سازی هزینه ، مقیاس پذیری و امنیت خواهید داشت.
1. بررسی اجزای کلیدی
1.1 نام های نام Kubernetes
- چه: نام های نام ها انزوای منطقی را برای منابع درون یک خوشه فراهم می کنند.
-
مورد استفاده: تیم ها ، برنامه ها یا محیط های جداگانه (به عنوان مثال ،
dev
باprod
).
1.2 سهمیه منابع
- چه: محدودیت های مربوط به استفاده از منابع (CPU ، حافظه ، ذخیره سازی) در هر فضای نام را اجرا کنید.
- مورد استفاده: از مصرف یک مستاجر واحد جلوگیری کنید.
1.3 IAM نقش برای حساب های خدمات (IRSA)
- چه: نقش های AWS IAM را به حساب های خدمات Kubernetes برای کنترل دسترسی ریز دانه اختصاص دهید.
- مورد استفاده: دسترسی به منابع AWS (به عنوان مثال ، S3 ، DynamoDB) را بر اساس فضای نام محدود کنید.
1.4 غوغا
- چه: محاسبه بدون سرور برای غلافهای Kubernetes.
- مورد استفاده: بارهای کاری را در سطح غلاف جدا کنید و بدون مدیریت گره.
1.5 کارپنتر
- چه: Autoscaler منبع باز برای Kubernetes.
- مورد استفاده: گره های ارائه شده به صورت پویا بر اساس شرایط بار کاری.
2. طراحی معماری
معماری شامل موارد زیر است:
-
نام های نام: جدایی منطقی برای مستاجران (
tenant-a
باtenant-b
). - سهمیه منابع: محدودیت ها را در هر فضای نام.
- IRSA: نقش های IAM را به حساب های خدمات در هر فضای نام اختصاص دهید.
- غوغا: غلاف را در محیط های جدا شده اجرا کنید.
- کارپنتر: گره های خودکار برای راندمان هزینه.
3. اجرای گام به گام
3.1 پیش نیازهای
- AWS CLI: نصب و پیکربندی شده است.
- به berctl: نصب و پیکربندی شده برای دسترسی به خوشه EKS شما.
- از روی: برای مدیریت خوشه های EKS نصب شده است.
# Install eksctl curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin
3.2 یک خوشه EKS ایجاد کنید
کنسول AWS:
- به سمت EKS> خوشه> ایجاد خوشهبشر
- انتخاب کردن غوغا به عنوان نوع محاسبه.
- فعال کردن IAM نقش برای حساب های خدمات (IRSA)بشر
CLI:
ضربه شدید
کپی کردن
eksctl create cluster \ --name multi-tenant-cluster \ --region us-east-1 \ --fargate
3.3 تنظیمات نام های نام را پیکربندی کنید
برای هر مستاجر فضای نام ایجاد کنید (tenant-a
با tenant-b
).
CLI:
kubectl create namespace tenant-a kubectl create namespace tenant-b
تأیید کنید:
kubectl get namespaces
3.4 سهمیه منابع را تنظیم کنید
سهمیه منابع را برای هر فضای نام تعریف کنید.
مستاجر a-quota.yaml:
apiVersion: v1 kind: ResourceQuota metadata: name: tenant-a-quota namespace: tenant-a spec: hard: requests.cpu: "4" requests.memory: "8Gi" limits.cpu: "8" limits.memory: "16Gi"
سهمیه ها را اعمال کنید:
kubectl apply -f tenant-a-quota.yaml kubectl apply -f tenant-b-quota.yaml
تأیید کنید:
kubectl describe resourcequota -n tenant-a
3.5 پیکربندی نقشهای IAM برای حساب های خدمات (IRSA)
-
سیاست های IAM ایجاد کنید:
- خط مشی را برای هر مستاجر تعریف کنید (به عنوان مثال ،
tenant-a-s3-read-only
).
- خط مشی را برای هر مستاجر تعریف کنید (به عنوان مثال ،
-
نقش های IAM را ایجاد کنید:
- استفاده کردن
eksctl
برای ایجاد نقش و ارتباط آنها با حساب های خدمات.
- استفاده کردن
CLI:
eksctl create iamserviceaccount \ --name tenant-a-sa \ --namespace tenant-a \ --cluster multi-tenant-cluster \ --attach-policy-arn arn:aws:iam::123456789012:policy/tenant-a-s3-read-only \ --approve
تأیید کنید:
kubectl describe sa tenant-a-sa -n tenant-a
3.6 مشخصات Fargate را مستقر کنید
پروفایل های Fargate تعیین می کنند که کدام غلافها روی Fargate اجرا می شوند.
کنسول AWS:
- به سمت EKS> خوشه ها> چند مستاجر خوشه> محاسبه> اضافه کردن پروفایل Fargateبشر
- نام های نام را مشخص کنید (
tenant-a
باtenant-b
).
CLI:
eksctl create fargateprofile \ --cluster multi-tenant-cluster \ --name tenant-a-profile \ --namespace tenant-a
3.7 کارپنتر را نصب و پیکربندی کنید
Karpenter به طور پویا گره ها را بر اساس نیازهای بار کاری ارائه می دهد.
نجار را نصب کنید:
helm repo add karpenter https://charts.karpenter.sh helm install karpenter karpenter/karpenter --namespace karpenter --create-namespace
پیکربندی کمیسیون ها:
apiVersion: karpenter.sh/v1alpha5 kind: Provisioner metadata: name: default spec: requirements: - key: "karpenter.sh/capacity-type" operator: In values: ["spot", "on-demand"] limits: resources: cpu: 100 memory: 1000Gi provider: instanceProfile: KarpenterNodeInstanceProfile
اعمال کمیسیون ها:
kubectl apply -f provisioner.yaml
3.8 بارهای کاری نمونه را مستقر کنید
برنامه های نمونه را برای آزمایش چند اجاره مستقر کنید.
مستاجر یک استقرار. yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: tenant-a-app namespace: tenant-a spec: replicas: 3 selector: matchLabels: app: tenant-a-app template: metadata: labels: app: tenant-a-app spec: serviceAccountName: tenant-a-sa containers: - name: nginx image: nginx resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"
درخواست استقرار:
kubectl apply -f tenant-a-deployment.yaml
3.9 نظارت و بهینه سازی
- ساعت: معیارهای خوشه را کنترل کنید (CPU ، حافظه).
- کارپنتر: گزارش های مربوط به تهیه گره را مرور کنید.
- کاوشگر هزینه: پس انداز هزینه را از نمونه های نقطه ای و فارگیت تجزیه و تحلیل کنید.
4 بهترین روشها
- انزوای فضای نام: از خط مشی های شبکه (به عنوان مثال ، CALICO) برای محدود کردن ارتباط POD استفاده کنید.
- مدیریت سهمیه: به طور مرتب سهمیه ها را بر اساس استفاده مرور و تنظیم کنید.
- IRSA: از سیاستهای IAM کمترین قدرت استفاده کنید.
- غوغا: برای بارهای کار کوتاه مدت یا پشت سر هم استفاده کنید.
- کارپنتر: نمونه های نقطه و تقاضا را برای بهینه سازی هزینه ترکیب کنید.
5. نتیجه گیری
با ترکیب نام های نام Kubernetesبا سهمیه منابعبا IRSAبا غوغاوت کارپنتر، می توانید یک خوشه EKS چند مستاجر امن ، مقیاس پذیر و مقرون به صرفه بسازید. این تنظیم ، انزوا را تضمین می کند ، محدودیت منابع را اعمال می کند و ضمن حفظ در دسترس بودن بالا ، هزینه ها را بهینه می کند.
خواندن بیشتر
این راهنما پایه و اساس محکمی برای چند اجاره پیشرفته EKS ارائه می دهد. با تنظیمات آزمایش کنید و آنها را با مورد استفاده خاص خود سازگار کنید!