選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

設定 Amazon VPC CNI 外掛程式以使用 IRSA

焦點模式
設定 Amazon VPC CNI 外掛程式以使用 IRSA - Amazon EKS

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格的在 GitHub 上編輯此頁面連結。

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

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格的在 GitHub 上編輯此頁面連結。

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

適用於 Kubernetes 的 Amazon VPC CNI 外掛程式是 Amazon EKS 叢集中 Pod 聯網的聯網外掛程式。外掛程式負責將 VPC IP 地址配置給 Kubernetes 節點,並為每個節點上的 Pod 設定必要的聯網。外掛程式:

  • 需要 AWS Identity and Access Management (IAM) 許可。如果您的叢集使用 IPv4 系列,則會在 AmazonEKS_CNI_Policy AWS 受管政策中指定許可。如果您的叢集使用 IPv6 系列,則必須將許可新增至您建立的 IAM 政策;如需說明,請參閱 為使用 IPv6 系列的叢集建立 IAM 政策。您可附加政策至 Amazon EKS 節點 IAM 角色,或附加至單獨 IAM 角色。如需將政策連接至 Amazon EKS 節點 IAM 角色的說明,請參閱 Amazon EKS 節點 IAM 角色。建議如本主題所述,將其指派給不同的角色。

  • 建立 並設定為在部署aws-node時使用名為 的 Kubernetes 服務帳戶。服務帳戶綁定到一個名為 aws-node 的 Kubernetes clusterrole,它被指派了所需的 Kubernetes 許可。

注意

適用於 Kubernetes 的 Amazon VPC CNI 外掛程式的 Pod 可以存取指派給 Amazon EKS 節點 IAM 角色的許可,除非您封鎖對 IMDS 的存取。如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭

步驟 1:為 Kubernetes IAM 角色建立 Amazon VPC CNI 外掛程式

  1. 確定您叢集的 IP 系列。

    aws eks describe-cluster --name my-cluster | grep ipFamily

    範例輸出如下。

    "ipFamily": "ipv4"

    輸出可能會傳回 ipv6

  2. 建立 IAM 角色。您可以使用 eksctl或 AWS kubectl和 CLI 來建立 IAM 角色。

    eksctl
    • 建立 IAM 角色,並使用與您叢集 IP 系列相符的命令將 IAM 政策連接至此角色。命令會建立和部署可建立 IAM 角色的 AWS CloudFormation 堆疊、連接您指定的政策,並使用所建立 aws-node IAM 角色的 ARN 來註釋現有的 Kubernetes 服務帳戶。

      • IPv4

        用您的值取代my-cluster

        eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --override-existing-serviceaccounts \ --approve
      • IPv6

        用您的值取代my-cluster。將 111122223333 取代為您的帳戶 ID,以及將 AmazonEKS_CNI_IPv6_Policy 取代為您的 IPv6 策略名稱。如果您沒有 IPv6政策,請參閱 為使用 IPv6 系列的叢集建立 IAM 政策 來建立政策。若要將 IPv6 與您的叢集一起使用,其必須滿足幾個要求。如需詳細資訊,請參閱了解叢集、Pod 和 服務的 IPv6 地址

        eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKSVPCCNIRole \ --attach-policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --override-existing-serviceaccounts \ --approve
    kubectl 和 AWS CLI
    1. 檢視叢集的 OIDC 提供者 URL。

      aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

      範例輸出如下。

      https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE

      如果未傳回任何輸出,則您必須為叢集建立 IAM OIDC 提供商

    2. 將下列內容複製到名為 vpc-cni-trust-policy.json 的檔案。將 111122223333 取代為您的帳戶 ID,並將 EXAMPLED539D4633E53DE1B71EXAMPLE 取代為上一個步驟中傳回的輸出。將 region-code 取代為您叢集所在的 AWS 區域。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:aws-node" } } } ] }
    3. 建立角色。您可以將 AmazonEKSVPCCNIRole 取代為您選擇的任何名稱。

      aws iam create-role \ --role-name AmazonEKSVPCCNIRole \ --assume-role-policy-document file://"vpc-cni-trust-policy.json"
    4. 將所需的 IAM 政策連接至角色。執行與叢集的 IP 系列相符的命令。

      • IPv4

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

        111122223333 取代為您的帳戶 ID,以及將 AmazonEKS_CNI_IPv6_Policy 取代為您的 IPv6 策略名稱。如果您沒有 IPv6政策,請參閱 為使用 IPv6 系列的叢集建立 IAM 政策 來建立政策。若要將 IPv6 與您的叢集一起使用,其必須滿足幾個要求。如需詳細資訊,請參閱了解叢集、Pod 和 服務的 IPv6 地址

        aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSVPCCNIRole
    5. 執行下列命令以使用您之前建立之 IAM 角色的 ARN 來標註 aws-node 服務帳戶。以您自己的值取代範例值

      kubectl annotate serviceaccount \ -n kube-system aws-node \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
  3. (選用) 設定 Kubernetes 服務帳戶所使用的 AWS Security Token Service 端點類型。如需詳細資訊,請參閱設定服務帳戶 AWS 的安全字符服務端點

步驟 2:重新部署 Kubernetes Pod 的 Amazon VPC CNI 外掛程式

  1. 刪除並重新建立與服務帳戶相關聯的任何現有 Pod,以套用登入資料環境變數。註釋不會套用到目前在沒有註釋的情況下執行的 Pod。下列命令會刪除現有的 aws-node DaemonSet Pod,並使用服務帳戶註釋進行部署。

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  2. 確認 Pod 全部重新啟動。

    kubectl get pods -n kube-system -l k8s-app=aws-node
  3. 描述其中一個 Pod,並確認 AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN環境變數是否存在。將 cpjw7 取代為上一個步驟輸出中傳回的其中一個 Pod 名稱。

    kubectl describe pod -n kube-system aws-node-cpjw7 | grep 'AWS_ROLE_ARN:\|AWS_WEB_IDENTITY_TOKEN_FILE:'

    範例輸出如下。

    AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token

    會傳回兩組重複的結果,因為 Pod 包含兩個容器。兩個容器具有相同的值。

    如果您的 Pod 使用 AWS 區域端點,則上一個輸出也會傳回以下行。

    AWS_STS_REGIONAL_ENDPOINTS=regional

步驟 3:從節點 IAM 角色移除 CNI 政策

如果您的 Amazon EKS 節點 IAM 角色目前具有 IAM AmazonEKS_CNI_Policy (IPv4) 政策或 IPv6 政策,而且您已建立個別的 IAM 角色,改為將政策連接到該角色,並將其指派給 Kubernetes aws-node 服務帳戶,則建議您使用符合叢集 IP 系列的 AWS CLI 命令,從節點角色中移除政策。將 AmazonEKSNodeRole 取代為您的節點角色名稱。

  • IPv4

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

    111122223333 取代為您的帳戶 ID,以及將 AmazonEKS_CNI_IPv6_Policy 取代為您的 IPv6 策略名稱。

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

為使用 IPv6 系列的叢集建立 IAM 政策

如果您建立的叢集使用 IPv6 系列,且叢集已設定適用於 Kubernetes 附加元件的 Amazon VPC CNI 外掛程式版本 1.10.1或更新版本,則您需要建立可指派給 IAM 角色的 IAM 政策。如果您有現有的叢集,而您在建立時並未使用 IPv6 系列進行設定,則若要使用 IPv6,您必須建立新的叢集。如需搭配使用 IPv6 與叢集的詳細資訊,請參閱 了解叢集、Pod 和 服務的 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
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。