【发布时间】:2021-06-29 14:06:49
【问题描述】:
带有 AWS CSI EBS 驱动程序的 AWS EKS 集群 1.18。一些 pod 静态配置了 EBS 卷,一切正常。
接下来。在某些时候,所有使用 EBS 卷的 pod 都停止响应,服务有无限的等待时间,并且代理 pod 由于超时而终止连接。
kube-controller-manager 的日志 (CloudWatch) 中充满了此类消息:
kubernetes.io/csi: attachment for vol-00c1763<removed-by-me> failed:
rpc error:
code = NotFound desc = Instance "i-0c356612<removed-by-me>" not found
和
event.go:278] Event(v1.ObjectReference{Kind:"Pod", Namespace:"default", Name:"podname-65df9bc5c4-2vtj8", UID:"ad4d30b7-<removed-by-me>", APIVersion:"v1", ResourceVersion:"4414194", FieldPath:""}):
type: 'Warning'
reason: 'FailedAttachVolume' AttachVolume.Attach failed for volume "ebs-volumename" :
rpc error: code = NotFound desc = Instance "i-0c356<removed-by-me>" not found
实例在那里,我们检查了 20 次。我们试图杀死实例,所以 CloudFormation 为我们创建了一个新实例,错误仍然存在,只是实例 ID 不同。
接下来。我们开始删除 pod 并卸载卷 / 删除 sc/pvc/pv。 kubectl 卡在删除 pv 的末尾。 我们只能通过不为 pv 和 volumemount 修补终结器来让它们脱离这种状态。 日志包含以下内容:
csi_attacher.go:662] kubernetes.io/csi: detachment for VolumeAttachment for volume [vol-00c176<removed-by-me>] failed:
rpc error: code = Internal desc = Could not detach volume "vol-00c176<removed-by-me>" from node "i-0c3566<removed-by-me>":
error listing AWS instances:
"WebIdentityErr: failed to retrieve credentials\n
caused by: ExpiredTokenException: Token expired: current date/time 1617384213 must be before the expiration date/time1616724855\n\
tstatus code: 400, request id: c1cf537f-a14d<removed-by-me>"
我已经了解了 Kubernetes 的令牌,但在我们的例子中,我们的一切都由 EKS 管理。谷歌搜索 ExpiredTokenException 会将我们带到您应该如何解决您自己的应用程序问题的页面,我们再次使用 kubectl 管理 AWS 上的所有内容。
【问题讨论】:
-
是EKS ec2集群还是Fargate,如果是ec2,实例类型是什么?
-
它是ec2集群类型,最初发生的实例类型是c6gd.xlarge,但后来我们也在t2.xlarge实例类型上用一个全新的卷进行了测试,挂载和卸载结果相同
标签: amazon-web-services kubernetes amazon-ebs