在Kelsey Hightower的Kubernetes Up and Running中,他给出了两个命令:
kubectl get daemonSets --namespace=kube-system kube-proxy
和
kubectl get deployments --namespace=kube-system kube-dns
为什么一个使用daemonSets而另一个使用呢?有什么区别?
Pra*_*dha 23
Kubernetes部署管理在您的集群上运行的无状态服务(与之相反,例如管理有状态服务的StatefulSet)。他们的目的是保持一组相同的Pod运行并以受控方式对其进行升级。例如,您pods
在部署定义中定义了要运行的应用程序的复本()数,而kubernetes将使应用程序的复本散布在节点上。如果您说5个副本超过3个节点,则某些节点正在运行您的应用程序的多个副本。
DaemonSets管理复制的Pod组。但是,DaemonSets尝试在整个集群或节点子集上遵循每个节点一个Pod的模型。守护程序在每个节点上最多可以运行一个副本。使用Daemonset的另一个优点是,如果将节点添加到集群,则Daemonset将自动在该节点上生成Pod,而部署不会这样做。
DaemonSets
对于部署正在进行的后台任务很有用,这些任务需要在所有或某些节点上运行,并且不需要用户干预。此类任务的示例包括存储守护程序(如)ceph
,日志收集守护程序(如fluentd
)和节点监视守护程序(如)collectd
让我们以您提到的问题为例,为什么kube-dns
要部署并且kube-proxy
是daemonset?
kube-proxy
群集中的每个节点都需要运行它的原因来运行IP表,以便每个节点都可以访问每个Pod,无论它位于哪个节点上。因此,当我们创建kube-proxy
一个daemonset
节点并在稍后将另一个节点添加到集群时,会自动在该节点上生成kube-proxy。
Kube-dns
责任是使用服务的名称来发现服务IP,甚至一个副本kube-dns
也足以将服务名称解析为其IP,因此我们做kube-dns
了一个,deployment
因为我们不需要kube-dns
每个节点。
归档时间: |
|
查看次数: |
3080 次 |
最近记录: |