停用广告连播的自动重新安排

时间:2018-11-22 20:05:17

标签: kubernetes google-kubernetes-engine

在k8s群集(GCP)上,在节点自动扩展期间,我的pod会自动重新安排。它们在自动缩放过程中执行计算并将结果保留在内存中的主要问题。由于重新安排时间,广告连播会丢失所有结果和任务。

我想为指定的广告连播禁用重新计划。我知道一些可能的解决方案:

  • nodeSelector(由于集群的动态特性,灵活性不高)
  • pod中断预算PDB

我尝试了PDB并将minAvailable设置为1,但是没有用。我发现您还可以设置maxUnavailable = 0,会更有效吗?将maxUnavailable设置为0时,我无法确切了解其行为。您能进一步解释一下吗?谢谢!

链接以获取更多详细信息-https://github.com/dask/dask-kubernetes/issues/112

2 个答案:

答案 0 :(得分:0)

将max不可用设置为0是一种可行的方法,而且,使用节点池也是一个很好的解决方法。

gcloud container node-pools create <nodepool> --node-taints=app=dask-scheduler:NoSchedule
gcloud container node-pools create <nodepool> --node-labels app=dask-scheduler

这将创建标签为app = dask-scheduler的节点池,在pod规范中,您可以执行以下操作:

nodeSelector:
  app: dask-scheduler

然后将dask调度程序放在不会自动扩展的节点池中。

有一个名为PDB的对象,您可以在其规范中设置maxUnavailable 在maxUnavailable = 1的示例中,这意味着如果您定义了100个吊舱,请始终确保一次仅删除/排水/重新安排一个吊舱 对于maxUnavailable,如果您有2个容器,并且将maxUnavailable设置为0,则它​​将永远不会移除您的容器。是调度程序

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: zk-pdb
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      app: zookeeper

答案 1 :(得分:0)

您是否指定资源请求和限制?