k8s-daemonSet控制器
DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet 的一些典型用法:
1.在每个节点上运行集群守护进程
2.在每个节点上运行日志收集守护进程
3.在每个节点上运行监控守护进程
查看控制器
[root@master ~]# kubectl -n kube-system get daemonsets.apps
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-flannel-ds-amd64 2 2 2 2 2 <none> 18h
kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 18h
创建控制器
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: dae1
template:
metadata:
labels:
app: dae1
spec:
containers:
- name: my-pod-dae
image: 192.168.84.11/k8s/music:v3
ports:
- protocol: TCP
containerPort: 80
[root@master controllers]# kubectl get daemonsets.apps -o wide
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
my-daemonset 1 1 1 1 1 <none> 50s my-pod-dae 192.168.84.11/k8s/music:v3 app=dae1
[root@master controllers]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-daemonset-l2twf 1/1 Running 0 2m2s 10.244.1.23 node01.local <none> <none>
daemonSet控制器的调度策略-pod在那些节点运行-默认master不运行
1、污点容忍度影响了daemonSet控制器的调度:下面查看一下节点的污点容忍度
[root@master controllers]# kubectl describe nodes |grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
Taints: <none>
master节点的污点容忍度是NoSchedule,所以pod不在上面运行
>容忍度说明:
>NoSchedule: 不会被调度
>NoExecute:
>PremerNoSchedule:
daemonSet控制器的调度策略-pod在那些节点运行-默认master不运行
2、设置污点容忍度
[root@master controllers]# kubectl taint node node01.local key=value:NoSchedule
node/node01.local tainted
[root@master controllers]# kubectl describe nodes |grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
Taints: key=value:NoSchedule
daemonSet控制器的调度策略-pod在那些节点运行-默认master不运行
2、删除污点
[root@master controllers]# kubectl taint node node01.local key-
node/node01.local untainted
[root@master controllers]# kubectl describe nodes |grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
Taints: <none>
daemonSet控制器的调度策略-pod在那些节点运行-默认master不运行
3、无视污点
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
# 这些容忍度设置是为了让该守护进程集在控制平面节点上运行
# 如果你不希望自己的控制平面节点运行 Pod,可以删除它们
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2