更新 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
,则需要修改ConfigMap
,以使 CoreDNS 使用转发附加组件,而不是代理附加组件。-
使用以下命令打开
ConfigMap
。kubectl edit configmap coredns -n kube-system
-
将以下行中的
proxy
替换为forward
。保存文件,然后退出编辑器。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:coredns
Kubernetesclusterrole
。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