協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
更新 CoreDNS Amazon EKS 自我管理的附加元件
重要
建議將附加元件的 Amazon EKS 類型新增到叢集,而不是使用附加元件的自我管理類型。如果您不熟悉類型之間的差異,則請參閱 Amazon EKS 附加元件。如需將 Amazon EKS 附加元件新增至叢集的詳細資訊,請參閱 建立 Amazon EKS 附加元件。如果您無法使用 Amazon EKS 附加元件,我們建議您提交有關為何無法存取容器藍圖 GitHub 儲存庫
開始之前,請檢閱升級考量事項。如需詳細資訊,請參閱 重要的 CoreDNS 升級考量。
-
確認您的叢集上已安裝附加元件的自我管理類型。使用您叢集的名稱取代
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 附加元件。
-
查看叢集上目前安裝了哪些容器映像版本。
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3範例輸出如下。
v1.8.7-eksbuild.2 -
如果您目前的 CoreDNS 版本為
v1.5.0或更新版本,但早於 CoreDNS 版本資料表中列出的版本,則略過此步驟。如果您目前的版本比1.5.0還要舊,則需要修改 CoreDNS 的ConfigMap,以使用正向附加元件,而不是代理附加元件。-
使用下列命令開啟
ConfigMap。kubectl edit configmap coredns -n kube-system -
使用
forward取代為下列行中的proxy:儲存檔案,然後退出編輯器。proxy . /etc/resolv.conf
-
-
如果您原先在 Kubernetes
1.17或舊版本上部署叢集,那麼您可能需要從您的 CoreDNS 資訊清單中移除已終止的行。重要
您必須在升級至 CoreDNS 版本
1.7.0之前完成此步驟,即使您正在升級至較舊版本,也建議您先完成此步驟。-
檢查您的 CoreDNS 資訊清單是否有這一行。
kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream如果沒有傳回任何輸出,則資訊清單沒有該行,您可跳至下一個步驟來更新 CoreDNS。如果傳回輸出,那麼您需要移除該行。
-
使用下列命令編輯
ConfigMap,移除檔案中有文字upstream的行。不要變更檔案中的任何其他內容。移除行之後,儲存變更。kubectl edit configmap coredns -n kube-system -o yaml
-
-
擷取您當前的 CoreDNS 映像版本:
kubectl describe deployment coredns -n kube-system | grep Image範例輸出如下。
602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2 -
如果要更新到 CoreDNS
1.8.3或更新版本,則需要將endpointslices許可新增至system:corednsKubernetesclusterrole。kubectl edit clusterrole system:coredns -n kube-system在檔案的
rules區段的現有許可行下,新增以下行。[...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...] -
使用上一個步驟中返回的值取代
602401143452和region-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 -
再次檢查容器映像版本,以確認其已更新至您在上一步中指定的版本。
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3範例輸出如下。
v1.11.3-eksbuild.1