Оволодіння постійним сховищем в EKS: Розгортання та управління EBS за допомогою драйвера CSI

Спрощення керування сховищем на EKS: Розгортання драйвера EBS CSI

Ефективне керування сховищем є основою сучасних Kubernetes кластерів. Amazon Elastic Kubernetes Service (EKS) спрощує надання сховищ завдяки підтримці драйвера Amazon Elastic Block Store (EBS) CSI. Цей драйвер дозволяє Kubernetes динамічно надавати та керувати томами EBS, оптимізуючи сховище для ваших застосунків. У цьому блозі ми розглянемо драйвер EBS CSI, його переваги та кроки для його розгортання на кластері EKS.

pic

З'єднання драйвера CSI

Що таке драйвер EBS CSI?

Драйвер Amazon EBS CSI — це драйвер контейнерного інтерфейсу зберігання (Container Storage Interface, CSI), який дозволяє Kubernetes подам використовувати томи Amazon EBS як постійне сховище. Завдяки використанню специфікації CSI, він відокремлює Kubernetes від логіки, специфічної для сховищ, що дає змогу здійснювати масштабоване та гнучке керування томами.

Ключові можливості

  1. Динамічне надання: Автоматично створює та підключає томи EBS до Kubernetes подів.
  2. Керування томами: Підтримує зміну розміру, знімання моментальних знімків та видалення томів.
  3. Сумісність: Працює з класами зберігання gp2 і gp3, підтримує оптимізацію продуктивності.
  4. Інтеграція з безпекою: Використовує AWS IAM для доступу до ресурсів EBS на основі ролей.

Сценарії використання

  • Станові навантаження, які потребують надійного та ефективного зберігання.
  • Застосунки, що потребують моментальних знімків для резервного копіювання або відновлення після катастроф.
  • Динамічне масштабування сховища для баз даних та файлових систем.

Переваги драйвера EBS CSI на EKS

1. Спрощене керування сховищем

Драйвер EBS CSI абстрагує складність вручну наданих і керованих томів сховища, автоматизуючи такі задачі, як підключення томів та їх конфігурація.

2. Динамічне масштабування

З підтримкою динамічного надання та зміни розміру драйвер EBS CSI дозволяє масштабувати сховище відповідно до зростаючих вимог вашого застосунку.

3. Покращена безпека

Завдяки використанню ролей IAM для сервісних акаунтів драйвер гарантує безпечний доступ до томів EBS, прив'язуючи їх до Kubernetes подів.

4. Оптимізація продуктивності

Драйвер підтримує томи gp3, що забезпечують покращену продуктивність за нижчою ціною порівняно з gp2.

5.

**Інтеграція з Kubernetes

Драйвер безшовно інтегрується з Kubernetes, що дозволяє розробникам керувати сховищем через знайомі конструкції Kubernetes, такі як PersistentVolumeClaims (PVCs).

Кроки для розгортання драйвера EBS CSI на кластері EKS

Попередні вимоги

Перед розгортанням драйвера EBS CSI, переконайтеся, що у вас є:

  • Налаштований і запущений кластер EKS.
  • Встановлений і налаштований AWS CLI з необхідними дозволами.
  • Встановлені інструменти kubectl і eksctl на вашій системі.

Крок 1: Асоціювання постачальника IAM OIDC

Для того, щоб увімкнути IAM Roles for Service Accounts (IRSA), асоціюйте постачальника OIDC з вашим кластером EKS.

eksctl utils associate-iam-oidc-provider --region  --cluster  --approve

Крок 2: Створення ролі IAM для драйвера EBS CSI

Створіть сервісний акаунт і прикріпіть до нього політику AmazonEBSCSIDriverPolicy.

eksctl create iamserviceaccount \  
 --name ebs-csi-controller-irsa \  
 --namespace kube-system \  
 --cluster  \  
 --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \  
 --approve

Крок 3: Встановлення драйвера EBS CSI за допомогою Helm

Розгорніть драйвер EBS CSI за допомогою команди Helm нижче:

helm upgrade --install aws-ebs-csi-driver --version=1.2.4 --namespace kube-system \  
 --set serviceAccount.controller.create=false \  
 --set serviceAccount.snapshot.create=false \  
 --set enableVolumeScheduling=true \  
 --set enableVolumeResizing=true \  
 --set enableVolumeSnapshot=true \  
 --set serviceAccount.snapshot.name=ebs-csi-controller-irsa \  

 aws-ebs-csi-driver/aws-ebs-csi-driver

