View a markdown version of this page

使用 EC2 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群问题排查 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

使用 EC2 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群问题排查

本主题介绍在使用 EC2 实例存储配置的 Amazon 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 时没有出现:

  1. 检查节点上的 kubelet 日志。使用 SSM 或 SSH 访问节点,然后运行:

    systemctl status kubelet -l
  2. 检查是否存在未获授权错误。未获授权错误可能指示节点角色权限缺失或存在 aws-auth ConfigMap 问题。验证节点的实例角色是否已在 aws-auth ConfigMap 中正确映射。

  3. 检查 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 实例存储配置的 Amazon Outposts 上的 Amazon EKS 本地集群创建 VPC 和子网

如果您的集群在 Kubernetes 版本或平台版本更新期间仍处于 UPDATING 状态:

  • 容量不足:更新期间,控制面板实例在重新实例化之前会被删除。如果释放的容量在预调配替换实例之前被其他工作负载消耗,则更新将会停止。验证您的 Outpost 是否有控制面板实例类型所需的可用容量。

如果您无法执行 Kubernetes API 操作并且您的 Outpost 已断开网络连接:

  • etcd 可能已经失去法定数量。如果在网络连接断开期间多个 etcd 实例不可用,则会发生这种情况。

  • 已经在运行的工作负载可以继续运行,但是 Kubernetes API 操作将不可用。

  • 恢复连接后,Amazon EKS 将从最近的 etcd 快照中恢复集群状态。

联系 Amazon Support 中心