我想在集群的所有节点上安排一个Pod。没有例外。当资源不短缺时,DaemonSet似乎可以完成这项工作。但是有时其他Pod会在某些节点上进行调度,这样就没有更多资源可供DaemonSet的Pod调度。
强制在所有节点上调度DaemonSet的pod的最佳方法是什么?在GCP上运行,因此可用的最新版本是1.11.5
答案 0 :(得分:0)
在kube-scheduler配置中,可能您为DaemonSet设置了default scheduler
的声音,而未将pod设置为preempted(禁用了抢占):
apiVersion: componentconfig/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
默认值为disablePreemption: false
,因此,如果您的Pod没有被抢占以允许调度守护程序集,则还有其他问题。
如果您使用的是DaemonSet scheduler(在k8s 1.11或更早版本上是默认值),则应计划DaemonSet pod。 (如果没有,那么又有其他问题)。
答案 1 :(得分:0)
结果证明,在k8s 1.12及更高版本中可以解决此问题。他们将默认调度程序设置为处理守护程序集。