使用庫伯尼特附kube-proxy加元件 - Amazon EKS

協助改善此頁面

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

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

使用庫伯尼特附kube-proxy加元件

重要

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

kube-proxy 附加元件會部署在 Amazon EKS 叢集中的每個 Amazon EC2 節點上。其會維護節點上的網路規則,並啟用與 Pods 的網路通訊。附加元件未部署至叢集中的 Fargate 節點。如需詳細資訊,請參閱 Kubernetes 文件中的 kube-proxy

下表列出適用於每個 Kubernetes 版本的 Amazon EKS 附加元件類型最新版本。

Kubernetes 版本 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.30.0-eksbuild.3 v1.29.3-eksbuild.5 v1.28.8-eksbuild.5 v1.27.12-eksbuild.5 v1.26.15-eksbuild.5 v1.25.16-eksbuild.8 v1.24.17-eksbuild.8 v1.23.17-eksbuild.9
重要

較早版本的文件不正確。 kube-proxy版本v1.28.5v1.27.9、和v1.26.12不可用。

如果您要自行管理此附加元件,資料表中的版本可能與可用的自我管理版本不同。

有兩種類型的 kube-proxy 容器映像可供每個 Amazon EKS 叢集版本使用:

  • 預設:此映像類型的基礎為 Kubernetes 上游社群維護的 Debian 型 Docker 映像檔。

  • 最低:此映像類型的基礎為 Amazon EKS Distro 維護的最低基礎映像,其中包含最少套件,且沒有 Shell。如需詳細資訊,請參閱 Amazon EKS Distro

每個 Amazon EKS 叢集版本的最新可用自我管理 kube-proxy 容器映像版本
Image type (映像類型) 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
kube-proxy (預設類型) 只有最小的類型可用 只有最小的類型可用 只有最小的類型可用 只有最小的類型可用 只有最小的類型可用 只有最小的類型可用 v1.24.10-eksbuild.2 v1.23.16-eksbuild.2
kube-proxy (最小型) v1.30.0-minimal-eksbuild.3 v1.29.3-minimal-eksbuild.5 v1.28.8-minimal-eksbuild.5 v1.27.12-minimal-eksbuild.5 v1.26.15-minimal-eksbuild.5 v1.25.16-minimal-eksbuild.8 v1.24.17-minimal-eksbuild.4 v1.23.17-minimal-eksbuild.5
重要
  • 預設影像類型不適用於 Kubernetes 版本 1.25 和更新版本。您必須使用最小的映像類型。

  • 更新 Amazon EKS 附加元件類型時,您必須指定有效的 Amazon EKS 附加元件版本,該版本可能不是此資料表中列出的版本。這是因為 Amazon EKS 附加元件版本不一定與更新此附加元件的自我管理類型時指定的容器映像版本相符。當您更新此附加元件的自我管理類型時,請指定此資料表中列出的有效容器映像版本。

必要條件

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

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

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

  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 附加元件。v1.30.0-eksbuild.3 取代為每個 Amazon EKS 叢集版本的最新可用自我管理 kube-proxy 容器映像版本表中列出的 kube-proxy 版本。您可以為預設值或者最小影像類型指定版本編號。

    kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.30.0-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 manifest (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 Pods 在 Fargate 節點上排程。這是一次性編輯。將 Affinity Rule 新增至清單檔案後,不需要在每次更新附加元件時進行新增。編輯您的 kube-proxy DaemonSet

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

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

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