如何限制每个节点附加托管磁盘的数量 pods
How to limit amount of pods with attached managed disks per node
假设有一个集群,上面有很多不同的部署 运行。一些 pods 使用 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
永远处于状态,但是一些节点在调度时 pods 连接磁盘的数量要少得多。最好限制每个节点附加磁盘的 pods 数量,这样就不会发生此错误。我相信
podAntiAffinity
是我需要的,我知道我可以限制具有相同标签的 pods 在同一节点上进行调度,但我不知道如何允许它,直到节点具有最大数量的 pods有磁盘。
我安装的是AKS。
az acs create \
--orchestrator-type=kubernetes \
--orchestrator-version 1.7.9 \
--resource-group <resource_group_here> \
--name=<name_here> \
...
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 个磁盘。
这样 pods 毫无问题地分布在节点之间,无法容纳的 pods 会一直处于 Pending 状态,直到它们找到足够的节点来容纳。
假设有一个集群,上面有很多不同的部署 运行。一些 pods 使用 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
永远处于状态,但是一些节点在调度时 pods 连接磁盘的数量要少得多。最好限制每个节点附加磁盘的 pods 数量,这样就不会发生此错误。我相信
podAntiAffinity
是我需要的,我知道我可以限制具有相同标签的 pods 在同一节点上进行调度,但我不知道如何允许它,直到节点具有最大数量的 pods有磁盘。
我安装的是AKS。
az acs create \
--orchestrator-type=kubernetes \
--orchestrator-version 1.7.9 \
--resource-group <resource_group_here> \
--name=<name_here> \
...
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 个磁盘。
这样 pods 毫无问题地分布在节点之间,无法容纳的 pods 会一直处于 Pending 状态,直到它们找到足够的节点来容纳。