Kubernetes 核心概念之2.3 Daemonset 守护进程

官方文档: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

Kubernetes 核心概念之2.3 Daemonset 守护进程
https://flepeng.github.io/042-云原生-02-kubernetes-31-核心概念-Kubernetes-核心概念之2-3-Daemonset-守护进程/
作者
Lepeng
发布于
2023年3月1日
许可协议