在 Amazon EKS叢集DNS中管理 的核心DNS - Amazon EKS

協助改善此頁面

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

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

在 Amazon EKS叢集DNS中管理 的核心DNS

CoreDNS 是彈性、可擴展的DNS伺服器,可作為 Kubernetes 叢集 DNS。當您啟動具有至少一個節點的 Amazon EKS叢集時,CoreDNS 映像預設會部署,無論叢集中部署的節點數量為何。所以此 CoreDNS Pods 為所有 提供名稱解析 Pods 在叢集中。所以此 CoreDNS Pods 如果您的叢集包含定義啟動 AWS Fargate 時的Pods用途與 命名空間相符的 命名空間,則可以部署到 Fargate 節點 CoreDNS deployment。 如需有關 的詳細資訊 CoreDNS,請參閱使用 CoreDNS for Service Discovery,位於 Kubernetes 文件中)。

CoreDNS 版本

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

Kubernetes version 1.31 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.11.3-eksbuild.1 v1.11.3-eksbuild.1 v1.11.3-eksbuild.1 v1.10.1-eksbuild.13 v1.10.1-eksbuild.13 v1.9.3-eksbuild.17 v1.9.3-eksbuild.17 v1.9.3-eksbuild.17 v1.8.7-eksbuild.16
重要

如果您要自行管理此附加元件,資料表中的版本可能與可用的自我管理版本不同。如需更新此附加元件之自我管理類型的詳細資訊,請參閱 更新 CoreDNS Amazon EKS自我管理附加元件

重要 CoreDNS 升級考量

  • 改善 的穩定性和可用性 CoreDNS Deployment、 版本 v1.9.3-eksbuild.6 和更新版本 v1.10.1-eksbuild.3 ,並使用 部署PodDisruptionBudget。如果您已部署現有 PodDisruptionBudget,則可能無法升級至上述版本。如果升級失敗,完成下列其中一項任務即可解決問題:

    • 升級 Amazon EKS 附加元件時,選擇覆寫現有的設定作為衝突解決選項。如果您已對 進行其他自訂設定 Deployment,請務必在升級之前備份您的設定,以便在升級後重新套用其他自訂設定。

    • 移除現有的 PodDisruptionBudget,然後再次嘗試升級。

  • 在EKS附加元件版本 v1.9.3-eksbuild.3 和更新版本 和更新版本 v1.10.1-eksbuild.6和更新版本中,CoreDNS Deployment readinessProbe 會將 設定為使用/ready端點。此端點已在 的Corefile組態檔案中啟用 CoreDNS.

    如果您使用自訂 Corefile,則必須將ready外掛程式新增至組態,以便在 中啟用/ready端點 CoreDNS 讓探查使用。

  • 在EKS附加元件版本 v1.9.3-eksbuild.7 和更新版本 和更新版本 v1.10.1-eksbuild.4和更新版本中,您可以變更 PodDisruptionBudget。您可以使用下列範例的欄位,在選擇性組態設定中編輯附加元件並變更這些設定。此範例顯示預設值PodDisruptionBudget

    { "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }

    您可以設置 maxUnavailableminAvailable,但不能同時在單一PodDisruptionBudget進行設置。如需 的詳細資訊PodDisruptionBudgets,請參閱在 中指定 PodDisruptionBudgetKubernetes 文件

    請注意,如果您設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 年的詳細資訊,請參閱 上的 KEPsKEPKubernetes Enhancement Proposals () 中的 -2067:重新命名 kubeadm "master" 標籤和污點 GitHub.

    在EKS附加元件版本 v1.8.7-eksbuild.8 和更新版本 和更新版本 v1.9.3-eksbuild.9中,兩個容錯都設定為與每個 相容的 Kubernetes 版本。

  • 在EKS附加元件版本 v1.9.3-eksbuild.11v1.10.1-eksbuild.7及更新版本中,CoreDNS Deployment 會設定 的預設值topologySpreadConstraints。預設值可確保 CoreDNS Pods 如果多個可用區域中有節點可用,則 會分散到可用區域。您可以設定將使用的自訂值,而非預設值。預設值如下:

    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 映像保持不變。