前面了解学习了K8S中的对象deployment和statefulset,知道他们对pod的管理,今天学习一种特殊的对象:DaemonSet。
什么是DaemonSet?
DaemonSet用于确保在集群的每个节点上都运行一个或多个Pod的副本。与其他控制器(如statefulset和deployment)不同,DaemonSet主要用于在整个集群中的节点上运行系统级别的任务,如日志收集、监控代理等。
DaemonSet的主要作用
- 节点级别任务的部署:DaemonSet确保在每个节点上运行一个或多个Pod的副本,用于执行节点级别的任务。
- 自动扩展:当新的节点加入集群时,DaemonSet会自动在新节点上启动Pod实例,确保集群中每个节点都有一个或多个Pod的副本。
- 系统服务的运行:DaemonSet常用于运行集群中的系统服务,如日志收集、监控代理、群集数据库等。
还是以一个例子说明:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-nginx
spec:
selector:
matchLabels:
app: ds-nginx
template:
metadata:
labels:
app: ds-nginx
spec:
containers:
- name: ds-nginx
image: m.daocloud.io/docker.io/nginx:latest
注意DaemonSet 类型是没有replicas属性的。通过kubectl get pod -o wide命令 可以看到在每个node上面都启动了一个pod。并且当有新的服务器加入这个K8S群集,也会在这个新的服务器上自动扩展启动一个新的pod。