【问题标题】:AWS EKS EBS mounting issue / ExpiredTokenException / Instance not found at the same timeAWS EKS EBS 挂载问题 / ExpiredTokenException / 未同时找到实例
【发布时间】: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


【解决方案1】:

请查看 [kops 1.8 发行说明]

新的 AWS 实例类型:P3、C5、M5、H1。请注意,NVME 卷 默认的 jessie 图像不支持,所以大师们不会 在 M5 和 C5 实例类型上启动,除非选择了拉伸映像 (将图片名称中的stretch 更改为jessie)。另请注意 Kubernetes 将不支持在 NVME 上挂载持久卷 Kubernetes v1.9 之前的实例。

kops edit ig nodes

例如,将图像从 jessie 更改为拉伸:

来自:

image: kope.io/k8s-1.9-debian-jessie-amd64-hvm-ebs-2018-03-11

到:

image: kope.io/k8s-1.9-debian-stretch-amd64-hvm-ebs-2018-03-11

注意:请确保您已安装 kubernetes 1.9.x 或更高版本。

【讨论】:

  • 感谢您的回答,不过,有几件事要提一下。 1、我们没有使用kops,只有eksctl和kubectl。 2. 在这发生之前,集群至少在 2 周内都没有出现任何问题。 3. 有人可能会说#2 是一个幸运的巧合,所以我们尝试对 t2.xlarge 节点做同样的事情,但仍然会发生同样的错误。
猜你喜欢
  • 2021-11-06
  • 2018-10-21
  • 2021-03-06
  • 2022-07-21
  • 2012-03-10
  • 2017-05-12
  • 2020-08-24
  • 1970-01-01
  • 2015-05-01
相关资源
最近更新 更多