View a markdown version of this page

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

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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 时没有出现:

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

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

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

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

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

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

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

联系 AWS Support 中心