Драйвер интерфейса хранилища контейнеров Amazon Elastic File System (CSI) реализует спецификацию CSI для оркестраторов контейнеров для управления жизненным циклом файловых систем Amazon EFS.
Драйвер Amazon EFS CSI Версия спецификации CSI | v0.3.0 | v1.1.0 | v1.2.0 |
---|---|---|---|
главная ветка | нет | нет | да |
v2.xx | нет | нет | да |
v1.xx | нет | нет | да |
v0.3.0 | нет | да | нет |
v0.2.0 | нет | да | нет |
v0.1.0 | да | нет | нет |
Драйвер Amazon EFS CSI поддерживает динамическую и статическую подготовку. В настоящее время Dynamic Provisioning создает точку доступа для каждого PV. Это означает, что файловую систему Amazon EFS необходимо сначала создать на AWS вручную и указать в качестве входных данных для параметра класса хранилища. Для статической подготовки файловую систему Amazon EFS необходимо сначала создать на AWS вручную. После этого его можно смонтировать внутри контейнера как том с помощью драйвера.
Реализованы следующие интерфейсы CSI:
Параметры | Ценности | По умолчанию | Необязательный | Описание |
---|---|---|---|---|
режим подготовки | efs-ap | ЛОЖЬ | Тип тома, предоставляемого efs. В настоящее время поддерживаются точки доступа. | |
fileSystemId | ЛОЖЬ | Файловая система, в которой создаются точки доступа. | ||
каталогPerms | ЛОЖЬ | Разрешения каталога для создания корневого каталога точки доступа. | ||
жидкость | истинный | Идентификатор пользователя POSIX, который будет применяться для создания корневого каталога точки доступа. | ||
гид | истинный | Идентификатор группы POSIX, который будет применяться для создания корневого каталога точки доступа. | ||
gidRangeStart | 50000 | истинный | Начальный диапазон идентификатора группы POSIX, который будет применяться для создания корневого каталога точки доступа. Не используется, если установлен uid/gid. | |
gidRangeEnd | 7000000 | истинный | Конечный диапазон идентификатора группы POSIX. Не используется, если установлен uid/gid. | |
базовый путь | истинный | Путь, по которому создаются точки доступа для динамической подготовки. Если этот параметр не указан, точки доступа создаются в корневом каталоге файловой системы. | ||
субпутьпаттерн | /${.PV.name} | истинный | Шаблон, используемый для создания подпути, в соответствии с которой создается каждая из точек доступа в рамках динамической подготовки. Может состоять из фиксированных строк и ограниченных переменных, аналогично переменной «subPathPattern» в диаграмме nfs-subdir-external-provisioner. Поддерживает .PVC.name , .PVC.namespace и .PV.name | |
обеспечениеУникеДиректори | истинный | истинный | ПРИМЕЧАНИЕ. Устанавливайте значение false только в том случае, если вы уверены, что это именно то поведение, которое вам нужно . Используется, когда включена динамическая подготовка. Если установлено значение true, UID добавляется к шаблону, указанному в subPathPattern чтобы гарантировать, что точки доступа не будут случайно указывать на один и тот же каталог. | |
аз | "" | истинный | Используется для кросс-аккаунта. az в параметре класса хранилища является необязательным. Если указано, цель монтирования, связанная с az, будет использоваться для монтирования между учетными записями. Если не указано, для монтирования между учетными записями будет выбрана случайная цель монтирования. | |
повторное использованиеAccessPoint | ЛОЖЬ | истинный | Если установлено значение true, он создает клиентский токен точки доступа из предоставленного имени PVC. Чтобы точку доступа можно было реплицировать из другого кластера, если используется то же имя PVC и конфигурация класса хранения. |
Примечание
gidRangeStart
и gidRangeEnd
. Эти параметры являются необязательными, только если оба опущены. Если вы укажете одно, другое станет обязательным.az
в параметре класса хранилища не путать с параметром монтирования efs-utils az
. Параметр az
mount используется для монтирования между az или для монтирования файловой системы одной зоны efs в пределах той же учетной записи aws, что и кластер.Если вы хотите передать какие-либо другие параметры mountOptions драйверу Amazon EFS CSI во время монтирования, их можно передать через объекты Persistent Volume или Storage Class, в зависимости от того, используется ли статическая или динамическая подготовка. Ниже приведены примеры некоторых параметров mountOptions, которые можно передать:
При использовании драйвера EFS CSI имейте в виду, что опция монтирования noresvport
включена по умолчанию. Это означает, что клиент может использовать для связи любой доступный исходный порт, а не только зарезервированные порты.
Одним из преимуществ использования Amazon EFS является то, что он обеспечивает поддержку шифрования при передаче с использованием TLS. Используя шифрование при передаче, данные будут зашифрованы во время передачи по сети в сервис Amazon EFS. Это обеспечивает дополнительный уровень глубокоэшелонированной защиты для приложений, требующих строгого соблюдения требований безопасности.
Шифрование при передаче включено по умолчанию в версии драйвера основной ветки. Чтобы отключить его и смонтировать тома с помощью обычного NFSv4, установите для поля volumeAttributes
encryptInTransit
значение "false"
в манифесте постоянного тома. Пример манифеста см. в примере шифрования при передаче.
Примечание
Если вы используете эту функцию в Kubernetes, требуется Kubernetes версии 1.13 или новее.
Следующие разделы относятся только к Kubernetes. Если вы являетесь пользователем Kubernetes, используйте это для информации о функциях драйвера, этапах установки и примерах.
Драйвер Amazon EFS CSI Версия Kubernetes | зрелость | v1.11 | v1.12 | v1.13 | v1.14 | v1.15 | v1.16 | v1.17+ |
---|---|---|---|---|---|---|---|---|
главная ветка | Джорджия | нет | нет | нет | нет | нет | нет | да |
v2.1.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v2.0.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.7.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.6.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.5.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.4.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.3.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.2.x | Джорджия | нет | нет | нет | нет | нет | нет | да |
v1.1.x | Джорджия | нет | нет | нет | да | да | да | да |
v1.0.x | Джорджия | нет | нет | нет | да | да | да | да |
v0.3.0 | бета | нет | нет | нет | да | да | да | да |
v0.2.0 | бета | нет | нет | нет | да | да | да | да |
v0.1.0 | альфа | да | да | да | нет | нет | нет | нет |
Версия драйвера Amazon EFS CSI | Изображение |
---|---|
главная ветка | Amazon/aws-efs-csi-драйвер: мастер |
v2.1.0 | Amazon/aws-efs-csi-драйвер: v2.1.0 |
v2.0.9 | Amazon/aws-efs-csi-драйвер: v2.0.9 |
v2.0.8 | Amazon/aws-efs-csi-драйвер: v2.0.8 |
v2.0.7 | Amazon/aws-efs-csi-драйвер: v2.0.7 |
v2.0.6 | Amazon/aws-efs-csi-драйвер: v2.0.6 |
v2.0.5 | Amazon/aws-efs-csi-драйвер: v2.0.5 |
v2.0.4 | Amazon/aws-efs-csi-драйвер: v2.0.4 |
v2.0.3 | Amazon/aws-efs-csi-драйвер: v2.0.3 |
v2.0.2 | Amazon/aws-efs-csi-драйвер: v2.0.2 |
v2.0.1 | Amazon/aws-efs-csi-драйвер: v2.0.1 |
v2.0.0 | Amazon/aws-efs-csi-драйвер: v2.0.0 |
v1.7.7 | Amazon/aws-efs-csi-драйвер: v1.7.7 |
v1.7.6 | Amazon/aws-efs-csi-драйвер: v1.7.6 |
v1.7.5 | Amazon/aws-efs-csi-драйвер: v1.7.5 |
v1.7.4 | Amazon/aws-efs-csi-драйвер: v1.7.4 |
v1.7.3 | Amazon/aws-efs-csi-драйвер: v1.7.3 |
v1.7.2 | Amazon/aws-efs-csi-драйвер: v1.7.2 |
v1.7.1 | Amazon/aws-efs-csi-драйвер: v1.7.1 |
v1.7.0 | Amazon/aws-efs-csi-драйвер: v1.7.0 |
v1.6.0 | Amazon/aws-efs-csi-драйвер: v1.6.0 |
v1.5.9 | Amazon/aws-efs-csi-драйвер: v1.5.9 |
v1.5.8 | Amazon/aws-efs-csi-драйвер: v1.5.8 |
v1.5.7 | Amazon/aws-efs-csi-драйвер: v1.5.7 |
v1.5.6 | Amazon/aws-efs-csi-драйвер: v1.5.6 |
v1.5.5 | Amazon/aws-efs-csi-драйвер: v1.5.5 |
v1.5.4 | Amazon/aws-efs-csi-драйвер: v1.5.4 |
v1.5.3 | Amazon/aws-efs-csi-драйвер: v1.5.3 |
v1.5.2 | Amazon/aws-efs-csi-драйвер: v1.5.2 |
v1.5.1 | Amazon/aws-efs-csi-драйвер: v1.5.1 |
v1.5.0 | Amazon/aws-efs-csi-драйвер: v1.5.0 |
v1.4.9 | Amazon/aws-efs-csi-драйвер: v1.4.9 |
v1.4.8 | Amazon/aws-efs-csi-драйвер: v1.4.8 |
v1.4.7 | Amazon/aws-efs-csi-драйвер: v1.4.7 |
v1.4.6 | Amazon/aws-efs-csi-драйвер: v1.4.6 |
v1.4.5 | Amazon/aws-efs-csi-драйвер: v1.4.5 |
v1.4.4 | Amazon/aws-efs-csi-драйвер: v1.4.4 |
v1.4.3 | Amazon/aws-efs-csi-драйвер: v1.4.3 |
v1.4.2 | Amazon/aws-efs-csi-драйвер: v1.4.2 |
v1.4.1 | Amazon/aws-efs-csi-драйвер: v1.4.1 |
v1.4.0 | Amazon/aws-efs-csi-драйвер: v1.4.0 |
v1.3.8 | Amazon/aws-efs-csi-драйвер: v1.3.8 |
v1.3.7 | Amazon/aws-efs-csi-драйвер: v1.3.7 |
v1.3.6 | Amazon/aws-efs-csi-драйвер: v1.3.6 |
v1.3.5 | Amazon/aws-efs-csi-драйвер: v1.3.5 |
v1.3.4 | Amazon/aws-efs-csi-драйвер: v1.3.4 |
v1.3.3 | Amazon/aws-efs-csi-драйвер: v1.3.3 |
v1.3.2 | Amazon/aws-efs-csi-драйвер: v1.3.2 |
v1.3.1 | Amazon/aws-efs-csi-драйвер: v1.3.1 |
v1.3.0 | Amazon/aws-efs-csi-драйвер: v1.3.0 |
v1.2.1 | Amazon/aws-efs-csi-драйвер: v1.2.1 |
v1.2.0 | Amazon/aws-efs-csi-драйвер: v1.2.0 |
v1.1.1 | Amazon/aws-efs-csi-драйвер: v1.1.1 |
v1.1.0 | Amazon/aws-efs-csi-драйвер: v1.1.0 |
v1.0.0 | Amazon/aws-efs-csi-драйвер: v1.0.0 |
v0.3.0 | Amazon/aws-efs-csi-драйвер: v0.3.0 |
v0.2.0 | Amazon/aws-efs-csi-драйвер: v0.2.0 |
v0.1.0 | Amazon/aws-efs-csi-драйвер: v0.1.0 |
Версия драйвера | ЭЦР-изображение |
---|---|
v2.1.0 | public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver:v2.1.0 |
Примечание
Вы можете найти изображения предыдущих версий efs-csi-driver здесь.
Примечание
Поскольку Amazon EFS — это эластичная файловая система, она на самом деле не требует какой-либо емкости файловой системы. Фактическое значение емкости хранилища в постоянном томе и заявке на постоянный том не используется при создании файловой системы. Однако, поскольку емкость хранилища является обязательным полем для Kubernetes, вы должны указать значение и можете использовать любое допустимое значение для емкости.
Соображения
1.2
или более поздней. Вы можете статически выделять постоянные тома с помощью драйвера версии 1.1
в любой поддерживаемой версии кластера Amazon EKS.1.3.2
или более поздняя версия этого драйвера поддерживает архитектуру Arm64, включая экземпляры Amazon EC2 Graviton.1.4.2
или более поздняя версия этого драйвера поддерживает использование FIPS для монтирования файловых систем. Дополнительные сведения о том, как включить FIPS, см. в Helm.При запуске узла (особенно когда узел впервые присоединяется к кластеру) возникают потенциальные условия гонки, когда модули/процессы, использующие драйвер EFS CSI, могут действовать на узле до того, как драйвер EFS CSI сможет запуститься и стать полностью готовым. Чтобы бороться с этим, драйвер EFS CSI содержит функцию автоматического удаления порчи с узла при запуске. Эта функция была представлена в версии v1.7.2 драйвера EFS CSI и версии v2.5.2 его диаграммы Helm. Пользователи могут испортить свои узлы при присоединении к кластеру и/или при запуске, чтобы предотвратить запуск и/или планирование других модулей на узле до того, как драйвер EFS CSI будет готов.
Эта функция активирована по умолчанию, и администраторам кластера следует использовать taint efs.csi.aws.com/agent-not-ready:NoExecute
(любой эффект будет работать, но рекомендуется NoExecute
). Например, группы управляемых узлов EKS поддерживают автоматическое изменение узлов.
Предварительные условия
aws configure
в Руководстве пользователя интерфейса командной строки AWS. Версия AWS CLI, установленная в AWS CloudShell, также может на несколько версий отставать от последней версии. Чтобы обновить его, см. раздел «Установка AWS CLI в домашний каталог» Руководства пользователя AWS CloudShell.kubectl
установлен на вашем устройстве или в AWS CloudShell. Версия может совпадать с версией Kubernetes вашего кластера или быть на одну дополнительную версию более ранней или более поздней. Чтобы установить или обновить kubectl
, см. раздел Установка или обновление kubectl
. Примечание
Под, работающий на AWS Fargate, автоматически монтирует файловую систему Amazon EFS без необходимости ручной установки драйвера, описанной на этой странице.
Драйверу требуется разрешение IAM для взаимодействия с Amazon EFS и управления томом от имени пользователя. Существует несколько способов предоставить драйверу разрешение IAM:
AmazonEFSCSIDriverPolicy
необходимо добавить в роль IAM группы узлов кластера.Существует несколько вариантов развертывания драйвера. Ниже приведены некоторые примеры.
Для этой процедуры требуется Helm V3 или новее. Чтобы установить или обновить Helm, см. раздел Использование Helm с Amazon EKS.
Чтобы установить драйвер с помощью Helm
Добавьте репозиторий Helm.
helm repo add aws-efs-csi-driver https://kubernetes-sigs.github.io/aws-efs-csi-driver/
Обновите репо.
helm repo update aws-efs-csi-driver
Установите версию драйвера, используя диаграмму Helm.
helm upgrade --install aws-efs-csi-driver --namespace kube-system aws-efs-csi-driver/aws-efs-csi-driver
Чтобы указать репозиторий изображений, добавьте следующий аргумент. Замените адрес репозитория адресом образа контейнера кластера.
--set image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/aws-efs-csi-driver
Если вы уже создали учетную запись службы, следуя инструкциям по созданию политики и роли IAM для Amazon EKS, добавьте следующие аргументы.
--set controller.serviceAccount.create=false
--set controller.serviceAccount.name=efs-csi-controller-sa
Если у вас нет исходящего доступа к Интернету, добавьте следующие аргументы.
--set sidecars.livenessProbe.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/livenessprobe
--set sidecars.node-driver-registrar.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/csi-node-driver-registrar
--set sidecars.csiProvisioner.image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/csi-provisioner
Чтобы заставить драйвер Amazon EFS CSI использовать FIPS для монтирования файловой системы, добавьте следующий аргумент.
--set useFips=true
Примечание
hostNetwork: true
(следует добавить в раздел спецификации/развертывания в установках Kubernetes, где метаданные AWS недоступны из сети модулей. Чтобы исправить следующую ошибку NoCredentialProviders: no valid providers in chain
необходимо добавить этот параметр.)
Если вы хотите загрузить образ с манифестом, мы рекомендуем сначала попробовать выполнить эти действия, чтобы получить защищенные образы из частного реестра Amazon ECR.
Установка драйвера с использованием изображений, хранящихся в частном реестре Amazon ECR.
Загрузите манифест. Замените release-XX
на нужную ветку. Мы рекомендуем использовать последнюю выпущенную версию. Список активных ветвей см. в разделе «Ветви».
kubectl kustomize
" github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/ecr/?ref=release-2.X " > private-ecr-driver.yaml
Примечание
Если вы столкнулись с проблемой, которую не удается решить путем добавления разрешений IAM, попробуйте вместо этого выполнить действия по манифесту (публичный реестр).
В следующей команде замените region-code
на регион AWS, в котором находится ваш кластер. Затем запустите измененную команду, чтобы заменить us-west-2
в файле на ваш регион AWS.
sed -i.bak -e ' s|us-west-2|region-code| ' private-ecr-driver.yaml
Замените account
в следующей команде учетной записью из реестров образов контейнеров Amazon для региона AWS, в котором находится ваш кластер, а затем запустите измененную команду, чтобы заменить 602401143452
в файле.
sed -i.bak -e ' s|602401143452|account| ' private-ecr-driver.yaml
Если вы уже создали учетную запись службы, следуя инструкциям по созданию политики и роли IAM для Amazon EKS, отредактируйте файл private-ecr-driver.yaml
. Удалите следующие строки, которые создают учетную запись службы Kubernetes.
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/name: aws-efs-csi-driver
name: efs-csi-controller-sa
namespace: kube-system
---
Примените манифест.
kubectl apply -f private-ecr-driver.yaml
В некоторых ситуациях вы не сможете добавить необходимые разрешения IAM для извлечения данных из частного реестра Amazon ECR. Одним из примеров этого сценария является ситуация, когда вашему субъекту IAM не разрешено проходить проверку подлинности с использованием чужой учетной записи. Если это так, вы можете использовать общедоступный реестр Amazon ECR.
Установка драйвера с использованием изображений, хранящихся в общедоступном реестре Amazon ECR.
Загрузите манифест. Замените release-XX
на нужную ветку. Мы рекомендуем использовать последнюю выпущенную версию. Список активных ветвей см. в разделе «Ветви».
kubectl kustomize
" github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.X " > public-ecr-driver.yaml
Если вы уже создали учетную запись службы, следуя инструкциям по созданию политики и роли IAM, отредактируйте файл public-ecr-driver.yaml
. Удалите следующие строки, которые создают учетную запись службы Kubernetes.
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/name: aws-efs-csi-driver
name: efs-csi-controller-sa
namespace: kube-system
---
Примените манифест.
kubectl apply -f public-ecr-driver.yaml
После развертывания драйвера вы можете перейти к этим разделам:
Параметры | Ценности | По умолчанию | Необязательный | Описание |
---|---|---|---|---|
vol-metrics-согласие | ЛОЖЬ | истинный | Включите отправку показателей объема. | |
объем-метрики-период обновления | 240 | истинный | Период обновления показателей объема в минутах. | |
vol-metrics-fs-rate-limit | 5 | истинный | Ограничитель скорости подпрограмм метрики тома для каждой файловой системы. |
Включение параметра vol-metrics-opt-in активирует сбор данных об использовании индексного дескриптора и диска. Эта функция, особенно в сценариях с большими файловыми системами, может привести к увеличению использования памяти из-за детального агрегирования информации о файловой системе. Мы советуем пользователям с крупномасштабными файловыми системами учитывать этот аспект при использовании этой функции.
Параметры | Ценности | По умолчанию | Необязательный | Описание |
---|---|---|---|---|
удалить-точку-доступа-корневой-каталог | ЛОЖЬ | истинный | Включите удаление корневого каталога точки доступа с помощью DeleteVolume. По умолчанию DeleteVolume удалит точку доступа за постоянным томом, а удаление точки доступа не приведет к удалению корневого каталога точки доступа или его содержимого. | |
теги | истинный | Пары ключ:значение, разделенные пробелами, которые будут добавлены в качестве тегов для ресурсов Amazon EFS. Например, '--tags=name:efs-tag-test date:Jan24' |
Если вы хотите обновиться до последней выпущенной версии:
kubectl apply -k " github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.0 "
Если вы хотите выполнить обновление до определенной версии, сначала настройте файл yaml драйвера локально:
kubectl kustomize " github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.0 " > driver.yaml
Затем обновите все строки, ссылающиеся на image: amazon/aws-efs-csi-driver
до нужной версии (например, на image: amazon/aws-efs-csi-driver:v2.1.0
) в файле yaml и разверните драйвер yaml. снова:
kubectl apply -f driver.yaml
Прежде чем следовать примерам, вам необходимо:
elasticfilesystem:DescribeMountTargets
и ec2:DescribeAvailabilityZones
в вашей политике, прикрепленной к роли сервисной учетной записи Amazon EKS, см. пример политики здесь. Прежде чем приступить к работе, просмотрите спецификацию CSI и документацию разработчика Kubernetes CSI, чтобы получить базовое представление о драйвере CSI.
Если вы собираетесь обновить файл политики iam, обновите также политику efs в weaveworks/eksctl https://github.com/weaveworks/eksctl/blob/main/pkg/cfn/builder/statement.go */
Зависимости управляются через модуль go. Чтобы собрать проект, сначала включите go mod, используя export GO111MODULE=on
, для сборки проекта запустите: make
Чтобы выполнить все модульные тесты, запустите: make test
Чтобы получить журналы и устранить неполадки с драйвером, см. Troubleshooting/README.md.
Эта библиотека распространяется по лицензии Apache 2.0.