官方文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/
DaemonSet
DaemonSet 即后台支撑型服务,主要是用来部署守护进程。
长期伺服型和批处理型的核心在业务应用,可能有些节点运行多个同类业务的 Pod,有些节点上又没有这类的 Pod 运行;
而后台支撑型服务的核心关注点在 K8S 集群中的节点(物理机或虚拟机),要保证 每个节点上都有一个此类 Pod 运行。节点可能是所有集群节点,也可能是通过 nodeSelector 选定的一些特定节点。
典型的后台支撑型服务包括:存储、日志和监控等。在每个节点上支撑 K8S 集群运行的服务。
守护进程在我们每个节点上,运行的是相同的 Pod,新加入的节点也同样运行一个相同的新的 Pod
示例
1、创建 yaml 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| apiVersion: apps/v1 kind: DaemonSet metadata: name: ds-test labels: app: filebeat spec: # 标签选择器 selector: matchLabels: app: filebeat
template: metadata: labels: app: filebeat spec: # 配置容器 containers: - name: logs containers: - image: nginx ports: - containerPort: 80 # 挂载目录 volumeMounts: - name: varlog mountPath: /tmp/log volumes: - name: varlog hostPath: path: /var/log
|
2、创建容器
1
| kubectl apply -f ds.yaml
|
3、查看 Pod
1 2 3 4 5
| # kubectl get pods
NAME READY STATUS RESTARTS AGE ds-test-8487j 1/1 Running 0 8s ds-test-lkflr 1/1 Running 0 8s
|
4、进入容器测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # kubectl exec -it ds-test-8487j bash
root@ds-test-8487j:/# ls /tmp/log/ anaconda cron-20190825 secure audit dmesg secure-20190825 boot.log dmesg.old spooler boot.log-20190822 firewalld spooler-20190825 boot.log-20190823 grubby_prune_debug tallylog boot.log-20190824 lastlog tuned boot.log-20190825 maillog vmware-vgauthsvc.log.0 boot.log-20190827 maillog-20190825 vmware-vmsvc.log btmp messages wtmp chrony messages-20190825 yum.log containers pods cron rhsm
|