Спрощення керування сховищем на EKS: Розгортання драйвера EBS CSI
Ефективне керування сховищем є основою сучасних Kubernetes кластерів. Amazon Elastic Kubernetes Service (EKS) спрощує надання сховищ завдяки підтримці драйвера Amazon Elastic Block Store (EBS) CSI. Цей драйвер дозволяє Kubernetes динамічно надавати та керувати томами EBS, оптимізуючи сховище для ваших застосунків. У цьому блозі ми розглянемо драйвер EBS CSI, його переваги та кроки для його розгортання на кластері EKS.
З'єднання драйвера CSI
Що таке драйвер EBS CSI?
Драйвер Amazon EBS CSI — це драйвер контейнерного інтерфейсу зберігання (Container Storage Interface, CSI), який дозволяє Kubernetes подам використовувати томи Amazon EBS як постійне сховище. Завдяки використанню специфікації CSI, він відокремлює Kubernetes від логіки, специфічної для сховищ, що дає змогу здійснювати масштабоване та гнучке керування томами.
Ключові можливості
- Динамічне надання: Автоматично створює та підключає томи EBS до Kubernetes подів.
- Керування томами: Підтримує зміну розміру, знімання моментальних знімків та видалення томів.
- Сумісність: Працює з класами зберігання gp2 і gp3, підтримує оптимізацію продуктивності.
- Інтеграція з безпекою: Використовує 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
, оновіть налаштування класу зберігання.
- Вимкнути gp2 як клас зберігання за замовчуванням:
kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
- Створити новий клас зберігання 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