Вопрос или проблема
Я пытаюсь создать тестовый под с постоянным томом.
Это мой pod.yaml и pvc.yaml в кластере EKS.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
namespace: my-ns
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: gp2
apiVersion: v1
kind: Pod
metadata:
name: test-pod
namespace: my-ns
spec:
containers:
- name: test-container
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- mountPath: /mnt/data
name: my-pvc-volume
volumes:
- name: my-pvc-volume
persistentVolumeClaim:
claimName: my-pvc
Если я опишу PVC, он отображается следующим образом:
Предупреждение ProvisioningFailed 4m58s (x5 за 14m)
ebs.csi.aws.com_ebs-csi-controller-dd646df8-7ddpr_aca98eff-9b9a-4bce-8049-b34905dffc7e
не удалось создать том с классом хранения “gp2”: rpc ошибка: код =
Internal desc = Не удалось создать том “pvc-1bed8d46-f728-4b15-b7e │
f-9a5425c0814d”: не удалось создать том в EC2: ошибка операции
EC2: CreateVolume, получить личность: получить учетные данные: не удалось обновить
кэшированные учетные данные, роль EC2 IMDS не найдена, ошибка операции ec2imds:
GetMetadata, запрос отменен, срок действия контекста истекНормально ExternalProvisioning 71s (x99 за 25m)
persistentvolume-controller Ожидание создания тома либо
внешним провайдером ‘ebs.csi.aws.com’, либо вручную системным администратором. Если создание тома задерживается, пожалуйста,
убедитесь, что провайдер работает и правильно зарегистрирован.
Логи пода EBS-CSI в kube-system показывают ошибку: “не удалось обновить кэшированные учетные данные, роль EC2 IMDS не найдена”
E1005 20:52:29.823331 1 driver.go:108] “GRPC ошибка” err=”rpc ошибка: код = Internal desc = Не удалось создать том “pvc-1bed8d46-f728-4b15-b7ef-9a5425c0814d”: не удалось создать том в EC2: ошибка операции EC2: CreateVolume, получить личность: получить учетные данные: не удалось обновить кэшированные учетные данные, роль EC2 IMDS не найдена, ошибка операции ec2imds: GetMetadata, отменено, срок действия контекста истек”
Ответ или решение
Проблема, с которой вы столкнулись, касается ошибки при попытке создать постоянный том в кластере Amazon EKS, в результате чего не удается обновить кешированные учетные данные для доступа к EC2. Ошибка "failed to refresh cached credentials, no EC2 IMDS role found" указывает на то, что CSI-драйвер EBS не может получить необходимые учетные данные от EC2 Instance Metadata Service (IMDS), что обычно возникает из-за отсутствия правильных IAM-ролей или прав доступа.
Вот шаги для решения данной проблемы:
-
Проверка IAM роли для узлов кластера EKS:
Убедитесь, что IAM-роль, назначенная узлам вашего EKS-кластера, имеет необходимые разрешения для работы с EBS. Вам необходимо убедиться, что эта роль включает в себя политику, которая позволяет доступ к EC2 и создание томов EBS. Наиболее распространенные разрешения включают:{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVolumes", "ec2:CreateVolume", "ec2:AttachVolume", "ec2:ModifyVolume", "ec2:DeleteVolume" ], "Resource": "*" }
-
Проверка назначения IAM роли:
Убедитесь, что ваша IAM-роль действительно назначена вашим узлам EKS. Это можно сделать, проверив конфигурацию узлов через консоль AWS или с помощью AWS CLI. Для узла в публичных или частных подсетях проверьте, есть ли у него внешний доступ к услугам AWS, так как это может быть причиной избежания получения заданной информации об идентификации. -
Проверка настроек метаданных IMDS:
Включите доступ к IMDS на уровне инстанса. Используйте следующий CLI-код, чтобы проверить параметры:aws ec2 describe-instances --instance-ids <ваш_instance_id> --query 'Reservations[*].Instances[*].MetadataOptions'
Убедитесь, что
HttpTokens
установлено вoptional
илиrequired
, аHttpEndpoint
установлен вenabled
. -
Перезапуск EBS-CSI Driver:
Если проблема не решается, попробуйте перезапустить поды драйвера EBS-CSI, чтобы обновить кэшенные учетные данные. Это можно сделать через:kubectl delete pod -n kube-system <имя_пода_ebs_csi>
-
Проверка сетевых настроек:
Убедитесь, что ваши узлы могут обращаться к сервисам AWS, например, EC2 и S3. Это может требовать настройки NAT Gateway или правильной конфигурации безопасности подов и узлов. -
Просмотр логов:
Проверьте журналы соответствующего пода CSI EBS более внимательно, если ошибка продолжает возникать после вышеуказанных шагов. -
Соответствие компонентам:
Убедитесь, что версия вашего EKS-кластера совместима с версией EBS-CSI драйвера. Обновите компоненты, если это необходимо.
Если после выполнения всех вышеперечисленных шагов проблема сохраняется, вам может потребоваться дополнительная поддержка от AWS или сообществ Kubernetes.