基本概念
创建守护进程集:即kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。
操作场景
守护进程集(DaemonSet)可以确保全部(或者某些)节点上仅运行一个Pod实例,当有节点加入集群时,也会为他们新增一个 Pod。当有节点从集群移除时,这些Pod也会被回收。删除 DaemonSet 将会删除它创建的所有Pod。
使用DaemonSet的一些典型用法:
- 运行集群存储daemon,例如在每个节点上运行glusterd、ceph。
- 在每个节点上运行日志收集daemon,例如fluentd、logstash。
- 在每个节点上运行监控daemon,例如Prometheus Node Exporter、collectd、Datadog代理、New Relic代理,或Ganglia gmond。
一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个DaemonSet。一个稍微复杂的用法是为同一种守护进程部署多个DaemonSet;每个具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU要求。
前提条件
在创建守护进程集前,您需要存在一个可用集群。若没有可用集群,请参照集群开通中内容创建。
操作步骤及说明
创建DaemonSet与创建Deployment的过程类似,仅升级方式有差异,需要注意:
- 删除升级(不推荐这种升级方式):如果设置DaemonSet的升级方式为删除升级,那么我们全量替换升级DaemonSet时,全量替换更新的内容在我们重新部署Pods前是不会生效的。
- 滚动升级:如果设置DaemonSet的升级方式为滚动升级,那么我们全量替换升级DaemonSet时,k8s会自动帮我们删除重建DaemonSet的每一个Pod,此时有一个可选的参数MaxUnavailable。MaxUnavailable:设置升级过程中最多有多少个Pod处于不可用状态,默认值为1。