六、K8S-DaemonSet(DS)

DaemonSet:简称DS,守护进程控制器

        DS的主要作用,是在kubernetes集群里,运行一个daemon pod。DS只管理POD 对象,然后通过nodeAffinity和Toleration这两个调度器的小功能,保证每个节点上有且只有一个pod。

特征:

  1. 集群内的每个节点都运行这一个相同的pod
  2. 当有新节点接入集群后,该pod会自动在新节点上创建
  3. 在删除节点时,对应的pod 也不回删除
  4. 会跟踪每个pod 的状态,当这个pod出现异常时,Crash掉了,会及时的去recovery这个状态

典型用法

  1. 在每个节点上运行集群的守护进程
  2. 在每个节点上运行日志收集守护进程。
  3. 在每个节点上运行监控收集进程

案例:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemon
  labels:
    app: nginx
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeSelector:
        ds: "true"
      containers:
      - name: nginx
        image: nginx:1.15.3
        ports:
        - containerPort: 80
          name: nginx
  updateStrategy:
    #rollingUpdate:
    #  maxUnavailable: 1
    #type: RollingUpdate
    type: OnDelete

创建完成之后就可以看到在每个节点上有一个pod

[root@k8s-master-1 test]# kubectl get pod -owide
NAME                  READY   STATUS    RESTARTS   AGE    IP             NODE         NOMINATED NODE   READINESS GATES
busybox               1/1     Running   11         46h    10.244.1.85    k8s-node-2   <none>           <none>
daemon-s5lnb          1/1     Running   0          7m1s   10.244.1.93    k8s-node-2   <none>           <none>
daemon-wjv2k          1/1     Running   0          7m4s   10.244.0.120   k8s-node-1   <none>           <none>

#如果不想在某一个节点创建DaemonSet,那么就给需要创建DS的节点打一个标签
[root@k8s-master-1 test]# kubectl label node k8s-node-2 ds=true
node/k8s-node-2 labeled

#然后在yaml文档中添加标签spec.template.spec.nodeSelector: ds="true"

#然后更新yaml文件
[root@k8s-master-1 test]# kubectl replace -f DaemonSet.yaml 
daemonset.apps/daemon replaced

#就看到只在节点2上创建了DS
[root@k8s-master-1 test]# kubectl get pod -owide
NAME                  READY   STATUS    RESTARTS   AGE    IP             NODE         NOMINATED NODE   READINESS GATES
daemon-xwtz8          1/1     Running   0          9s     10.244.1.94    k8s-node-2   <none>           <none>

DaemonSet的更新和回滚和Deployment相同

[root@k8s-master-1 test]# kubectl get node --show-labels   查看标签
[root@k8s-master-1 test]# kubectl rollout history ds daemon  查看历史版本记录
[root@k8s-master-1 test]# kubectl rollout undo ds daemon  回滚
[root@k8s-master-1 test]# kubectl set image ds daemon nginx=nginx:1.15.4 --record

相关推荐

  1. K8S-DaemonSet(DS)

    2024-01-13 11:58:07       48 阅读
  2. k8s DaemonSet

    2024-01-13 11:58:07       32 阅读
  3. k8sDaemonSet实战详解

    2024-01-13 11:58:07       62 阅读
  4. k8s_DaemonSet和Deployment区别

    2024-01-13 11:58:07       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 11:58:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 11:58:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 11:58:07       82 阅读
  4. Python语言-面向对象

    2024-01-13 11:58:07       91 阅读

热门阅读

  1. 前端开发中需要注意的CSS命名规则以及书写顺序

    2024-01-13 11:58:07       56 阅读
  2. Flink算子简单测试样例

    2024-01-13 11:58:07       59 阅读
  3. 在矩阵回溯中进行累加和比较的注意点

    2024-01-13 11:58:07       56 阅读
  4. 数据分析---SQL(2)

    2024-01-13 11:58:07       61 阅读
  5. Python修改二值图像某特定颜色

    2024-01-13 11:58:07       53 阅读
  6. 微服务入门介绍(一)

    2024-01-13 11:58:07       39 阅读
  7. 编程笔记 html5&css&js 037 CSS选择器

    2024-01-13 11:58:07       44 阅读