为什么 kubernetes 需要有 2 个 coredns pod

wor*_*hit 5 kubernetes coredns

我安装了新的 kubernetes 单节点集群,并且看到 2 个 coredns pod 正在运行。其中一个失败了(不是这个问题的一部分)

为什么他们是2个?

DT.*_*DT. 8

此链接上有 CoreDNS 的详细调整信息。

CoreDNS 内存使用情况主要受集群中 Pod 和服务数量的影响。其他因素包括已填充的 DNS 应答缓存的大小以及每个 CoreDNS 实例收到的查询率 (QPS)。

两个副本用于实现高可用性(降低 CoreDNS 停机的风险)和安装时的默认值。

您可以通过缩小/扩大部署中 coredns 的部署来更改此设置。

默认

$ kubectl describe deployment.apps -n kube-system coredns
Name:                   coredns
Namespace:              kube-system
CreationTimestamp:      Tue, 03 Mar 2020 09:28:50 +0000
Labels:                 k8s-app=kube-dns
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               k8s-app=kube-dns
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  1 max unavailable, 25% max surge
Run Code Online (Sandbox Code Playgroud)

缩小至 1

$ kubectl scale deployments.apps -n kube-system coredns --replicas=1
deployment.apps/coredns scaled

$ kubectl describe deployment.apps -n kube-system coredns
Name:                   coredns
Namespace:              kube-system
CreationTimestamp:      Tue, 03 Mar 2020 09:28:50 +0000
Labels:                 k8s-app=kube-dns
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               k8s-app=kube-dns
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
Run Code Online (Sandbox Code Playgroud)

扩展到 3 个

$ kubectl scale deployments.apps -n kube-system coredns --replicas=3
deployment.apps/coredns scaled

$ kubectl describe deployment.apps -n kube-system coredns
Name:                   coredns
Namespace:              kube-system
CreationTimestamp:      Tue, 03 Mar 2020 09:28:50 +0000
Labels:                 k8s-app=kube-dns
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               k8s-app=kube-dns
Replicas:               3 desired | 3 updated | 3 total | 2 available | 1 unavailable
Run Code Online (Sandbox Code Playgroud)