如何限制每个节点附加托管磁盘的pod数量

时间:2018-05-25 15:42:22

标签: azure kubernetes limit quotas

想象一下,有一个集群上运行着许多不同的部署。一些pod使用PersistentVolumes(Azure磁盘)。 Azure中有一个限制可以将多少磁盘装入VM,这会导致计划错误,如

Status=409 Code="OperationNotAllowed" Message="The maximum number of data disks allowed to be attached to a VM of this size is 8

Pods留在

Waiting: Container creating

永远状态,但是一些节点在调度时具有更少的具有附加磁盘的pod。限制每个节点附加磁盘的pod数量会很棒,所以这个错误永远不会发生。我相信

podAntiAffinity

是我需要的,我知道我可以限制具有相同标签的pod来自同一节点上的调度,但我不知道如何允许它直到节点具有最大数量的带磁盘的pod。

我的安装是AKS。

az acs create \ --orchestrator-type=kubernetes \ --orchestrator-version 1.7.9 \ --resource-group <resource_group_here> \ --name=<name_here> \ ...

1 个答案:

答案 0 :(得分:0)

KUBE_MAX_PD_VOLS是您要寻找的。默认情况下, Azure磁盘的值为16。因此,您可以使用具有相同限制的附加磁盘实例(16)或将其设置为首选值。您可以在github

看到声明的位置

您应该在调度程序声明中设置此环境变量。我在/etc/kubernetes/manifests/kube-scheduler.yaml中找到了调度程序声明。现在看起来是这样: apiVersion: "v1" kind: "Pod" metadata: name: "kube-scheduler" ... spec: containers: - name: "kube-scheduler" ... env: - name: KUBE_MAX_PD_VOLS value: "8" ...

注意spec.containers.env.KUBE_MAX_PD_VOLS设置-防止在每个节点上调度8个以上的磁盘。

通过这种方式,吊舱可以在节点之间扩散而不会出现任何问题,无法容纳的吊舱将保持待定状态,直到它们找到足够的节点来容纳。