请参考官方 Kubernetes 文档:DaemonSets
DaemonSet 是 Kubernetes 中的一种控制器,用于确保所有(或部分)集群节点上运行指定 Pod 的一个副本。与以应用为中心的 Deployment 不同,DaemonSet 以节点为中心,非常适合部署集群范围的基础设施服务,如日志收集器、监控代理或存储守护进程。
DaemonSet 操作注意事项
行为特征
Pod 分布:DaemonSet 会在每个符合条件的可调度节点上部署且仅部署一个 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。
选择或输入镜像地址,点击 Confirm。
注意:使用 Web 控制台集成的镜像仓库时,可以通过 Already Integrated 过滤镜像。集成项目名称示例:images (docker-registry-projectname),其中包含当前 Web 控制台中的项目名 projectname 和镜像仓库中的项目名 containers。
在 Basic Info 部分,配置守护进程集工作负载的声明式参数:
参数 | 说明 |
---|---|
More > Update Strategy | 配置守护进程集 Pod 的 rollingUpdate 策略,实现零停机更新。最大不可用数 ( maxUnavailable ):更新过程中允许暂时不可用的最大 Pod 数量。支持绝对值(如 1)或百分比(如 10%)。示例:若有 10 个节点, maxUnavailable 设置为 10%,则允许最多 floor(10 * 0.1) = 1 个 Pod 不可用。注意事项:
|
Pod 部分,请参考 Deployment - Configure Pod
Containers 部分,请参考 Deployment - Configure Containers
点击 Create。
点击 Create 后,守护进程集将:
✅ 自动在所有符合以下条件的节点上部署 Pod 副本:
nodeSelector
条件(如果定义)。tolerations
(允许调度到带有污点的节点)。Ready
状态且 Schedulable: true
。❌ 排除节点:
NoSchedule
污点的节点(除非显式容忍)。kubectl cordon
)。NotReady
或 Unschedulable
状态的节点。获取某命名空间下所有守护进程集的摘要信息:
获取指定守护进程集的详细信息,包括事件和 Pod 状态:
当修改守护进程集的 Pod 模板(例如更改容器镜像或添加卷挂载)时,Kubernetes 默认会执行滚动更新(前提是 updateStrategy.type
为 RollingUpdate
,这是默认值)。
首先编辑 YAML 文件(如 example-daemonset.yaml
)进行所需修改,然后应用:
可以监控滚动更新的进度:
删除守护进程集及其管理的所有 Pod:
Replicas
、image
、updateStrategy
等参数。