我想知道我的 Amazon Elastic Kubernetes Service (Amazon EKS) 控制面板是否执行了维护操作。
简短描述
Amazon EKS 持续更新 API 服务器以实现高可用性,这样您的集群就不会变得不确定或不可恢复。但是,当 API 服务器实例 IP 地址更改时,API 服务器客户端可能会受到影响。对于 API 服务器客户端来说,管理重连是一种最佳做法。有关更多信息,请参阅 Update existing cluster to new Kubernetes version。
Amazon EKS 在指定的子网中生成新的跨 AWS 账户弹性网络接口,然后删除以前的弹性网络接口。此操作激活集群端点 IP 地址的更改。如果您的环境不符合要求,则跨账户弹性网络接口创建失败。弹性网络接口创建失败可能会导致以下问题:
- Worker 节点和控制面板之间的通信。
- 私有 Amazon EKS 集群端点的访问问题。
- kubectl exec 和 kubectl logs 命令需要很长时间。
- EKS 连接延迟。
要检查您的 Amazon EKS 控制面板上是否进行了维护,请从网络接口检查创建日期。或者,从 CloudTrail 中的 CreateNetworkInterface 事件历史记录中查看事件时间。
解决方法
要确定您的 Amazon EKS 控制面板是否已更新,请选择以下任一解决任务:
检查 EKS 集群上的跨账户弹性网络接口
要检查集群的网络接口,请运行以下命令。要检查特定集群的网络接口,请将 Amazon EKS* 替换为 Amazon EKS 示例集群名称。
aws ec2 describe-network-interfaces --filter Name=description,Values="Amazon EKS*"
aws ec2 describe-network-interfaces --filter Name=description,Values="Amazon EKS example-cluster-name"
-or-
要检查您的 Amazon EKS 是否已在控制台中更新,请完成以下步骤:
- 打开 Amazon EKS 控制台。
- 在搜索栏中输入您的 Amazon EKS 集群名称。
- 选择接口类型为弹性网络接口和描述 Amazon EKS 示例集群名称的网络接口。
- 检查网络接口的创建日期,以确认 EKS 已修补。
确认集群至少有两个弹性网络接口。当弹性网络接口的创建日期晚于集群创建日期或用户更新日期时,Amazon EKS 已更新集群。
查看活动历史记录
要验证集群跨账户弹性网络接口的变化,请查看 CreateNetworkInterface 的 AWS CloudTrail 事件历史记录。完成以下步骤:
- 打开 CloudTrail 控制台。
- 在导航窗格中,选择事件历史记录。
- 在查询属性中,选择事件名称。输入CreateNetworkInterface。
- 查看活动时间是否有以 Amazon EKS 作为用户名的条目。
**注意:**CloudTrail 提供过去 90 天的事件记录。
确认集群至少有两个弹性网络接口。如果弹性网络接口的创建日期晚于集群创建日期或用户更新日期,则集群已由 Amazon EKS 更新。
重试创建新的跨账户弹性网络接口
如果弹性网络接口少于两个,请检查 CloudTrail 中的 CreateNetworkInterface 事件是否失败。
CloudTrail 日志显示了新的跨账户弹性网络接口失败的原因。要解决此错误,请验证您集群的资源是否满足 VPC 要求。
以下是导致此错误的常见原因:
子网和安全组
检查已配置的子网和安全组是否仍然存在。如果子网和安全组不存在,则运行以下命令使用同一 VPC 中的新资源更新集群:
aws eks update-cluster-config --name <your-cluster> \
--resources-vpc-config subnetIds=<subnet id>,securityGroupIds=<security id>
子网中的 IP 地址不足
要解决此错误,请在集群子网中释放至少两个 IP 地址或将不同的子网关联到您的集群。
相关信息
如何排查 Amazon EKS 集群升级失败的问题?
De-mystifying cluster networking for Amazon EKS worker nodes