Ограничить количество модулей на узел - PullRequest
3 голосов
/ 24 февраля 2020

Я пытаюсь ограничить количество модулей на каждый узел в моем кластере. Мне удалось добавить глобальный лимит на узел из kubeadm init с файлом конфигурации:

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
networking:
  podSubnet: <subnet>
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 10

Это не совсем хорошо, потому что лимит применяется даже на главном узле (где запущено несколько модулей системы kube и количество стручков здесь может увеличиться более чем на 10). Я хотел бы сохранить значение по умолчанию в init и изменить значение при соединении на каждом узле. Я нашел кое-что:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 10
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: "<api_endpoint>"
    token: "<token>"
    unsafeSkipCAVerification: true

, но даже если не появляется сообщение об ошибке / предупреждение, кажется, что значение maxPods игнорируется. Я могу создать более 10 модулей для этого указанного c узла. Также kubectl get node <node> -o yaml returns status.capacity.pods со значением по умолчанию (110). Как я могу действовать, чтобы применить этот предел для каждого узла?

Я хотел бы отметить, что у меня есть базовые / ограниченные знания, связанные с Kubernetes.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 24 февраля 2020

Файл config.yaml находится в /var/lib/kubelet. Этот файл конфигурации генерируется из карты конфигурации kubelet в пространстве имен системы kube при запуске kubeadm join. Частичное содержимое файла показано ниже.

apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 0s
    cacheUnauthorizedTTL: 0s
clusterDNS:
- 10.96.0.10
maxPods: 10

Вы можете изменить этот файл и добавить параметр maxPods, а затем перезапустить kubelet на узле.

sudo systemctl restart kubelet 

В настоящее время в соединении kubeadm невозможно передать файл конфигурации kubelet.

0 голосов
/ 24 февраля 2020

Единственное решение, которое я знаю, это установить максимальное количество стручков на узел с помощью опции kubelet --max-pods.

...