在k8s群集(GCP)上,在节点自动扩展期间,我的pod会自动重新安排。它们在自动缩放过程中执行计算并将结果保留在内存中的主要问题。由于重新安排时间,广告连播会丢失所有结果和任务。
我想为指定的广告连播禁用重新计划。我知道一些可能的解决方案:
我尝试了PDB并将minAvailable设置为1,但是没有用。我发现您还可以设置maxUnavailable = 0,会更有效吗?将maxUnavailable设置为0时,我无法确切了解其行为。您能进一步解释一下吗?谢谢!
链接以获取更多详细信息-https://github.com/dask/dask-kubernetes/issues/112
答案 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)
您是否指定资源请求和限制?