更新 CoreDNS Amazon EKS 自我管理附加元件 - Amazon EKS

協助改善此頁面

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

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

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

更新 CoreDNS Amazon EKS 自我管理附加元件

重要

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

開始之前,請檢閱升級考量事項。如需詳細資訊,請參閱CoreDNS 升級的重要考量事項

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

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

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

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

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    範例輸出如下。

    v1.8.7-eksbuild.2
  3. 如果您目前的 CoreDNS 版本是 v1.5.0或更新版本,但早於 CoreDNS 版本表中列出的版本,請略過此步驟。如果您目前的版本早於 1.5.0,則需要修改 ConfigMap for CoreDNS 以使用轉送附加元件,而不是代理附加元件。

    1. ConfigMap 使用以下命令開啟 。

      kubectl edit configmap coredns -n kube-system
    2. 使用 forward 取代為下列行中的 proxy:儲存檔案,然後退出編輯器。

      proxy . /etc/resolv.conf
  4. 如果您原本在 Kubernetes 1.17或更早版本上部署叢集,則可能需要從 CoreDNS 資訊清單中移除已中斷的行。

    重要

    您必須先完成此步驟,才能更新至 CoreDNS 版本 1.7.0,但建議您完成此步驟,即使您更新至較早的版本。

    1. 檢查您的 CoreDNS 資訊清單是否有這一行。

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      如果未傳回輸出,您的資訊清單就沒有 行,您可以跳到下一個步驟來更新 CoreDNS。如果傳回輸出,那麼您需要移除該行。

    2. 使用下列命令編輯 ConfigMap,移除檔案中有文字 upstream 的行。不要變更檔案中的任何其他內容。移除行之後,儲存變更。

      kubectl edit configmap coredns -n kube-system -o yaml
  5. 擷取您目前的 CoreDNS 映像版本:

    kubectl describe deployment coredns -n kube-system | grep Image

    範例輸出如下。

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. 如果您要更新至 CoreDNS 1.8.3或更新版本,則需要將 endpointslices 許可新增至 system:coredns Kubernetes clusterrole

    kubectl edit clusterrole system:coredns -n kube-system

    在檔案的 rules 區段的現有許可行下,新增以下行。

    [...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...]
  7. 602401143452region-code 取代為上一個步驟中傳回之輸出的值,以更新 CoreDNS 附加元件。將 v1.11.3-eksbuild.1 取代為您的 Kubernetes 版本最新版本資料表中列出的 CoreDNS 版本。

    kubectl set image deployment.apps/coredns -n kube-system coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1

    範例輸出如下。

    deployment.apps/coredns image updated
  8. 再次檢查容器映像版本,以確認其已更新至您在上一步中指定的版本。

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    範例輸出如下。

    v1.11.3-eksbuild.1