برنامه نویسی

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

مقدمه

سرویس Kubernetes آمازون Elastic (EKS) یک بستر قدرتمند برای اجرای بارهای کاری کانتینر شده در مقیاس است. با این حال ، با رشد سازمانها ، آنها اغلب باید از آنها حمایت کنند چند اجاره– اجرای چندین تیم ، برنامه ها یا مشتریان در یک خوشه واحد ضمن اطمینان از انزوا ، امنیت و راندمان هزینه.

در این مقاله یک راهنمای جامع برای اجرای چند اجاره پیشرفته در EKS با استفاده از غوغا (محاسبه بدون سرور) و کارپنتر (خودکار سازی). ما پوشش خواهیم داد:

  1. نام های نام Kubernetes برای انزوا منطقی.
  2. سهمیه منابع برای اجرای محدوده منابع.
  3. IAM نقش برای حساب های خدمات (IRSA) برای کنترل دسترسی ریز دانه.
  4. غوغا وت کارپنتر برای تأمین منابع کارآمد.

در پایان این راهنما ، یک خوشه 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:

  1. به سمت EKS> خوشه> ایجاد خوشهبشر
  2. انتخاب کردن غوغا به عنوان نوع محاسبه.
  3. فعال کردن 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)

  1. سیاست های IAM ایجاد کنید:

    • خط مشی را برای هر مستاجر تعریف کنید (به عنوان مثال ، tenant-a-s3-read-only).
  2. نقش های 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:

  1. به سمت EKS> خوشه ها> چند مستاجر خوشه> محاسبه> اضافه کردن پروفایل Fargateبشر
  2. نام های نام را مشخص کنید (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 بهترین روشها

  1. انزوای فضای نام: از خط مشی های شبکه (به عنوان مثال ، CALICO) برای محدود کردن ارتباط POD استفاده کنید.
  2. مدیریت سهمیه: به طور مرتب سهمیه ها را بر اساس استفاده مرور و تنظیم کنید.
  3. IRSA: از سیاستهای IAM کمترین قدرت استفاده کنید.
  4. غوغا: برای بارهای کار کوتاه مدت یا پشت سر هم استفاده کنید.
  5. کارپنتر: نمونه های نقطه و تقاضا را برای بهینه سازی هزینه ترکیب کنید.

5. نتیجه گیری

با ترکیب نام های نام Kubernetesبا سهمیه منابعبا IRSAبا غوغاوت کارپنتر، می توانید یک خوشه EKS چند مستاجر امن ، مقیاس پذیر و مقرون به صرفه بسازید. این تنظیم ، انزوا را تضمین می کند ، محدودیت منابع را اعمال می کند و ضمن حفظ در دسترس بودن بالا ، هزینه ها را بهینه می کند.

خواندن بیشتر

این راهنما پایه و اساس محکمی برای چند اجاره پیشرفته EKS ارائه می دهد. با تنظیمات آزمایش کنید و آنها را با مورد استفاده خاص خود سازگار کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا