管理 CoreDNS 附加组件 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理 CoreDNS 附加组件

CoreDNS 是一个灵活的、可扩展的 DNS 服务器,可用作库贝内特群集 DNS。当您启动具有至少一个节点的 Amazon EKS 集群时,默认情况下会部署 CoreDNS 映像的两个副本,而不考虑集群中部署的节点数量。CoreDNS 窗格为群集中的所有窗格提供名称解析。如果您的集群包含AmazonFargate 配置文件命名空间与 CoreDNS 的命名空间相匹配Deployment。有关 CoreDNS 的更多信息,请参阅使用核心的 DNS 进行服务发现在 Kubernetes 文档中。

下表列出了随每个 Amazon EKS 集群版本一起部署的 CoredNS 附加组件的版本。

与每个 Amazon EKS 支持的集群版本一起部署的 CoredNS 版本
Kubernetes 版本 1.20 1.19 1.18 1.17 1.16
CoreDNS 1.8.3 1.8.0 1.7.0 1.6.6 1.6.6

如果您的 1.18 或更高版本的集群尚未添加 CoreDNS Amazon EKS 附加组件,您可以使用添加 CoreDNS Amazon EKS 附加组件。如果您使用Amazon Web Services Management Console在 2021 年 5 月 19 日或之后,CredNS 亚马逊 EKS 附加组件已经在您的集群上。如果您使用任何其他工具创建了 1.18 或更高版本的集群,并希望使用 CoreDNS Amazon EKS 附加组件,则必须自行将其添加到您的集群中。

如果您已将 CoreDNS Amazon EKS 附加组件添加到 1.18 或更高版本的集群中,您可以使用更新 CoreDNS Amazon EKS 附加组件删除 CoreDNS Amazon EKS 附加组件部分. 有关 Amazon EKS 附加组件的更多信息,请参阅Amazon EKS 附加组件

如果您尚未添加 CoredNS Amazon EKS 加载项,则该加载项仍在您的集群上运行。您 CoreDNS 以使用手动更新 CoreDNS 附加组件部分.

添加 CoreDNS Amazon EKS 附加组件

选择带有要用于将 CoredNS Amazon EKS 附加组件添加到您的集群的工具名称的选项卡。

Amazon Web Services Management Console

使用添加 CoreDNS 附加组件,请使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要为其配置 CoredNS Amazon EKS 附加程序的集群的名称。

  3. 选择配置选项卡,然后选择附加项选项卡。

  4. SelectAdd New

    1. SelectCoreDNS对于 来说为名称

    2. 选择版本您想使用。

    3. 如果您选择启用覆盖群集上此附加组件的现有配置,那么现有加载项的任何设置都可以用 Amazon EKS 加载项的设置覆盖。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项失败,并且您会收到一条错误消息来帮助您解决冲突。

    4. SelectAdd

Amazon CLI

使用添加 CoreDNS 附加组件,请使用Amazon CLI。Replacemy-cluster替换为您集群的名称。

aws eks create-addon \ --cluster-name my-cluster \ --addon-name coredns

如果您希望加载项使用自己的设置覆盖对加载项所做的任何更改,请添加--resolve-conflicts OVERWRITE选项添加到上一个命令。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项失败,并且您会收到一条错误消息来帮助您解决冲突。

更新 CoreDNS Amazon EKS 附加组件

此步骤用于更新 CoreDNS Amazon EKS 附加组件。如果您尚未添加 CoreDNS 亚马逊 EKS 附加组件,请完成手动更新 CoreDNS 附加组件,或添加 CoreDNS Amazon EKS 附加组件。Amazon EKS 不会在发布新版本时或您之后自动更新集群上的 CoredNs。更新您的集群到一个新的库贝内特的次要版本。要更新现有集群上的 CoreDNS,您必须启动更新,然后 Amazon EKS 为您更新 Amazon EKS 附加组件。

Amazon Web Services Management Console

