想象一下,有一个集群上运行着许多不同的部署。一些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> \
...
答案 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个以上的磁盘。
通过这种方式,吊舱可以在节点之间扩散而不会出现任何问题,无法容纳的吊舱将保持待定状态,直到它们找到足够的节点来容纳。