2026/4/18 19:30:27
网站建设
项目流程
校园网站如何管理,曲靖房地产网站开发,网站建设杭州公司,appcan wordpress插件一、 DaemonSet 概述 DaemonSet 控制器能够确保 k8s 集群所有的节点都运行一个相同的 pod 副本#xff0c;当向 k8s 集群中增加 node 节点时#xff0c;这个 node 节点也会自动创建一个 pod 副本#xff0c;当 node 节点从 集群移除#xff0c;这些 pod 也会自动删除当向 k8s 集群中增加 node 节点时这个 node 节点也会自动创建一个 pod 副本当 node 节点从 集群移除这些 pod 也会自动删除删除 Daemonset 也会删除它们创建的 podDaemonSet 工作原理daemonset 的控制器会监听 kuberntes 的 daemonset 对象、pod 对象、node 对象这些被监听的对象之变动就会触发 syncLoop 循环让 kubernetes 集群朝着 daemonset 对象描述的状态进行演进。Daemonset 典型的应用场景在集群的每个节点上运行存储比如glusterd 或 ceph。 在每个节点上运行日志收集组件比如flunentd 、 logstash、filebeat 等。 在每个节点上运行监控组件比如Prometheus、 Node Exporter 、collectd 等。DaemonSet 与 Deployment 的区别Deployment 部署的副本 Pod 会分布在各个 Node 上每个 Node 都可能运行好几个副本。DaemonSet 的不同之处在于每个 Node 上最多只能运行一个副本。二、DaemonSet 资源清单文件编写技巧[rootk8s-master01 ~]# kubectl explain ds字段作用apiVersion当前资源使用的 api 版本跟 VERSION: apps/v1 保持 一致kind资源类型跟 KIND: DaemonSet 保持一致metadata元数据定义 DaemonSet 名字的spec定义容器的status状态信息不能改[rootk8s-master01 ~]# kubectl explain ds.spec[rootk8s-master01 ~]# kubectl explain ds.spec.template清单模版apiVersion: apps/v1 kind: DaemonSet metadata: name: pod-controller # ds名称 labels: # 给ds打标签 controller: daemonset spec: revisionHistoryLimit: 3 # 保留历史版本数量默认为10 updateStrategy: # Pod更新策略默认是RollingUpdate type: RollingUpdate # 滚动更新策略。另一种是OnDelete其没有子属性配置参数 rollingUpdate: # 当type为RollingUpdate的时候生效为其配置参数 maxSurge: 25% # 升级过程中可以超过期望的Pod的最大数量可以为百分比也可以为整数。默认是25% maxUnavailable: 25% # 升级过程中最大不可用状态的Pod数量可以为百分比也可以为整数。默认是25% selector: # 选择器通过该控制器管理哪些pod matchLabels: # Labels匹配规则。和matchExpressions类似 app: nginx-pod ###或者 matchExpressions: # Expressions匹配规则。和matchLabels类似 - {key: app, operator: In, values: [nginx-pod]} template: # pod副本创建模板。属性和Pod的属性一样 metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:latest ports: - name: nginx-port containerPort: 80 protocol: TCP三、DaemonSet 使用案例[rootk8s-master01 ~]# cat pod-controller.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: pod-controller labels: controller: daemonset spec: selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:latest ports: - name: nginx-port containerPort: 80 protocol: TCP ##查看 [rootk8s-master01 ~]# kubectl apply -f pod-controller.yaml daemonset.apps/pod-controller created