要使用更新 CoreDNS Amazon EKS 附加组件,请使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要更新 CoredNS Amazon EKS 加载项的集群的名称。

  3. 选择配置选项卡,然后选择附加项选项卡。

  4. 请选择右上角的框。CoreDNS框,然后选择编辑

    1. 选择版本的 Amazon EKS 附加组件。

    2. 如果您选择启用覆盖群集上此附加组件的现有配置,那么现有加载项的任何设置都可以用 Amazon EKS 加载项的设置覆盖。如果您未启用此选项,并且任何 Amazon EKS 加载项设置与您的现有设置冲突,则将加载项迁移到 Amazon EKS 加载项将失败,您将收到一条错误消息,以帮助您解决冲突。

    3. Select更新

Amazon CLI

要使用更新 CoreDNS Amazon EKS 附加组件,请使用Amazon CLI

  1. 检查 CredNS Amazon EKS 附加组件的当前版本。Replacemy-cluster的集群名称。

    aws eks describe-addon \ --cluster-name my-cluster \ --addon-name coredns \ --query "addon.addonVersion" \ --output text

    输出:

    1.7.0
  2. 确定哪些版本的 CoreDNS 附加组件适用于您的集群版本。

    aws eks describe-addon-versions \ --addon-name coredns \ --kubernetes-version 1.19 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \ --output text

    输出

    1.8.0 True 1.7.0 False

    带有的版本True下面是使用新集群部署的默认版本。

  3. 将附加组件更新为上一步的输出中返回的版本。版本应该是相同的,或者晚于CoreDNS 版本表。

    aws eks update-addon \ --cluster-name my-cluster \ --addon-name coredns \ --addon-version 1.8.0 \ --resolve-conflicts

删除 CoreDNS Amazon EKS 附加组件

从集群中删除 Amazon EKS 加载项会删除其功能。只有当您的所有窗格都不依赖于附加组件提供的功能时,才应从集群中删除该加载项。删除加载项后,如果需要,您可以再次添加它。

Amazon Web Services Management Console

要删除 CredNS Amazon EKS 附加组件,请使用Amazon Web Services Management Console

  1. 从打开 Amazon EKS 控制台https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择集群,然后选择要删除 CoredNS Amazon EKS 加载项的集群的名称。

  3. 选择配置选项卡,然后选择附加项选项卡。

  4. 选择窗口右上角的复选框。CoreDNS框,然后选择Remove。类型coredns,然后选择Remove

Amazon CLI

使用以下命令删除 CoreDNS Amazon EKS 附加组件。Replacemy-cluster替换为集群的名称。

aws eks delete-addon --cluster-name my-cluster --addon-name coredns

手动更新 CoreDNS 附加组件

如果您有 1.17 或更早版本的集群,或 1.18 或更高版本的集群,您尚未向其添加 CoreDNS Amazon EKS 加载项,请完成以下步骤来更新加载项。如果您添加了 CoreDNS 亚马逊 EKS 附加组件,请完成更新 CoreDNS Amazon EKS 附加组件REPLACE.

更新 CoreDNS 附加组件

  1. 检查 CoreDNS 部署的当前版本。

    kubectl describe deployment coredns \ --namespace kube-system \ | grep Image \ | cut -d "/" -f 3

    输出:

    coredns:v1.8.0
  2. 如果您的当前coredns版本为 1.5.0 或更高版本,但早于CoreDNS 版本表中,然后跳过此步骤。如果您的当前版本早于 1.5.0,则需要修改ConfigMap ,以使 CoreDNS 转发插件,而不是代理插件。

    1. 使用以下命令打开配置映射。

      kubectl edit configmap coredns -n kube-system
    2. Replaceproxy在下面的行中使用forward。保存文件并退出编辑器。

      proxy . /etc/resolv.conf
  3. 如果您最初在 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
  4. 检索您当前的 coredns 映像:

    kubectl get deployment coredns --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
  5. 如果您要更新到 CoreDNS 1.8.3,则需要添加endpointslices权限system:corednsKubernetesclusterrole

    kubectl edit clusterrole system:coredns -n kube-system

    在文件中的现有权限行下添加以下行。

    ... - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch ...
  6. 通过替换更新核心的 DNS<602401143452>(包括<>),<cn-north-1>, 和<com>替换为上一步中返回的输出中的值。Replace<1.8.3>使用您的集群推荐 CoreDNS 版本或更高版本:

    kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=<602401143452>.dkr.ecr.<cn-north-1>.amazonaws.<com>/eks/coredns:v<1.8.3>-eksbuild.1