

 **帮助改进此页面** 

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

# 使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群问题排查
<a name="eks-outposts-instance-store-troubleshooting"></a>

本主题介绍在使用 EC2 实例存储配置的 AWS Outposts 上的本地集群使用期间可能会看到的常见错误，以及如何排查这些错误。

## `kubectl` 在配置 `kubeconfig` 后无法正常工作
<a name="eks-outposts-instance-store-troubleshooting-kubectl"></a>

如果您在运行 `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
```

## 节点无法加入集群
<a name="eks-outposts-instance-store-troubleshooting-nodes-not-joining"></a>

如果您的节点在您运行 `kubectl get nodes` 时没有出现：

1.  **检查节点上的 `kubelet` 日志。**使用 SSM 或 SSH 访问节点，然后运行：

   ```
   systemctl status kubelet -l
   ```

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

1.  **检查 CSR 状态。**验证节点的证书签名请求是否已获得批准：

   ```
   kubectl get csr
   ```

   如果 CSR 处于 `Pending` 状态，请批准它：

   ```
   kubectl certificate approve node-csr-EXAMPLE
   ```

## 集群卡在 `CREATING` 状态
<a name="eks-outposts-instance-store-troubleshooting-creating"></a>

如果您的集群进入 FAILED 状态：
+  **容量不足：**验证您的 Outpost 是否有足够的虚拟化容量来容纳指定实例类型的 6 个控制面板实例（3 个 `etcd` \+ 3 个 API 服务器）。必须在您的 Outpost 上插入这些实例类型。
+  **无法满足分布拓扑：**如果您将 `spreadLevel` 指定为 `host`，请确认至少有 3 台主机配置了所选的实例类型。如果您指定的是 `rack`，请确认至少 3 个机架具有所选实例类型的主机。
+  **子网问题：**验证您指定的子网是否位于 Outpost 所在的可用区中，并且每个子网至少有 3 个可用 IP 地址。请参阅[为使用 EC2 实例存储配置的 AWS Outposts 上的 Amazon EKS 本地集群创建 VPC 和子网](eks-outposts-instance-store-vpc-subnet-requirements.md)。

## 集群卡在 `UPDATING` 状态
<a name="eks-outposts-instance-store-troubleshooting-updating"></a>

如果您的集群在 Kubernetes 版本或平台版本更新期间仍处于 `UPDATING` 状态：
+  **容量不足：**更新期间，控制面板实例在重新实例化之前会被删除。如果释放的容量在预调配替换实例之前被其他工作负载消耗，则更新将会停止。验证您的 Outpost 是否有控制面板实例类型所需的可用容量。

## `etcd` 失去法定数量
<a name="eks-outposts-instance-store-troubleshooting-etcd-quorum"></a>

如果您无法执行 Kubernetes API 操作并且您的 Outpost 已断开网络连接：
+  `etcd` 可能已经失去法定数量。如果在网络连接断开期间多个 `etcd` 实例不可用，则会发生这种情况。
+ 已经在运行的工作负载可以继续运行，但是 Kubernetes API 操作将不可用。
+ 恢复连接后，Amazon EKS 将从最近的 `etcd` 快照中恢复集群状态。

联系 [AWS Support 中心](https://console.aws.amazon.com/support/home)。