協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新 Amazon EKS 附加元件
當新版本發布或您將叢集更新到新的 Kubernetes 次要版本之後,Amazon EKS 不會自動更新附加元件。若要更新現有叢集的附加元件,您必須啟動更新。在您啟動更新後,Amazon EKS 會為您更新附加元件。在更新附加元件之前,請檢閱附加元件目前的文件。如需可用附加元件的清單,請參閱 AWS 附加元件。如果附加元件需要 IAM 角色,則請參閱 AWS中可用的 Amazon EKS 附加元件中的特定附加元件相關詳細資訊,了解有關建立角色的詳細資訊。
先決條件
請完成以下操作再建立附加元件:
-
檢查附加元件是否需要 IAM 角色。如需詳細資訊,請參閱Amazon EKS 附加元件。
-
確認 Amazon EKS 附加元件版本與叢集相容。如需詳細資訊,請參閱確認 Amazon EKS 附加元件版本與叢集的相容性。
程序
您可以使用 eksctl、 AWS 管理主控台或 CLI 更新 Amazon EKS AWS 附加元件。
更新附加元件 (eksctl)
-
判斷叢集上安裝的目前附加元件和附加元件版本。使用您叢集的名稱取代
my-cluster。eksctl get addon --cluster my-cluster範例輸出如下。
NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 kube-proxy v1.23.7-eksbuild.1 ACTIVE 0 v1.23.8-eksbuild.2 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 v1.12.0-eksbuild.1,v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1您的輸出可能看起來有所不同,具體取決於您的叢集上有哪些附加元件和版本。您可以看到,在前面的範例輸出中,叢集上的兩個現有附加元件在
UPDATE AVAILABLE欄位中具有較新的版本。 -
更新附加元件。
-
將隨後的命令複製到您的裝置。視需要對命令進行下列修改:
-
使用您叢集的名稱取代
my-cluster。 -
將
region-code取代為您的叢集所在的 AWS 區域。 -
使用您想要更新的上一步輸出中傳回的附加元件名稱取代
vpc-cni。 -
如果您想要更新為比最新可用版本更早的版本,請使用您要使用的上一步輸出中傳回的版本編號取代
latest。某些附加元件有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件。* 若附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請使用您的帳戶 ID 取代111122223333,並使用您已建立的現有 IAM 角色的名稱取代role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件。若要指定服務帳戶角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 身分提供者。如果附加元件未使用 Kubernetes 服務帳戶和 IAM 角色,請刪除
serviceAccountRoleARN: arn:aws: iam::列。111122223333:role/role-name -
preserve選項會保留附加元件的現有值。如果您已為附加元件設定設定了自訂值,但未使用此選項,Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。如果您將此值變更為overwrite,則所有設定都會變更為 Amazon EKS 預設值。如果您已設定任何設定的自訂值,則可能會使用 Amazon EKS 預設值覆寫這些值。如果您將此值變更為none,Amazon EKS 不會變更任何設定的值,但更新可能會失敗。若更新失敗,您會收到錯誤訊息,以協助您解決衝突。cat >update-addon.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code addons: - name: vpc-cni version: latest serviceAccountRoleARN: arn:aws: iam::111122223333:role/role-name resolveConflicts: preserve EOF
-
-
執行修改後的命令來建立
update-addon.yaml檔案。 -
將組態檔案套用至叢集。
eksctl update addon -f update-addon.yaml
如需有關更新附加元件的詳細資訊,請參閱
eksctl文件中的 更新附加元件。 -
更新附加元件AWS (主控台)
-
開啟 Amazon EKS 主控台
。 -
在左側導覽窗格中選擇叢集。
-
選擇您想要更新附加元件的叢集名稱。
-
選擇附加元件索引標籤。
-
選擇您想要更新的附加元件。
-
選擇編輯。
-
在設定
附加元件名稱頁面上,執行以下操作:-
選擇您要使用的版本。附加元件可能有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件。
-
您可使用兩個用於設定附加元件角色的選項:EKS Pod 身分識別 IAM 角色及服務帳戶 (IRSA) 的 IAM 角色。根據您喜好的選項,遵循下列適當步驟。如果您選取的所有附加元件在狀態下都有需要訂閱,請選擇下一步。針對狀態下沒有需要訂閱的附加元件,請執行以下操作:
-
若是服務帳戶的 Pod 身分識別 IAM 角色,您可使用現有的 EKS Pod 身分識別 IAM 角色,或是使用建立建議的角色按鈕來建立一個。此欄位僅提供包含適當信任政策的選項。若沒有可選取的角色,則表示您沒有包含相符信任政策的現有角色。如需針對所選附加元件的服務帳戶設定 EKS Pod 身分識別 IAM 角色,則選擇建立建議的角色。角色建立精靈會在單獨的視窗中開啟。精靈會自動填入如下所示角色資訊。針對您想要建立 EKS Pod 身分識別 IAM 角色的每個附加元件,完成如下所示 IAM 精靈中的步驟。
-
在選取信任實體步驟中,EKS AWS 的服務選項和 EKS - Pod Identity 的使用案例會預先選取,且會自動填入附加元件的適當信任政策。例如,將會如 EKS Pod 身分識別的優勢 中詳述,透過包含 pods.eks.amazonaws.com IAM Principal 的適當信任政策來建立角色。選擇下一步。
-
在新增許可步驟中,將會針對附加元件預先選取適用於該角色政策的適當受管政策。舉例來說,針對 Amazon VPC CNI 附加元件,將會透過如 Kubernetes 專用 Amazon VPC CNI 外掛程式 中詳述的受管政策
AmazonEKS_CNI_Policy來建立角色。選擇下一步。 -
在命名、檢閱及建立步驟中,角色名稱會自動填入附加元件的預設角色名稱。舉例來說,針對 Amazon VPC CNI 附加元件,將會使用名稱 AmazonEKSPodIdentityAmazonVPCCNIRole 來建立角色。在描述中,預設描述會自動填入附加元件的適當描述。例如,對於 Amazon VPC CNI 附加元件,將使用描述建立角色 允許在 Amazon EKS 叢集中執行的 Pod 存取 AWS 資源。在信任政策中,檢視針對附加元件填入的信任政策。選擇建立角色。
注意
保留預設角色名稱,能夠讓 EKS 在新叢集中或新增附加元件至現有叢集時,預先選取附加元件的角色。您仍可覆寫此名稱,並且可在所有叢集的附加元件使用該角色,但需要從下拉式選單中手動選取該角色。
-
-
若要了解狀態項下沒有需要訂閱選項的附加元件,以及您想要使用 IRSA 設定角色的位置,請參閱您要建立的附加元件相關文件,以便建立 IAM 政策並與角色連接。若要獲取附加元件清單,請參閱 AWS 附加元件。若要選取 IAM 角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 身分提供者。
-
-
展開選用組態設定。
-
在組態值中,輸入任意附加元件特定組態資訊。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加程式清單,請參閱 AWS 附加元件…針對衝突解決方法,請選取其中一個選項。如果您已設定附加元件設定的自訂值,我們建議您使用 Preserve (保留) 選項。如果您不選擇此選項,Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。如果您將此值變更為「覆寫」,則所有設定都會變更為 Amazon EKS 預設值。如果您已設定任何設定的自訂值,則可能會使用 Amazon EKS 預設值覆寫這些值。如果您將此值變更為「無」,Amazon EKS 不會變更任何設定的值,但更新可能會失敗。若更新失敗,您會收到錯誤訊息,以協助您解決衝突。
-
-
選擇儲存變更。
更新附加元件 (AWS CLI)
-
您需要在裝置或 AWS CloudShell 上安裝和設定版本
2.12.3或更新版本或版本1.27.160或更新版本的 AWS 命令列界面 (AWS CLI)。若要檢查您目前的版本,請使用aws --version | cut -d / -f2 | cut -d ' ' -f1。適用於 macOS 的yum、apt-get或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和快速組態。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它,請參閱《CloudShell AWS 使用者指南》中的將 CLI 安裝到您的主目錄。 AWS CloudShell -
請參閱已安裝附加元件的清單。使用您叢集的名稱取代
my-cluster。aws eks list-addons --cluster-name my-cluster範例輸出如下。
{ "addons": [ "coredns", "kube-proxy", "vpc-cni" ] } -
檢視您想要更新之附加元件的目前版本。請使用叢集名稱取代
my-cluster並使用您想要更新之附加元件的名稱取代vpc-cni。aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text範例輸出如下。
v1.10.4-eksbuild.1 -
判斷哪些版本的附加元件可用於您的叢集版本。請使用叢集版本取代
1.33並使用您想要更新之附加元件的名稱取代vpc-cni。aws eks describe-addon-versions --kubernetes-version 1.33 --addon-name vpc-cni \ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table範例輸出如下。
------------------------------------------ | DescribeAddonVersions | +-----------------+----------------------+ | Defaultversion | Version | +-----------------+----------------------+ | False | v1.12.0-eksbuild.1 | | True | v1.11.4-eksbuild.1 | | False | v1.10.4-eksbuild.1 | | False | v1.9.3-eksbuild.1 | +-----------------+----------------------+Defaultversion欄位中具有True的版本在預設情況下是用來建立附加元件的版本。 -
更新您的附加元件。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令。若要了解此命令的相關詳細資訊,請參閱《Amazon EKS 命令列參考》中的 update-addon。
-
使用您叢集的名稱取代
my-cluster。 -
使用您想要更新之附加元件的名稱取代
vpc-cni,該名稱在上一步輸出中傳回。 -
使用您想要更新之上一步輸出中傳回的版本取代
version-number。某些附加元件有建議的版本。如需詳細資訊,請參閱您所更新之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件。* 若附加元件使用 Kubernetes 服務帳戶和 IAM 角色,請使用您的帳戶 ID 取代111122223333,並使用您已建立的現有 IAM 角色的名稱取代role-name。如需建立角色的說明,請參閱您所建立之附加元件的文件。若要獲取附加元件清單,請參閱 AWS 附加元件。若要指定服務帳戶角色,您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者,或是要建立一個提供者,請參閱 為您的叢集建立 IAM OIDC 身分提供者。如果附加元件未使用 Kubernetes 服務帳戶和 IAM 角色,請刪除
serviceAccountRoleARN: arn:aws: iam::列。111122223333:role/role-name -
--resolve-conflicts PRESERVE選項會保留附加元件的現有值。如果您已為附加元件設定設定了自訂值,但未使用此選項,Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項,建議您在更新生產叢集上的附加元件之前,測試非生產叢集上的任何欄位和值變更。如果您將此值變更為OVERWRITE,則所有設定都會變更為 Amazon EKS 預設值。如果您已設定任何設定的自訂值,則可能會使用 Amazon EKS 預設值覆寫這些值。如果您將此值變更為NONE,Amazon EKS 不會變更任何設定的值,但更新可能會失敗。若更新失敗,您會收到錯誤訊息,以協助您解決衝突。 -
如果您要移除所有自訂組態,請使用
--configuration-values '{}'選項執行更新。這會將所有自訂組態設定回預設值。如果您不想變更自訂組態,請不要提供--configuration-values標記。如果您要調整自訂組態,請使用新參數取代{}。aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws: iam::111122223333:role/role-name --configuration-values '{}' --resolve-conflicts PRESERVE
-
-
查看更新狀態。請使用叢集名稱取代
my-cluster並使用您所更新之附加元件的名稱取代vpc-cni。aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni範例輸出如下。
{ "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "UPDATING", } }當狀態為
ACTIVE時,即表示更新已完成。