DaemonSet控制Pod拉起节点

发布时间 2023-04-15 21:26:09作者: 王景迁

实验现象

创建ds

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.22.1

Pod正常运行

ds Pod默认追加的容忍

ds已删除,但是Pod还没删除完成

源码分析

pkg/controller/daemon/daemon_controller.go
manage函数(控制Pod运行在哪些节点上)->podsShouldBeOnNode函数->nodeShouldRunDaemonPod函数->simulate函数->Predicates函数(预选+污点容忍)

最终DaemonSet Pod会运行在符合条件调度的节点上,例如NodeSelector。

参考资料

6.深入k8s:守护进程DaemonSet及源码分析