K8S中Pod控制器之DaemonSet(DS)控制器
DaemonSet(DS)控制器
-
DaemonSet类型的控制器可以保证在集群中的每一台(或指定)节点上都运行一个副本。一般适用于日志收集、节点监控等场景。也就是说,如果一个Pod提供的功能是节点级别的(每个节点都需要且只需要一个),那么这类Pod就适合使用DaemonSet类型的控制器创建。
DaemonSet 控制器的主要特点包括:
-
自动部署:在集群的所有节点上自动部署 Pod 的副本。
-
动态适应:当向集群添加新节点时,DaemonSet 会自动在新节点上创建 Pod 的副本。
-
自动清理:当节点从集群中移除时,其上的 Pod 也会被自动回收。
-
节点选择性:允许通过标签选择器指定 Pod 应该运行在哪些节点上。
-
更新管理:支持对所有 Pod 进行统一更新,并能在必要时回滚到之前的版本。
-
容忍污点:可以配置 Pod 以容忍节点上的污点,从而在即将被标记为不可调度的节点上运行。
-
服务发现:DaemonSet 管理的 Pod 可以通过 Kubernetes 服务发现机制被其他组件发现。
[root@k8s-master ~]# vim pc-daemonset.yaml
[root@k8s-master ~]# kubectl apply -f pc-daemonset.yaml
Error from server (NotFound): error when creating "pc-daemonset.yaml": namespaces "test" not found
[root@k8s-master ~]# kubectl create ns test
namespace/test created
[root@k8s-master ~]# kubectl apply -f pc-daemonset.yaml
daemonset.apps/pc-daemonset created
[root@k8s-master ~]# kubectl get ds -n test -o wide
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
pc-daemonset 2 2 0 2 0 <none> 12s nginx nginx:1.17.1 app=nginx-pod
[root@k8s-master ~]# kubectl get pod -n test -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pc-daemonset-9vwvd 0/1 ContainerCreating 0 23s <none> k8s-node2 <none> <none>
pc-daemonset-drdt5 0/1 ContainerCreating 0 23s <none> k8s-node1 <none> <none>
#一个node节点分配一个pod
[root@k8s-master ~]# kubectl get pod -n test -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pc-daemonset-9vwvd 0/1 ContainerCreating 0 26s <none> k8s-node2 <none> <none>
pc-daemonset-drdt5 0/1 ContainerCreating 0 26s <none> k8s-node1 <none> <none>
pc-daemonset-drdt5 1/1 Running 0 39s 10.244.36.71 k8s-node1 <none> <none>
pc-daemonset-9vwvd 1/1 Running 0 43s 10.244.169.129 k8s-node2 <none> <none>
^C[root@k8s-master ~]# cat pc-daemonset.yaml
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: pc-daemonset
namespace: test
spec:
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1