我想在任何kubernetes节点上将允许的最大pod(我的应用程序需要/创建)设置为'3'(在默认命名空间中)。
当我在maxPods: 3
中设置/var/lib/kubelet/config.yaml
时,看起来它还包括kubernetes内部(namespace: 'kube-system'
)在此数字中隐藏的吊舱。换句话说,除非我将maxPods设置为7(在也是Master的节点上),否则无法在默认命名空间中创建任何应用程序窗格。
我的节点(我将node1.co.com上的maxPods
设置为'8',我只能在默认命名空间中获得2个应用程序窗口):
$ kubectl get nodes -o json | jq '.items[] | {name: .metadata.name, cap: .status.capacity}'
{
"name": "node1.co.com",
"cap": {
"cpu": "2",
"ephemeral-storage": "8649700Ki",
"hugepages-2Mi": "0",
"memory": "8007036Ki",
"pods": "8"
}
}
{
"name": "node2.co.com",
"cap": {
"cpu": "2",
"ephemeral-storage": "8649700Ki",
"hugepages-2Mi": "0",
"memory": "8009324Ki",
"pods": "9"
}
}
任何其他pod都处于暂挂状态:
$ kubectl create -f single-node-deployement4.yaml
$ kubectl get pods -o=wide --all-namespaces | grep Pending
default single-node-deployment4-585466c56c-sszdz 0/1 Pending 0 17s <none> <none> <none> <none>
$ kubectl get pods -o = wide --all-namespaces | grep OutOf
kube-system coredns-86c58d9df4-7gb5d 0/1 OutOfpods 0 7d19h <none> node1.co.com <none> <none>
kube-system coredns-86c58d9df4-t6rcj 0/1 OutOfpods 0 7d19h <none> node1.co.com <none> <none>
kubernetes内部pod的数量是不变的,我可以假设最多有三个pod,我可以设置'maxPods: 9'
或者有更好的方法来设置maxPods
吗?
我想你可以达到同样的效果
通过一起使用这些Kubernetes政策/功能:
例:
根据对象计数创建资源配额:
kubectl create namespace limited
# Source: object-count-quota.yaml apiVersion: v1 kind: ResourceQuota metadata: name: object-counts spec: hard: pods: "3"
kubectl create -f ./object-count-quota.yaml -n limited
kubectl describe resourcequota -n limited
使主节点不可调度:
kubectl taint nodes master-node key=value:NoSchedule