我想在群集的所有节点上安排一个Pod。没有异常(exception)。当资源不短缺时,DaemonSet似乎可以完成此工作。但是有时其他Pod会在某些节点上进行调度,这样就没有更多资源可供DaemonSet的Pod调度。
强制在所有节点上调度DaemonSet的pod的最佳方法是什么?在GCP上运行,因此可用的最新版本是1.11.5
最佳答案
听起来您可能已经为DaemonSet配置了 default scheduler
,并且在kube-scheduler配置中未将pod设置为preempted(禁用了抢占):
apiVersion: componentconfig/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
默认值为
disablePreemption: false
,因此,如果您的Pod没有被抢占以允许调度守护程序集,则还有其他问题。如果您使用的是DaemonSet scheduler(k8s 1.11或更早版本的默认值),则无论如何都要安排DaemonSet容器。 (如果不是,那么又有其他问题)。
关于kubernetes - K8s调度守护程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54030421/