一、将daemonset部署到符合条件的宿主机上
### --- 为符合条件的宿主机打标签
~~~ 为所有node节点搭上标签
~~~ 只需要在node节点上部署ds,忽略master节点。需要给node节点打个标签,
[root@k8s-master01 ~]# kubectl label node k8s-node01 k8s-node02 ds=true
node/k8s-node01 labeled
node/k8s-node02 labeled
### --- 查看所有节点的标签信息
[root@k8s-master01 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready <none> 9d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master02 Ready <none> 9d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master03 Ready <none> 9d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-node01 Ready <none> 9d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-node02 Ready <none> 9d v1.20.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux,node.kubernetes.io/node=
二、更改daemonset配置文件参数
### --- 更改一下DaemonSet
[root@k8s-master01 ~]# kubectl edit ds
spec:
nodeSelector: //nodeSelector和containers是平级的,
ds: "true"
containers:
- image: nginx:1.15.2
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
三、重新触发容器
### --- 重新触发容器,查看pod状态
~~~ 不符合这个标签的pod会被删除掉
[root@k8s-master01 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-7lgnx 1/1 Running 0 6m24s
nginx-l9dkp 0/1 Running 0 6m24s
nginx-ps42t 1/1 Terminating 0 6m24s
nginx-v6687 1/1 Terminating 0 6m24s
nginx-zb474 1/1 Terminating 0 6m24s
### --- 查看更改配置后容器状态
~~~ 删除的过程中,会做一次更新,因为DaemonSet是在线编译的,会产生之前的一个版本记录。
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-n47b7 1/1 Running 0 68s 172.17.125.2 k8s-node01 <none> <none>
nginx-tsxcp 1/1 Running 0 2m8s 172.27.14.194 k8s-node02 <none>
四、查看pod的历史版本
### --- 通过rollout查看pod构建历史版本
[root@k8s-master01 ~]# kubectl rollout history ds nginx //可以查看到之前的记录。
daemonset.apps/nginx
REVISION CHANGE-CAUSE
1 <none>
2 <none>
五、新添加一个pod到指定的宿主机上
### --- 新添加一个节点;在master03上
[root@k8s-master01 ~]# kubectl label node k8s-master03 ds=true
node/k8s-master03 labeled
### --- 查看pod创建结果
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-n47b7 1/1 Running 0 3m40s 172.17.125.2 k8s-node01 <none> <none>
nginx-tsxcp 1/1 Running 0 4m40s 172.27.14.194 k8s-node02 <none> <none>
nginx-wfrpz 1/1 Running 0 10s 172.18.195.8 k8s-master03 <none>