Kubernetes AWS EBS 等待卷状态超时

Kubernetes AWS EBS Timeout waiting for volume state

如果我创建这个 pod:

apiVersion: v1
kind: Pod
metadata:
name: dsm-manager
spec:
containers:
- name: dsm-manager
image: ******
imagePullPolicy: Always
command:
- /sbin/init
volumeMounts:
- mountPath: /srv/project/DSMManager/snapshots
name: dsm-snapshot-storage
volumes:
- name: dsm-snapshot-storage
awsElasticBlockStore:
volumeID: aws://us-west-2b/vol-43e44482
fsType: ext4
imagePullSecrets:
- name: dockerregistrykey

它总是有效,但如果我删除它并重新创建它,它就会卡在状态 'CreatingContainer'。查看事件产量:
- 无法为 pod "dsm-manager_default" 装载卷:等待卷状态超时
-同步 pod 时出错,跳过:等待卷状态超时

如果我删除 pod 并重新创建它,无论我做什么,都会发生同样的事情。但是,如果我将卷附加到某个实例,然后通过 aws cli 将其分离,然后创建它可以找到的 pod。我想知道该卷是否未正确分离。现在我只有这个奇怪的工作流程,将卷附加到随机实例,然后在更新容器映像时将其分离

这可能是由 Kubernetes EBS 管理代码中的错误引起的,应由 PR #14493 修复。总而言之,不验证设备块缓存导致 kubelet 认为磁盘在实际分离后仍然连接。

我注意到 运行 Kubernetes 和 EBS volumes stuck attaching 存在一个普遍问题。与 Kubernetes 相比,EBS 的问题似乎更多。当 "physical" EBS 卷卡在附加状态时,您无法重新安排 pods,直到您重新启动主机。我最近在一个容器会议上,当时 Nordstrom 的团队是 Kubernetes 的大用户,他们正在谈论这个问题。

您最好的选择可能是将 AWS 上的本地存储用于您的容器卷,因为从本地 Ec2 存储创建和安装卷不会遇到与 EBS 相同的 "stuck attaching" 问题。抱歉!