gpt4 book ai didi

kubernetes - 守护进程集和部署之间的区别

转载 作者:行者123 更新时间:2023-12-02 16:06:56 29 4
gpt4 key购买 nike

在 Kelsey Hightower 的 Kubernetes Up and Running 中,他给出了两个命令:

kubectl get daemonSets --namespace=kube-system kube-proxy

kubectl 获取部署 --namespace=kube-system kube-dns

为什么一个使用 daemonSets 而另一个部署?有什么区别?

最佳答案

Kubernetes 部署管理集群上运行的无状态服务(而不是管理有状态服务的 StatefulSet)。他们的目的是保持一组相同的 Pod 运行并以受控方式升级它们。例如,您可以在部署定义中定义要运行多少个应用程序副本 (pods),kubernetes 将使您的应用程序的多个副本分布在节点上。如果您说 5 个副本超过 3 个节点,那么某些节点将运行多个应用程序副本。

DaemonSets管理复制​​的 Pod 组。但是,DaemonSet 尝试在整个集群或节点子集上遵循每节点一个 Pod 的模型。 Daemonset 每个节点不会运行多个副本。使用 Daemonset 的另一个优点是,如果您向集群添加一个节点,那么 Daemonset 将自动在该节点上生成一个 pod,这是部署所无法做到的。

DaemonSets 对于部署需要在所有或某些节点上运行且不需要用户干预的持续后台任务非常有用。此类任务的示例包括存储守护进程(如 ceph)、日志收集守护进程(如 Fluentd)以及节点监控守护进程(如collectd)

让我们以您在问题中提到的示例为例:为什么kube-dns是部署而kube-proxy是守护进程集?

其背后的原因是集群中的每个节点都需要 kube-proxy 来运行 IP 表,以便每个节点都可以访问每个 pod,无论它位于哪个节点。因此,当我们将 kube-proxy 设为守护进程集并稍后将另一个节点添加到集群时,kube-proxy 会自动在该节点上生成。

Kube-dns 的职责是使用其名称发现服务 IP,并且仅 kube-dns 的一个副本就足以将服务名称解析为其 IP。因此,我们将 kube-dns 设为部署,因为我们不需要在每个节点上都使用 kube-dns

关于kubernetes - 守护进程集和部署之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53888389/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com