请参考官方 Kubernetes 文档:DaemonSets
DaemonSet 是 Kubernetes 的一种控制器,用于确保所有(或部分)集群节点上运行指定 Pod 的一个副本。与以应用为中心的 Deployment 不同,DaemonSet 以节点为中心,非常适合部署集群范围的基础设施服务,如日志收集器、监控代理或存储守护进程。
DaemonSet 操作注意事项
行为特征
Pod 分布:DaemonSet 会在每个符合条件的可调度 Node 上部署且仅部署一个 Pod 副本:
nodeSelector
或 nodeAffinity
(如果指定)。NotReady
。NoSchedule
或 NoExecute
的 Taints,除非 Pod 模板中配置了相应的 Tolerations。Pod 数量计算公式:DaemonSet 管理的 Pod 数量等于符合条件的节点数。
双重角色节点处理:同时担任 控制平面 和 工作节点 角色的节点,只会运行一个 DaemonSet 的 Pod 实例(无论其角色标签如何),前提是节点可调度。
关键限制条件(排除节点)
Unschedulable: true
的节点(例如通过 kubectl cordon
设置)。NotReady
状态的节点。kubectl
。获取镜像地址。镜像来源可以是平台管理员通过工具链集成的镜像仓库,也可以是第三方平台的镜像仓库。
对于前者,管理员通常会将镜像仓库分配给您的项目,您可以使用其中的镜像。如果找不到所需的镜像仓库,请联系管理员分配。
对于第三方平台的镜像仓库,请确保当前集群可以直接拉取该镜像。
在 Container Platform 中,左侧导航栏进入 Workloads > DaemonSets。
点击 Create DaemonSet。
选择或输入镜像地址,点击 确认。
注意:使用 Web 控制台集成的镜像仓库时,可以通过 已集成 过滤镜像。集成项目名称 例如 images (docker-registry-projectname),其中包含该 Web 控制台中的项目名 projectname 以及镜像仓库中的项目名 containers。
在 基本信息 区域,配置守护进程集工作负载的声明式参数:
参数 | 说明 |
---|---|
更多 > 更新策略 | 配置 DaemonSet Pod 零停机更新的 rollingUpdate 策略。最大不可用数 ( maxUnavailable ):更新期间允许临时不可用的最大 Pod 数量。支持绝对值(如 1)或百分比(如 10%)。示例:若有 10 个节点且 maxUnavailable 为 10%,则 floor(10 * 0.1) = 1 个 Pod 可不可用。注意事项:
|
Pod 部分,请参考 Deployment - Configure Pod
Containers 部分,请参考 Deployment - Configure Containers
点击 创建。
点击 创建 后,守护进程集将:
✅ 自动在所有符合条件的节点上部署 Pod 副本,条件包括:
满足 nodeSelector
条件(如果定义)。
配置了 tolerations
(允许调度到带有污点的节点)。
节点处于 Ready
状态且 Schedulable: true
。
❌ 排除以下节点:
带有 NoSchedule
污点的节点(除非显式容忍)。
手动设置为不可调度的节点(如通过 kubectl cordon
)。
处于 NotReady
或 Unschedulable
状态的节点。
当修改守护进程集的 Pod 模板(例如更改容器镜像或添加卷挂载)时,Kubernetes 默认会执行滚动更新(前提是 updateStrategy.type
为 RollingUpdate
,这是默认值)。
example-daemonset.yaml
)并保存修改,然后应用:删除守护进程集及其管理的所有 Pod:
Replicas
、image
、updateStrategy
等参数。