帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群问题排查
本主题介绍在使用 EC2 实例存储配置的 AWS Outposts 上的本地集群使用期间可能会看到的常见错误,以及如何排查这些错误。
如果您在运行 aws eks update-kubeconfig 后看到以下错误:
Either parameter --cluster-name or --cluster-id must be specified.
或:
couldn't get current server API group list: getting credentials: exec: executable aws failed with exit code 1
请验证您的 kubeconfig (~/.kube/config) 是否在 exec 参数中指定了 --cluster-name,而不是 --cluster-id:
args: - --region - region-code - eks - get-token - --cluster-name - my-cluster - --output - json command: aws
如果您的节点在您运行 kubectl get nodes 时没有出现:
-
检查节点上的
kubelet日志。使用 SSM 或 SSH 访问节点,然后运行:systemctl status kubelet -l -
检查是否存在未获授权错误。未获授权错误可能指示节点角色权限缺失或存在
aws-authConfigMap 问题。验证节点的实例角色是否已在aws-authConfigMap 中正确映射。 -
检查 CSR 状态。验证节点的证书签名请求是否已获得批准:
kubectl get csr如果 CSR 处于
Pending状态,请批准它:kubectl certificate approve node-csr-EXAMPLE
如果您的集群进入 FAILED 状态:
-
容量不足:验证您的 Outpost 是否有足够的虚拟化容量来容纳指定实例类型的 6 个控制面板实例(3 个
etcd+ 3 个 API 服务器)。必须在您的 Outpost 上插入这些实例类型。 -
无法满足分布拓扑:如果您将
spreadLevel指定为host,请确认至少有 3 台主机配置了所选的实例类型。如果您指定的是rack,请确认至少 3 个机架具有所选实例类型的主机。 -
子网问题:验证您指定的子网是否位于 Outpost 所在的可用区中,并且每个子网至少有 3 个可用 IP 地址。请参阅为使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群创建 VPC 和子网。
如果您的集群在 Kubernetes 版本或平台版本更新期间仍处于 UPDATING 状态:
-
容量不足:更新期间,控制面板实例在重新实例化之前会被删除。如果释放的容量在预调配替换实例之前被其他工作负载消耗,则更新将会停止。验证您的 Outpost 是否有控制面板实例类型所需的可用容量。
如果您无法执行 Kubernetes API 操作并且您的 Outpost 已断开网络连接:
-
etcd可能已经失去法定数量。如果在网络连接断开期间多个etcd实例不可用,则会发生这种情况。 -
已经在运行的工作负载可以继续运行,但是 Kubernetes API 操作将不可用。
-
恢复连接后,Amazon EKS 将从最近的
etcd快照中恢复集群状态。
联系 AWS Support 中心