k8s中DaemonSet实战详解

发布时间:2023年12月30日

一、DaemonSet介绍
DaemonSet 的主要作用,是在 Kubernetes 集群里,运行一个 Daemon Pod。DaemonSet 只管理 Pod 对象,然后通过 nodeAffinity 和 Toleration 这两个调度器参数的功能,保证了每个节点上有且只有一个 Pod。

二、DaemonSet 使用场景
每个节点上只有一个这样的 Daemon Pod 实例,然后当有新的节点加入 Kubernetes 集群后,该 Pod 会自动地在新节点上被创建出来。当旧节点被删除后,它上面的 Pod 也会相应地被回收掉。Daemon Pod 的意义确实是非常重要的。比如的作用:

? 网络插件的 Agent 组件,都必须运行在每一个节点上,用来处理这个节点上的容器网络。

? 存储插件的 Agent 组件,也必须运行在每一个节点上,用来在这个节点上挂载远程存储目录,操作容器的 Volume 目录,比如:glusterd、ceph。

? 监控组件和日志组件,也必须运行在每一个节点上,负责这个节点上的监控信息和日志搜集,比如:fluentd、logstash、Prometheus 等。

三、DaemonSet调度
DaemonSet通过kubernetes默认的调度器scheduler会在所有的node节点上运行一个Pod副本,可以通过如下三种方式将Pod运行在部分节点上:

? 指定nodeName节点运行
? 通过标签运行nodeSelector
? 通过亲和力调度node Affinity和node Anti-affinity

DaemonSet调度算法用于实现将Pod运行在特定的node节点上

四、示例
相较于Deployment,StatefulSet,DaemonSet没有副本数,因为他是一个节点启动一个,容器。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.2
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 200Mi
            cpu:100m
          requests:
            cpu: 100m
            memory: 200Mi
      terminationGracePeriodSeconds: 30

五、更新与回滚

kubectl set image  ds nginx nginx=nginx:1.15.3 -n test --record

kubectl rollout history ds nginx --revision=2 -n test

#更新多次后查看更新记录
kubectl rollout history ds nginx -n test
文章来源:https://blog.csdn.net/weixin_45432833/article/details/135298237
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。