更新 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 還要舊,則需要修改 CoreDNS 的 ConfigMap,以使用正向附加元件,而不是代理附加元件。

    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. 如果您要更新至 CoreDNS1.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 取代為最新版本資料表中CoreDNS列出的Kubernetes版本。

    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