協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
管理 Amazon EKS 叢集中的 CoreDNS for DNS
提示
使用 Amazon EKS 自動模式,您無需安裝或升級聯網附加元件。自動模式包括 Pod 聯網和負載平衡功能。
如需詳細資訊,請參閱 利用 EKS 自動模式自動運作叢集基礎設施。
CoreDNS 是一個靈活、可擴展的 DNS 伺服器,可作為 Kubernetes 集群 DNS。當您啟動具有至少一個節點的 Amazon EKS 叢集時,依預設會部署兩個 CoreDNS 映像複本,而不論叢集中部署的節點數量為何。CoreDNS Pod 為叢集中的所有 Pod 提供名稱解析。如果您的叢集包含 Fargate Profile,且該設定檔的命名空間與 CoreDNS deployment 的命名空間相符,則可將 CoreDNS Pod 部署至 Fargate 節點。如需 CoreDNS 的詳細資訊,請參閱 Kubernetes 文件中的使用 CoreDNS 進行服務探索
CoreDNS 版本
下表列出適用於每個 Kubernetes 版本的 Amazon EKS 附加元件類型的最新版本。
| Kubernetes 版本 | CoreDNS 版本 |
|---|---|
|
1.33 |
v1.12.4-eksbuild.1 |
|
1.32 |
v1.11.4-eksbuild.22 |
|
1.31 |
v1.11.4-eksbuild.22 |
|
1.30 |
v1.11.4-eksbuild.22 |
|
1.29 |
v1.11.4-eksbuild.22 |
|
1.28 |
v1.10.1-eksbuild.38 |
重要
如果您要自行管理此附加元件,資料表中的版本可能與可用的自我管理版本不同。如需更新此附加元件之自我管理類型的詳細資訊,請參閱 更新 CoreDNS Amazon EKS 自我管理的附加元件。
重要的 CoreDNS 升級考量
-
CoreDNS 更新會利用 PodDisruptionBudget,以協助在更新程序期間維持 DNS 服務可用性。
-
為了提高 CoreDNS 部署的穩定性與可用性,版本
v1.9.3-eksbuild.6及更新版本和v1.10.1-eksbuild.3會隨PodDisruptionBudget一起部署。如果您已部署現有PodDisruptionBudget,則可能無法升級至上述版本。如果升級失敗,完成下列其中一項任務即可解決問題:-
升級 Amazon EKS 附加元件時,選擇將覆寫現有設定作為衝突解決方案選項。如果您已對部署制定自訂設定,則務必在升級前備份設定,以便在升級後重新套用其他自訂設定。
-
移除現有的
PodDisruptionBudget,然後再次嘗試升級。
-
-
在 EKS 附加元件版本
v1.9.3-eksbuild.3和更新版本以及v1.10.1-eksbuild.6和更新版本中,CoreDNS 部署將readinessProbe設定為使用/ready端點。此端點已在的 CoreDNS 的Corefile組態檔案中啟用。如果您使用自訂
Corefile,則必須將ready外掛程式新增至組態,以便在 CoreDNS 中使用/ready端點才能使用探查。 -
在 EKS 附加元件版本以
v1.9.3-eksbuild.7及更新版本v1.10.1-eksbuild.4和更新版本中,您可以變更PodDisruptionBudget。您可以使用下列範例的欄位,在選擇性組態設定中編輯附加元件並變更這些設定。此範例顯示預設值PodDisruptionBudget。{ "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }您可以設定
maxUnavailable或minAvailable,但不能同時在單一PodDisruptionBudget進行設定。如需有關PodDisruptionBudgets的詳細資訊,請參閱 Kubernetes 文件中的指定 PodDisruptionBudget。 請注意,如果您將
enabled設定為false,則PodDisruptionBudget不會移除。將此欄位設定為false之後,您必須刪除PodDisruptionBudget物件。同樣地,如果您在升級至具有PodDisruptionBudget的版本之後編輯附加元件以使用較舊版本的附加元件 (降級附加元件),則PodDisruptionBudget不會移除。執行下列命令以刪除PodDisruptionBudget:kubectl delete poddisruptionbudget coredns -n kube-system -
在 EKS 附加元件版本
v1.10.1-eksbuild.5和更新版本中,將預設容差從node-role.kubernetes.io/master:NoSchedule變更為node-role.kubernetes.io/control-plane:NoSchedule,以符合 KEP 2067 的規定。如需有關 KEP 2067 的詳細資訊,請參閱 GitHub 上 Kubernetes Enhancement Proposals (KEP) 中的 KEP-2067:重新命名 kubeadm「主要」標籤和污點。 在 EKS 附加元件版本
v1.8.7-eksbuild.8和更新版本以及v1.9.3-eksbuild.9和更新版本中,兩個容差均設定為與每個 Kubernetes 版本相容。 -
在 EKS 附加元件版本
v1.9.3-eksbuild.11和v1.10.1-eksbuild.7及更新版本中,CoreDNS 部署會設定topologySpreadConstraints的預設值。如果多個可用區域中有可用的節點,預設值可確保 CoreDNS Pod 分散到可用區域。您可以設定自訂值,並使用該值取代預設值。預設值如下:topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns
CoreDNS v1.11 升級考量
-
在 EKS 附加元件版本
v1.11.1-eksbuild.4和更新版本中,容器映像的基礎為 Amazon EKS Distro 維護的最低基礎映像,其中包含最少套件且沒有 Shell。如需詳細資訊,請參閱 Amazon EKS Distro 。CoreDNS 映像的用量和故障診斷保持不變。