选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在 Amazon EKS 集群中管理 DNS 的 CoreDNS

聚焦模式
在 Amazon EKS 集群中管理 DNS 的 CoreDNS - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

提示

使用 Amazon EKS 自动模式时,您无需安装或升级联网附加组件。自动模式包含容器组联网和负载均衡功能。

有关更多信息,请参阅 使用 EKS 自动模式实现集群基础设施自动化

CoreDNS 是一个灵活、可扩展的 DNS 服务器,可用作 Kubernetes 集群 DNS。当您启动具有至少一个节点的 Amazon EKS 集群时,无论集群中部署的节点数量如何,预设情况下都会部署 CoreDNS 镜像的两个副本。CoreDNS Pod 为集群中的所有 Pod 提供名称解析。如果您的集群包含命名空间与 CoreDNS deployment 的命名空间相匹配的 Fargate 配置文件,则可以将 CoreDNS 容器组(pod)部署到 Fargate 节点。有关 Fargate 配置文件的更多信息,请参阅定义启动时将使用 AWS Fargate 的容器组(pod)。有关 CoreDNS 的更多信息,请参阅 Kubernetes 文档中的使用 CoreDNS 进行服务发现

CoreDNS 版本

下表列出了每个 Kubernetes 版本的 Amazon EKS 附加组件类型的最新版本。

Kubernetes 版本 CoreDNS 版本

1.32

v1.11.4-eksbuild.2

1.31

v1.11.4-eksbuild.2

1.30

v1.11.4-eksbuild.2

1.29

v1.11.4-eksbuild.2

1.28

v1.10.1-eksbuild.18

1.27

v1.10.1-eksbuild.18

1.26

v1.9.3-eksbuild.22

1.25

v1.9.3-eksbuild.22

1.24

v1.9.3-eksbuild.22

重要

如果您自行管理此附加组件,则表中的版本可能与可用的自行管理版本不同。有关更新此附加组件的自行管理类型的更多信息,请参阅更新 CoreDNS Amazon EKS 自主管理型附加组件

重要的 CoreDNS 升级注意事项

  • 为了提高 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 插件添加到该配置,以便 /ready 端点在 CoreDNS 中处于活动状态,供探测器使用。

  • 在 EKS 附加组件版本 v1.9.3-eksbuild.7 及更高版本 和 v1.10.1-eksbuild.4 及更高版本中,您可以更改 PodDisruptionBudget。您可以使用以下示例中的字段编辑附加组件并在可选配置设置中更改这些设置。此示例显示默认 PodDisruptionBudget

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

    您可以设置 maxUnavailableminAvailable,但不能在一个 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 增强建议(KEP)中的 KEP-2067: Rename the kubeadm "master" label and taint

    在 EKS 附加组件 v1.8.7-eksbuild.8 及更高版本和 v1.9.3-eksbuild.9 及更高版本中,两个公差都设置为与每个 Kubernetes 版本兼容。

  • 在 EKS 附加组件 v1.9.3-eksbuild.11v1.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 维护的最小基本映像,其中包含最少的软件包且没有外壳。有关更多信息,请参阅 Amazon EKS Distro。CoreDNS 映像的使用和问题排查保持不变。

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。