Kubernetes是否支持为DaemonSet配置PodAffinity?此用法是否常见?
Kubernetes DaemonSet与PodAffinity配置问题解答
核心问题解答
- Kubernetes完全支持为DaemonSet配置PodAffinity规则,这是官方允许的调度配置方式。
- 你遇到的其余节点Pod处于Pending状态的原因,是因为使用了
requiredDuringSchedulingIgnoredDuringExecution类型的亲和性规则:该规则强制要求调度节点必须存在带有app.type=with-daemon标签的Pod,否则Pod无法完成调度。没有目标Pod的节点满足不了这个强制条件,所以DaemonSet Pod会一直处于Pending状态。
用法合理性说明
这种通过PodAffinity约束DaemonSet调度范围的用法是常见且合理的,通常用于以下场景:
- 仅在运行特定业务Pod的节点上部署配套的DaemonSet(比如日志采集、监控代理等组件)
- 缩小DaemonSet的运行范围,避免在无业务负载的节点上占用资源
如果你的需求就是仅在存在目标Pod的节点上运行DaemonSet,当前配置是符合预期的;如果想让DaemonSet在所有节点都运行,但优先调度到有目标Pod的节点,可以把规则改成preferredDuringSchedulingIgnoredDuringExecution,示例配置如下:
spec: affinity: podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app.type operator: In values: - with-daemon topologyKey: "kubernetes.io/hostname"
内容的提问来源于stack exchange,提问作者Samuel MA
相关产品推荐
相关产品推荐

