Kubernetes maxPods int32 также включает в себя свои модули по умолчанию - PullRequest
1 голос
/ 14 марта 2019

Я хочу установить максимально допустимое количество модулей (которое требуется / нужно создать для моего приложения) на любом узле kubernetes как «3» (в пространстве имен по умолчанию).

Когда я устанавливаю maxPods: 3 в /var/lib/kubelet/config.yaml, похоже, что в это число входят также стручки, созданные внутренне kubernetes (namespace: 'kube-system'). Другими словами, если я не установлю для maxPods значение 7 (на узле, который также является главным), я не смогу создать модуль приложения, созданный в пространстве имен по умолчанию.

Мой узел (я установил maxPods на node1.co.com как '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"
  }
}

Все дополнительные модули находятся в состоянии ожидания:

$ 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 постоянным, и я могу предположить, что у меня максимум три модуля, я могу установить 'maxPods: 9' или есть лучший способ установить maxPods?

1 Ответ

0 голосов
/ 19 марта 2019

Я думаю, вы могли бы достичь того же результата

  • ограничение # стоек на пространство имен
  • не планировать на главном узле

при совместном использовании этих политик / функций Kubernetes:

  1. ResourceQuota (квота подсчета объектов)
  2. Узел Taint

Пример: * * один тысяча двадцать-одна

Создание квоты ресурса на основе количества объектов:

  • 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
...