Amazon EKS節點IAM角色 - Amazon EKS

協助改善此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合每個人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon EKS節點IAM角色

Amazon kubelet EKS節點協助程式會代表您呼叫 AWS APIs 。節點會透過IAM執行個體設定檔和相關聯的政策接收這些API呼叫的許可。在您可以啟動節點並將其註冊到叢集之前,您必須為這些節點建立IAM角色,以便在啟動時使用。此要求適用於使用 Amazon AMI提供的 Amazon EKS最佳化啟動的節點,或您AMIs打算使用的任何其他節點。此外,此要求皆適用於受管節點群組和自我管理節點。

注意

您不能使用用來建立任何叢集的相同角色。

建立節點之前,您必須建立具有下列許可IAM的角色:

  • kubelet 描述 中 Amazon EC2 資源的許可VPC,例如 AmazonEKSWorkerNodePolicy 政策提供的許可。此政策也提供 Amazon Pod Identity Agent EKS 的許可。

  • kubelet 使用來自 Amazon Elastic Container Registry (Amazon ECR) 的容器映像的許可,例如 AmazonEC2ContainerRegistryPullOnly 政策提供的 。需要從 Amazon Elastic Container Registry (Amazon ECR) 使用容器映像的許可,因為用於聯網執行 Pod 的內建附加元件使用來自 Amazon 的容器映像ECR。

  • (選用) Amazon EKS Pod Identity Agent 使用 eks-auth:AssumeRoleForPodIdentity動作擷取 Pod 登入資料的許可。如果您不使用 AmazonEKSWorkerNodePolicy,除了使用 Pod Identity.` EKS 的許可之外,還必須提供此EC2許可。

  • (選用) 如果您不使用 IRSA或 EKS Pod Identity 來授予 Pod VPC CNI 許可,則必須在執行個體角色VPCCNI上提供 的許可。您可以使用 ` AmazonEKS_CNI_Policy` 受管政策 (如果您使用 IPv4` 系列建立叢集) IPv6 或您建立的政策 (如果您使用 IPv6 系列建立叢集)。不過,建議您將政策連接至專門用於 Amazon VPCCNI附加元件的個別角色,而不是將政策連接至此角色。如需為 Amazon VPC CNI 附加元件建立個別角色的詳細資訊,請參閱 設定 Amazon VPC CNI 外掛程式以使用 IRSA

注意

Amazon EC2節點群組必須具有與 Fargate 設定檔不同的IAM角色。如需詳細資訊,請參閱Amazon EKS Pod 執行 IAM 角色

檢查現有的節點角色

您可以使用下列程序來檢查並查看您的帳戶是否已有 Amazon EKS節點角色。

  1. 開啟位於 IAM 的 https://console.aws.amazon.com/iam/ 主控台。

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. 搜尋 eksNodeRoleAmazonEKSNodeRoleNodeInstanceRole 的角色清單。如果具有這些名稱之一的角色不存在,請參閱 建立 Amazon EKS節點IAM角色 以建立角色。如果包含 eksNodeRoleAmazonEKSNodeRoleNodeInstanceRole 的角色存在,請選取角色以檢視連接的政策。

  4. 選擇許可

  5. 確定 AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryPullOnly 受管政策已連接至角色,或自訂政策已連接且具有最低許可。

    注意

    如果 AmazonEKS_CNI_Policy 政策已連接至角色,建議您將其移除,並將其連接至IAM映射至 aws-node Kubernetes 服務帳戶。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA

  6. 選擇 Trust Relationships (信任關係),然後選擇 Edit trust policy (編輯信任政策)。

  7. 確認信任關係包含下列政策。如果信任關係符合下列政策,請選擇 Cancel (取消)。如果信任關係不相符,請將政策複製到編輯信任政策視窗中,然後選擇更新政策

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "ec2.amazonaws.com" ] } } ] }

建立 Amazon EKS節點IAM角色

您可以使用 AWS Management Console 或 建立節點IAM角色 AWS CLI。

AWS Management Console
  1. 開啟位於 IAM 的 https://console.aws.amazon.com/iam/ 主控台。

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. Roles (角色) 頁面上,選擇 Create role (建立角色)。

  4. Select trusted entity (選取信任的實體) 頁面上,執行以下作業:

    1. 信任的實體類型區段中,選擇 AWS 服務

    2. Use case (使用案例) 中,選擇 EC2

    3. 選擇 Next (下一步)

  5. 新增許可頁面上,連接自訂政策或執行下列動作:

    1. Filter policies (篩選政策) 方塊中,輸入 AmazonEKSWorkerNodePolicy

    2. 選取搜尋結果中 AmazonEKSWorkerNodePolicy 左側的核取方塊。

    3. 選擇 Clear filters (清除篩選條件)。

    4. Filter policies (篩選政策) 方塊中,輸入 AmazonEC2ContainerRegistryPullOnly

    5. 在搜尋結果中選取 AmazonEC2ContainerRegistryPullOnly 左側的核取方塊。

      AmazonEKS_CNI_Policy 受管政策或您建立IPv6的政策也必須連接到此角色或對應至 的不同角色 aws-node Kubernetes 服務帳戶。我們建議您將政策指派給與 相關聯的角色 Kubernetes 服務帳戶,而不是將其指派給此角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA

    6. 選擇 Next (下一步)

  6. Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:

    1. 針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如 AmazonEKSNodeRole)。

    2. 針對 Description (描述),請以描述性文字 (例如 Amazon EKS - Node role) 取代目前的文字。

    3. 藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需在 中使用標籤的詳細資訊IAM,請參閱IAM《 使用者指南》中的標記IAM資源

    4. 選擇建立角色

AWS CLI
  1. 執行下列命令以建立 node-role-trust-relationship.json 檔案。

    cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "ec2.amazonaws.com" ] } } ] } EOF
  2. 建立 IAM 角色。

    aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
  3. 將兩個必要的 IAM 受管政策連接至IAM角色。

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly \ --role-name AmazonEKSNodeRole
  4. 根據您建立叢集的 IP 系列,將下列其中一個IAM政策連接至IAM角色。政策必須連接到此角色或與 相關聯的角色 Kubernetes aws-node 用於 的服務帳戶 Amazon VPC CNI plugin for Kubernetes。 我們建議您將政策指派給與 相關聯的角色 Kubernetes 服務帳戶。將政策指派給與 相關聯的角色 Kubernetes 服務帳戶,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA

    • IPv4

      aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
    • IPv6

      1. 複製下列文字並將它儲存至名為 vpc-cni-ipv6-policy.json 的檔案。

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws: ec2:*:*:network-interface/*" ] } ] }
      2. 建立IAM政策。

        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
      3. 將IAM政策連接至IAM角色。使用您的帳戶 ID 取代 111122223333

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSNodeRole

📝 在 上編輯此頁面 GitHub