作用是进程守护 或是守护进程,自己的理解
简写命令 ds
创建一个
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
app: logging
template:
metadata:
labels:
app: logging
id: fluentd
name: fluentd
spec:
containers:
- name: fluentd-es
image: agilestacks/fluentd-elasticsearch:v1.3.0
env: # 环境变量配置
- name: FLUENTD_ARGS
value: -qq
volumeMounts: # 加载数据券,避免数据丢失
- name: containers
mountPath: /var/lib/docker/containers # 将数据券挂载到那个目录
- name: varlog
mountPath: /var/log
volumes:
- hostPath:
path: /var/lib/docker/containers
name: containers
- hostPath:
path: /var/log
name: varlog
在没有给node指定label的时候,会在每个node下面都部署一个
# 查看
kubectl get daemonset
# 结果 由于我有3个node
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
fluentd 3 3 0 3 0 <none> 21s
# 查看部署pod的的情况
kubectl get po -o wide
# 结果
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dns-test 1/1 Running 0 126m 10.244.122.73 k8s-node4 <none> <none>
fluentd-2q2r5 0/1 ContainerCreating 0 2m33s <none> k8s-node3 <none> <none>
fluentd-bkfs6 0/1 ContainerCreating 0 2m33s <none> k8s-node4 <none> <none>
fluentd-wfn95 0/1 ContainerCreating 0 2m33s <none> k8s-node2 <none> <none>
nginx-pod 0/1 Terminating 0 8h <none> k8s-node3 <none> <none>
# 查看nodes
kubectl get nodes
# 结果
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 5d12h v1.23.6
k8s-node2 Ready <none> 5d10h v1.23.6
k8s-node3 Ready <none> 5d10h v1.23.6
k8s-node4 Ready <none> 5d9h v1.23.6
# 带标签
kubectl get nodes --show-labels
# 给node 添加标签
kubectl label no k8s-node2 app=logging
kubectl label no k8s-node2 type=microservices
我这便运行完,发现都crash拉
kubectl get po
NAME READY STATUS RESTARTS AGE
dns-test 1/1 Running 0 6h4m
fluentd-2nr8z 0/1 CrashLoopBackOff 39 (<invalid> ago) 3h18m
fluentd-p68hz 0/1 CrashLoopBackOff 39 (<invalid> ago) 3h18m
fluentd-pvxv8 0/1 CrashLoopBackOff 39 (<invalid> ago) 3h18m
nginx-pod 0/1 Terminating
daemonset 里面也有滚动更新
不过建议使用
onDelete