跳至內容

如何讓我的工作節點加入 Amazon EKS 叢集?

3 分的閱讀內容
0

我的工作節點無法加入 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集。

解決方法

若要對無法加入 Amazon EKS 叢集的工作節點的問題進行疑難排解,請完成下列步驟:

使用 Systems Manager 自動化識別問題

執行 AWSSupport-TroubleshootEKSWorkerNode 自動化執行手冊,以識別導致工作節點無法加入叢集的問題。

先決條件:

  • 工作節點必須已將 AmazonSSMManagedInstanceCore 政策附加至其 AWS Identity and Access Management (IAM) 角色
  • 工作節點必須正在執行,且可透過 AWS Systems Manager 存取

如需執行此自動化的詳細資訊,請參閱 AWSSupport-TroubleshootEKSWorkerNode

檢查 VPC 的 DNS 組態

請完成下列步驟:

  1. 開啟 Amazon Virtual Private Cloud (Amazon VPC) 主控台
  2. 在導覽窗格,選擇 Your VPCs (您的 VPC)。
  3. 選取您的 VPC。
  4. 選擇 Actions (動作),然後選擇 Edit VPC settings (編輯 VPC 設定)。
  5. 檢查下列設定:
    DNS resolution (DNS 解析) 中,確認已開啟。
    DNS hostnames (DNS 主機名稱) 中,確認已開啟。
  6. 在導覽窗格中,選擇 DHCP options sets (DHCP 選項集)。
  7. 選取您的 DHCP 選項集。
  8. 檢查下列值:
    確認 domain-name 已設為 region.compute.internal,例如 us-west-2.compute.internal。
    確認 domain-name-servers 已設為 AmazonProvidedDNS

如需 DHCP 選項集的詳細資訊,請參閱 Amazon VPC 中的 DHCP 選項集

檢查工作節點的 IAM 權限

請完成下列步驟:

  1. 開啟 IAM 主控台
  2. 在導覽窗格中,選擇 Roles (角色)。
  3. 搜尋您的工作節點 IAM 角色。
  4. 選取該角色。
  5. 選擇 Permissions (許可) 索引標籤。
  6. 確認是否已附加以下受管政策:
    AmazonEKSWorkerNodePolicy
    AmazonEC2ContainerRegistryPullOnly

注意: 如果您未針對 VPC CNI 使用 IRSA 或 EKS Pod 身分識別,則您也必須附加 AmazonEKS_CNI_Policy 受管政策。不過,最佳實務是將此政策附加至專門供 Amazon VPC CNI 附加元件使用的個別角色。

如需建立節點 IAM 角色的詳細資訊,請參閱 Amazon EKS 節點 IAM 角色

為工作節點設定驗證

選擇下列其中一種方法來設定驗證:

使用 Access Entries

建議使用 Access Entries 方法授予工作節點存取叢集的權限。

  1. 開啟 Amazon EKS 主控台
  2. 在導覽窗格中,選擇 Clusters (叢集)。
  3. 選取您的叢集。
  4. 選擇 Access (存取) 索引標籤。
  5. Access entries (存取項目) 區段中,確認您的工作節點 IAM 角色 ARN 有對應的項目存在。
  6. 如果沒有項目,請選擇 Create access entry (建立存取項目)。
  7. IAM principal ARN (IAM 主體 ARN) 中,輸入您的工作節點 IAM 角色 ARN,而非執行個體設定檔 ARN。
  8. Type (類型) 中,根據您的節點類型選擇 EC2 LinuxEC2 Windows
  9. 選擇 Next (下一步),然後選擇 Create (建立)。

如需更多 Access Entries 的資訊,請參閱 Grant IAM users access to Kubernetes with EKS access entries (使用 EKS 存取項目將 IAM 使用者存取權授予 Kubernetes)。

使用 aws-auth ConfigMap

如果您的叢集不支援 Access Entries,則請使用 aws-auth ConfigMap 方法。

如需設定 aws-auth ConfigMap 的詳細資訊,請參閱 Grant IAM users access to Kubernetes with a ConfigMap (使用 ConfigMap 授予 IAM 使用者 Kubernetes 存取權)。

檢查使用者資料組態

對於自行管理的節點,請確認使用者資料包含正確的叢集名稱和組態。

使用者資料必須包含有您叢集名稱的 bootstrap 指令碼:

#!/bin/bash
/etc/eks/bootstrap.sh my-cluster

注意: 請將 my-cluster 替換為您實際的叢集名稱。

如需更多啟動指令碼組態的資訊,請參閱 Node bootstrapping (節點啟動程序)。

檢查網路連線能力

請完成下列步驟:

  1. 確認工作節點可以連線到叢集 API 伺服器端點。
  2. 對於位於公共子網路中的節點,確認已指派公共 IP 位址。
  3. 對於位於私有子網路中的節點,請確認子網路具有通往 NAT 閘道的路由。
  4. 確認安全群組允許下列流量:
    叢集 API 通訊使用連接埠 443
    kubelet 通訊使用連接埠 10250
    DNS 解析使用連接埠 53、TCP 和 UDP

如需安全群組需求的更多資訊,請參閱 View Amazon EKS security group requirements for clusters (檢視叢集的 Amazon EKS 安全群組需求)。

檢查私有叢集的 VPC 端點

如果您的叢集使用私有端點,請確認是否存在下列 VPC 端點:

  • com.amazonaws.region.ec2
  • com.amazonaws.region.ecr.api
  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.s3
  • com.amazonaws.region.sts

如需私有叢集需求的更多資訊,請參閱 Deploy private clusters with limited internet access (部署具有限網際網路存取的私有叢集)。

檢查叢集角色組態

請完成下列步驟:

  1. 開啟 IAM 主控台
  2. 在導覽窗格中,選擇 Roles (角色)。
  3. 搜尋您的叢集 IAM 角色。
  4. 選取該角色。
  5. 選擇 Permissions (許可) 索引標籤。
  6. 確認已附加 AmazonEKSClusterPolicy 受管政策。
  7. 選擇 Trust relationships (信任關係) 索引標籤,並確認信任政策包含下列政策:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "eks.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    **注意:**如果信任政策與上述政策不符,請將信任政策複製到 Trusted entities (信任實體) 視窗中。

檢閱 kubelet 日誌

若要檢閱工作節點上的 kubelet 日誌:

  1. 使用 SSH 或 Session Manager 連線到您的工作節點。

  2. 執行下列命令:

    sudo journalctl -u kubelet -f
  3. 尋找指出節點為何無法加入叢集的錯誤訊息。

確認已啟用 AWS STS 端點

確認您的帳戶已啟用您 AWS 區域的 AWS Security Token Service (AWS STS) 端點。

如需啟用 STS 端點的更多資訊,請參閱 Activating and deactivating AWS STS in an AWS Region (在 AWS 區域中啟用和停用 AWS STS)。

檢查 VPC 和子網路標籤

請完成下列步驟:

  1. 開啟 Amazon VPC 主控台
  2. 在導覽窗格中,選擇 Subnets (子網路)。
  3. 選取部署工作節點的子網路。
  4. 選擇 Tags (標籤) 索引標籤。
  5. 確認是否存在下列標籤:
    Key (金鑰) 為 kubernetes.io/cluster/my-cluster
    Value (值) 為 shared 或 owned

注意: 請將 my-cluster 替換為您實際的叢集名稱。

相關資訊

Troubleshoot problems with Amazon EKS clusters and nodes (對 Amazon EKS 叢集與節點的問題進行疑難排解)

VPC and Subnet Considerations (VPC 和子網路考量事項)