跳转至

DaemonSet 应用

DaemonSet 资源

  • DaemonSet 用于在集群的每个节点上运行特定的 Pod,确保每个节点都有一个 Pod 的副本在运行。这对于在集群中的每个节点上运行后台任务、监控代理、日志收集器等常驻性任务非常有用。

  • aemonSet 不会根据副本数来调度 Pod。相反,它会根据节点的数量自动创建或删除 Pod,以确保每个节点上都有一个 Pod 的副本在运行。

  1. 编写YAML文件
    编写 daemonset-nginx.yml
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: daemonset-nginx         
    spec:
      selector:
        matchLabels:
          name: nginx-ds
      template:
        metadata:
          labels:
            name: nginx-ds
        spec:
          tolerations:                      # tolerations代表容忍
          - key: node-role.kubernetes.io/master  # 能容忍的污点key
            effect: NoSchedule   # kubectl explain pod.spec.tolerations查看(能容忍的污点effect)
          containers:
          - name: nginx
            image: nginx:1.15-alpine
            imagePullPolicy: IfNotPresent
            resources:    # resources资源限制是为了防止master节点的资源被占太多(根据实际情况配置)
              limits:
                memory: 100Mi
              requests:
                memory: 100Mi
    
  2. apply 应用 YAML 文件
    [root@k8smaster001 ~]# kubectl apply -f daemonset-nginx.yml 
    daemonset.apps/daemonset-nginx created
    
  3. 验证
    [root@k8smaster001 ~]# kubectl get daemonset
    NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset-nginx   2         2         1       2            1           <none>          23s
    
[root@k8smaster001 ~]# kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP              NODE           NOMINATED NODE   READINESS GATES
daemonset-nginx-jl7lj   1/1     Running   0          90s   10.244.35.59    k8sworker002   <none>           <none>
daemonset-nginx-n2mpr   1/1     Running   0          90s   10.244.87.228   k8sworker001   <none>           <none>

k8s集群中每个 worker 节点都会运行一个pod