Пояснення команди Helm

  • --version=1.2.4: Вказує версію драйвера EBS CSI для встановлення.
  • --namespace kube-system: Розгортає драйвер у просторі імен kube-system.
  • --set serviceAccount.controller.create=false: Вимикає автоматичне створення сервісного акаунта для контролера.
  • --set serviceAccount.snapshot.create=false: Вимикає автоматичне створення сервісного акаунта для операцій з моментальними знімками.
  • --set enableVolumeScheduling=true: Увімкнено динамічне надання томів EBS для планування.
  • --set enableVolumeResizing=true: Дозволяє змінювати розмір існуючих томів EBS.
  • --set enableVolumeSnapshot=true: Увімкнено підтримку моментальних знімків томів.
  • --set serviceAccount.snapshot.name=ebs-csi-controller-irsa: Призначає ім’я сервісного акаунта для моментальних знімків.
  • --set serviceAccount.controller.name=ebs-csi-controller-irsa: Призначає ім’я сервісного акаунта для контролера.

Крок 4: Оновлення класу зберігання за замовчуванням

Якщо ви хочете змінити клас зберігання з gp2 на gp3, оновіть налаштування класу зберігання.

  1. Вимкнути gp2 як клас зберігання за замовчуванням:
kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
  1. Створити новий клас зберігання gp3:
apiVersion: storage.k8s.io/v1  
kind: StorageClass  
metadata:  
 name: gp3  
 annotations:  
 storageclass.kubernetes.io/is-default-class: "true"  
provisioner: ebs.csi.aws.com  
parameters:  
 type: gp3  
 allowVolumeExpansion: "true"

allowVolumeExpansion :

Параметр allowVolumeExpansion дозволяє динамічно змінювати розмір томів EBS, коли вимоги до сховища зростають.
Це забезпечує безшовне масштабування сховища без необхідності ручного втручання, зменшуючи час простою та підвищуючи гнучкість для додатків з змінними вимогами до сховища.

Застосуйте конфігурацію:

kubectl apply -f gp3-storageclass.yaml

Перевірка розгортання

Після встановлення перевірте розгортання драйвера EBS CSI, створивши PersistentVolumeClaim (PVC):

apiVersion: v1  
kind: PersistentVolumeClaim  
metadata:  
 name: ebs-test-pvc  
spec:  
 accessModes:  
 - ReadWriteOnce  
 resources:  
 requests:  
 storage: 10Gi  
 storageClassName: gp3

Застосуйте PVC:

kubectl apply -f ebs-test-pvc.yaml

Крок 5: Створення тестового поду

Для перевірки PVC створіть тестовий под, що використовує том:

apiVersion: v1  
kind: Pod  
metadata:  
 name: ebs-test-pod  
spec:  
 containers:  
 - name: app  
 image: busybox  
 command: ["sleep", "3600"]  
 volumeMounts:  
 - mountPath: /mnt/data  
 name: ebs-volume  
 volumes:  
 - name: ebs-volume  
 persistentVolumeClaim:  
 claimName: ebs-test-pvc

Застосуйте конфігурацію поду:

kubectl apply -f ebs-test-pod.yaml

Перевірте статус PVC та його асоційованого поду, щоб переконатися, що том правильно наданий і змонтований:

kubectl get pvc ebs-test-pvc kubectl describe pod ebs-test-pod

Висновок

Драйвер Amazon EBS CSI приносить потужні та гнучкі можливості керування сховищем для кластерів Kubernetes, що працюють на EKS. Автоматизуючи надання, масштабування та управління томами EBS, він спрощує операції та покращує продуктивність додатків. Дотримуйтесь кроків, викладених у цьому блозі, щоб розгорнути драйвер EBS CSI та перевірити його функціональність за допомогою налаштування тестового поду.

Розроблено: Akshay Jain, EM — DevOps @ Baazi Games

Концептуалізовано: Siddharth Vijay, AVP — Engg @ Baazi Games

Перекладено з: Mastering Persistent Storage in EKS: Deploying and Managing EBS with the CSI Driver

Leave a Reply

Your email address will not be published. Required fields are marked *