更新 Kubernetes kube-proxy 自我管理的附加元件 - Amazon EKS

協助改進此頁面

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

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

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

更新 Kubernetes kube-proxy 自我管理的附加元件

重要

建議將附加元件的 Amazon EKS 類型新增到叢集,而不是使用附加元件的自我管理類型。如果您不熟悉類型之間的差異,則請參閱 Amazon EKS 附加元件。如需將 Amazon EKS 附加元件新增至叢集的詳細資訊,請參閱 建立 Amazon EKS 附加元件。如果您無法使用 Amazon EKS 附加元件,我們建議您提交有關為何無法存取容器藍圖 GitHub 儲存庫的問題。

先決條件

考量事項

  • Amazon EKS 叢集上的 Kube-proxy與 Kubernetes 相同的相容性和差異政策。了解如何驗證 Amazon EKS 附加元件版本與叢集的相容性

    1. 確認您的叢集上已安裝附加元件的自我管理類型。使用您叢集的名稱取代 my-cluster

      aws eks describe-addon --cluster-name my-cluster --addon-name kube-proxy --query addon.addonVersion --output text

      如果傳回錯誤訊息,則表明您的叢集上安裝了附加元件的自我管理類型。本主題中的其餘步驟用於更新附加元件的自我管理類型。如果傳回版本編號,則表明已在叢集上安裝附加元件的 Amazon EKS 類型。若要將其更新,請使用更新 Amazon EKS 附加元件中的程序,而不是使用本主題中的程序。如果您不熟悉附加元件類型之間的差異,請參閱 Amazon EKS 附加元件

    2. 查看叢集上目前安裝了哪些容器映像版本。

      kubectl describe daemonset kube-proxy -n kube-system | grep Image

      範例輸出如下。

      Image: 602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.29.1-eksbuild.2

      在範例輸出中,安裝在叢集上的版本為 v1.29.1-eksbuild.2

    3. 使用上一個步驟中輸出的值取代 602401143452region-code,從而更新 kube-proxy 附加元件。使用每個 Amazon EKS 叢集版本的最新可用自我管理 kube-proxy 容器映像版本表列出的 kube-proxy 版本取代 v1.30.6-eksbuild.3

      重要

      每個映像類型的資訊清單皆不相同,並且與預設最小映像類型之間不相容。您必須使用與上一個映像相同的映像類型,以便進入點和引數相符。

      kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.30.6-eksbuild.3

      範例輸出如下。

      daemonset.apps/kube-proxy image updated
    4. 確認您的叢集上現在已安裝新版本。

      kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3

      範例輸出如下。

      v1.30.0-eksbuild.3
    5. 如果您在同一個叢集中使用 x86Arm 節點,而且您的叢集是在 2020 年 8 月 17 日之前部署的。然後,編輯您的 kube-proxy 清單檔案,以包含多個硬體架構的節點選取器,並使用以下命令。這是一次性操作。將選取器新增至資訊清單後,不需要在每次更新附加元件時進行新增。如果您的叢集是在 2020 年 8 月 17 日或之後部署的,則 kube-proxy 已經具備多架構能力。

      kubectl edit -n kube-system daemonset/kube-proxy

      將下列節點選取器新增至編輯器中的檔案,然後儲存檔案。如需在編輯器中包含此文字的範例,請參閱 GitHub 上的 CNI 清單檔案檔案。這樣一來,可讓 Kubernetes 根據節點的硬體架構提取正確的硬體映像。

      - key: "kubernetes.io/arch" operator: In values: - amd64 - arm64
    6. 如果您的叢集最初是使用 Kubernetes 版本 1.14 或更新版本建立的,則可以略過此步驟,因為 kube-proxy 已包含此 Affinity Rule。如果您最初使用 Kubernetes 版本 1.13 或更舊版本建立 Amazon EKS 叢集,並打算使用叢集中的 Fargate 節點,則請編輯 kube-proxy 資訊清單以包含 NodeAffinity 規則,進而防止 kube-proxy Pod 在 Fargate 節點上排程。這是一次性編輯。將 Affinity Rule 新增至資訊清單後,不需要在每次更新附加元件時進行新增。編輯您的 kube-proxy DaemonSet。

      kubectl edit -n kube-system daemonset/kube-proxy

      新增下列 Affinity Rule 到編輯器的檔案中的 DaemonSet spec 部分,然後儲存檔案。如需在編輯器中包含此文字的範例,請參閱 GitHub 上的 CNI 清單檔案檔案。

      - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate