DaemonSet控制Pod拉起节点
k8s release-1.15
实验现象
创建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。
pkg/controller/daemon/daemon_controller.go
DaemonSetController会监听node变化(例如node label),动态调整pod是否可以保留在节点上。

参考资料
浙公网安备 33010602011771号