目录
默认pod不会被调度到Master节点
DaemonSet是什么
DaemonSet实操
清除之前实验创建的deployment
创建DaemonSet资源管理器
默认pod不会被调度到Master节点
Kubernetets集群默认master主节点会有一个污点,这个污点会让pod无法调度到master节点上。如果想要调度到master主节点运行pod,需要调度容忍,有了调度容忍之后就具备了调度的可能性了。目前暂时不设置调度容忍,DaemonSet只会在除了master主节点之外的node节点部署或回收pod。
我们可以通过命令查看master节点详情:kubectl describe node <master节点名称>
Taints: node-role.kubernetes.io/control-plane:NoSchedule
Taints表示污点,NoSchedule即不允许Pod 被调度到这个节点上。
DaemonSet是什么
DaemonSet确保全部或一些Node上运行一个pod副本,为什么是全部或一些node?
原因就是上面提到的,如果设置node节点的污点(Taints)和容忍度(Tolerations),调度会考虑这两个条件进行调度到相应可以调度的节点上部署pod。比如上面提到的默认下,master节点是因为设置了污点以及NoSchedule,那么集群就不会在master节点上调度部署pod。
由于DaemonSet有这个特性:动态确保在node节点上运行一个pod副本。所以当新增node节点或移除node节点,DaemonSet都会有自动进行pod的部署或移除动作。
1、新增node节点,DaemonSet会自动将pod部署在新增node节点。
2、移除node节点,DaemonSet会自动将pod移除。
3、删除DaemonSet控制器,将会删除它所创建的所有pod。
以下是针对1-2两个点所画的示意图:
DaemonSet实操
清除之前实验创建的deployment
[root@k8s-master01 5]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 10d
myapp-deploy ClusterIP 10.3.197.72 <none> 80/TCP 37h
[root@k8s-master01 5]# kubectl delete deployment myapp-deploy
deployment.apps "myapp-deploy" deleted
[root@k8s-master01 5]# kubectl get deployment
No resources found in default namespace.
[root@k8s-master01 5]# kubectl delete svc myapp-deploy
service "myapp-deploy" deleted
[root@k8s-master01 5]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 10d
[root@k8s-master01 5]# kubectl get pod
No resources found in default namespace.
创建DaemonSet资源管理器
vim 8.ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:name: deamonset-demolabels:app: deamonset-demo
spec:selector:matchLabels:name: deamonset-demotemplate:metadata:labels:name: deamonset-demospec:containers:- image: nginx:latestname: deamonset-demo
[root@k8s-master01 5]# kubectl apply -f 8.ds.yaml
daemonset.apps/deamonset-demo created
[root@k8s-master01 5]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deamonset-demo-n7ggm 1/1 Running 0 26s 10.244.85.239 k8s-node01 <none> <none>
deamonset-demo-r5c5z 1/1 Running 0 26s 10.244.58.238 k8s-node02 <none> <none>
[root@k8s-master01 5]# curl 10.244.85.239
Welcome to Nginx V1.0 !!!
结果:DaemonSet资源管理器创建成功。可以发现在node01和node02两个节点上分别有一个pod。
注意:DaemonSet资源清单中不需要设置副本数量,因为DaemonSet本身会根据node节点数量进行自动化调度控制部署pod,且每个节点有且仅有一个pod。