【发布时间】:2019-01-29 15:24:36
【问题描述】:
我想在集群的所有节点上安排一个 pod。没有例外。当资源不短缺时,DaemonSet 似乎可以胜任。但有时其他 pod 会在某些节点上被调度,这样就没有更多资源可供 DaemonSet 的 pod 被调度。
强制在所有节点上调度 DaemonSet 的 pod 的最佳方法是什么?在 GCP 上运行,因此可用的最新版本是 1.11.5
【问题讨论】:
标签: kubernetes scheduler daemonset
我想在集群的所有节点上安排一个 pod。没有例外。当资源不短缺时,DaemonSet 似乎可以胜任。但有时其他 pod 会在某些节点上被调度,这样就没有更多资源可供 DaemonSet 的 pod 被调度。
强制在所有节点上调度 DaemonSet 的 pod 的最佳方法是什么?在 GCP 上运行,因此可用的最新版本是 1.11.5
【问题讨论】:
标签: kubernetes scheduler daemonset
听起来您可能为 DaemonSets 配置了 default scheduler,而您的 pod 在 kube-scheduler 配置中未配置为 preempted(已禁用抢占):
apiVersion: componentconfig/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
默认值为disablePreemption: false,因此如果您的 pod 没有被抢占以允许安排守护程序集,则存在其他问题。
如果您使用DaemonSet scheduler(k8s 1.11 或更早版本上的默认值)DaemonSet pod,则无论如何都应该调度。 (如果他们不是,那么还有其他问题)。
【讨论】:
事实证明,这在 k8s 1.12 及更高版本中得到了解决。他们制作了默认调度程序来处理守护程序集。
【讨论】: