K8S的DaemonSet控制器

1. 什么是DaemonSet

  • DaemonSet确保全部(或者一些)Node上运行一个pod的副本。当有Node加入集群时,也会为他们新增一个pod。当有Node从集群移除时,这些pod也会被回收。删除DaemonSet将会删除它创建的所有pod
  • 使用DaemonSet的一些典型用法:
  1. 运行集群存储daemon,例如在每个node上运行glusterd、ceph。
  2. 在每个node上运行日志收集,例如fluentd、logstash。
  3. 在每个node上运行监控daemon,例如prometheus Node Exporter、collectd。

2. 实例:

vim  daemonset.yaml

apiVersion: apps/v1  #Kubernetes API 版本号,此处为 apps/v1
kind: DaemonSet      #资源类型,此处为 DaemonSet
metadata:            #用于定义 DaemonSet 的元数据,包括名称等信息
  name: my-daemonset #DaemonSet 的名称,此处为 my-daemonset
  labels:            #用于标记该 DaemonSet,以便在后续的操作中进行查找、筛选等
    app: daemonset   #标签app=daemonset
spec:                #用于定义 DaemonSet 的规格,包括选择器和容器等信息
  selector:          #用于指定哪些 Pod 受该 DaemonSet 管理
    matchLabels:     #用于筛选出需要管理的 Pod,此处使用 app: my-daemonset 筛选符合该标签的 Pod。
      app: my-daemonset
  template:          #用于定义 Pod 模板,即创建新 Pod 时所使用的模板
    metadata:        #用于定义 Pod 元数据,包括标签等信息
      labels:        #用于标记该 Pod,以便在后续的操作中进行查找、筛选等
        app: my-daemonset
    spec:            #定义 Pod 的规格,包括容器等信息
      containers:    #定义容器信息,即在该 Pod 中需要运行的容器
      - name: my-daemonset  #容器的名称,此处为 my-daemonset
        image: nginx:1.9.1  #容器镜像所在的仓库和版本号,此处为 nginx:1.9.1
        imagePullPolicy: IfNotPresent  #器拉取镜像的策略,此处为 IfNotPresent,表示如果本地已有该镜像则使用本地镜像,否则拉取最新版本镜像
        ports:        #容器需要暴露的端口号,此处为 80
        - containerPort: 80

2.1. 创建daemonset

[root@master1 ~]# kubectl apply  -f daemonset.yaml

[root@master1 ~]# kubectl get pod -o wide
NAME                 READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
my-daemonset-2zs9k   1/1     Running   0          14m   10.244.0.10   master1   <none>           <none>
my-daemonset-bx4qj   1/1     Running   0          14m   10.244.2.15   master2   <none>           <none>
my-daemonset-n2sjb   1/1     Running   0          14m   10.244.1.61   node1     <none>           <none>
my-daemonset-w5jd6   1/1     Running   0          14m   10.244.3.17   master3   <none>           <none>
  • 可以看的出来每台都有创建pod

你可能感兴趣的:(kubernetes,docker,容器)