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