K8s 控制器-DamonSet
介绍
1、daemonset 是众多控制器中的一种(其他还有deployment等等),它的作用是保证在每个节点只部署一个Pod,而且是只在pod 模板中定义的标签的节点上保证运行一个pod。
2、如果节点下线, DaemonSet不会在其他地方重新创建pod。 但是,当将 一个新节点添加到集群中时, DaemonSet会立刻部署一个新的pod实例 。
3、与daemonset 相比副本控制器(rc或rs)是保证集群有固定数量的pod ,而不一定是均匀的每个节点一个这样分布。
4、删除了 pod那么它也会重新个新的pod 。与ReplicaSet一样,DaemonSet 从配 pod 模板创建pod
用于场景
这些情况包括pod执行系统级别的与基础结构相关的操作。例如,希望在每个节点上运行日志收集器和资源监控器。另 一个典型的例子是Kubemetes 自己的 kube-proxy进程,它需要运行在所有节点上才能使服务工作。
DaemonSet 只在特定的节点上运行 pod
DaemonSet pod 默认部署到集群中所有节点上,除非指定这些pod在部分节点上运行,这是通过pod模板中的nodeSelector 属性指定的,这是 DaemonSet定义的一部分似于RSet和RC中的 pod 模板。
Notice
注意节点可以被设置为不可调度防止 pod 被部署到节点上,但是DaemonSet会把pod部署到这些节点上,因为无法调度的属性只会被调度器(例如deployment等)使用,而 Daemon Set管理 pod 完全绕过调度器这是预期的,因为DaemonSet 的目的是运行系统服务,即使是在不可调度的节点上,系统服务通常也需要运行。
创建DaemonSet
创建一个yaml 文件如下:
kubectl create -f xx.yaml
当把某个节点的标签(daemonset 中pod 模板定义的节点标签)删除,那么此节点上面的pod 也会消失。 当删除 DaemonSet 也会联通pod 一起删除。