代码之家  ›  专栏  ›  技术社区  ›  Snowcrash

守护程序和部署之间的区别

  •  3
  • Snowcrash  · 技术社区  · 6 年前

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

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

    kubectl get deployments --namespace=kube-system kube-dns

    为什么一个使用守护程序而另一个使用部署? 有什么区别?

    1 回复  |  直到 6 年前
        1
  •  99
  •   Ricky Robinson    3 年前

    库伯内特斯部署 pods )您希望在部署定义中运行的应用程序的副本,kubernetes将使应用程序的许多副本分布在节点上。如果你说5个副本超过3个节点,那么一些节点将运行你应用程序的多个副本。

    守护程序 管理复制的POD组。但是,守护程序试图在整个集群或节点子集中遵循每个节点一个Pod的模式。守护程序集不会在每个节点上运行多个副本。使用守护程序集的另一个优点是,如果将节点添加到集群,则守护程序集将自动在该节点上生成一个pod,而部署不会这样做。

    DaemonSets 用于部署需要在所有或某些节点上运行且不需要用户干预的正在进行的后台任务。此类任务的示例包括存储守护进程,如 ceph ,日志收集守护进程,如 fluentd collectd

    让我们举一个你在问题中提到的例子:为什么是 kube-dns 部署和 kube-proxy 守护程序?

    库贝代理 在集群中的每个节点上都需要使用,以运行IP表,这样每个节点都可以访问每个pod,而不管它位于哪个节点上。因此,当我们 库贝代理 A. daemonset 稍后将另一个节点添加到集群中,kube代理将自动在该节点上生成。

    Kube-dns 责任是使用服务IP的名称和它的一个副本来发现服务IP kube dns 足够将服务名称解析为其IP。因此,我们作出 kube dns A. deployment ,因为我们不需要 kube dns