Kubernetes воссоздает модуль, если узел переходит в автономный режим - PullRequest
0 голосов
/ 06 декабря 2018

Я начал работать с образами докеров и настроил Kubernetes.Я все исправил, но у меня возникли проблемы с таймаутом воссоздания модуля.

Если один модуль работает на одном конкретном узле и если я его выключил, потребуется ~ 5 минут, чтобы восстановить модуль на другомонлайн-узел.

Я проверил все возможные конфигурационные файлы, также установил все флаги pod-eviction-timeout, горизонтальный-pod-autoscaler-downscale, горизонтальный-pod-autoscaler-downscale-delay, но он все ещене работает.

Текущая конфигурация диспетчера контроллера куба:

spec:
 containers:
 - command:
   - kube-controller-manager
   - --address=192.168.5.135
   - --allocate-node-cidrs=false
   - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
   - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
   - --client-ca-file=/etc/kubernetes/pki/ca.crt
   - --cluster-cidr=192.168.5.0/24
   - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
   - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
   - --controllers=*,bootstrapsigner,tokencleaner
   - --kubeconfig=/etc/kubernetes/controller-manager.conf
   - --leader-elect=true
   - --node-cidr-mask-size=24
   - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
   - --root-ca-file=/etc/kubernetes/pki/ca.crt
   - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
   - --use-service-account-credentials=true
   - --horizontal-pod-autoscaler-downscale-delay=20s
   - --horizontal-pod-autoscaler-sync-period=20s
   - --node-monitor-grace-period=40s
   - --node-monitor-period=5s
   - --pod-eviction-timeout=20s
   - --use-service-account-credentials=true
   - --horizontal-pod-autoscaler-downscale-stabilization=20s
image: k8s.gcr.io/kube-controller-manager:v1.13.0

Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Вот что происходит, когда узел умирает или переходит в автономный режим:

  1. Kubelet передает свой статус мастерам с помощью --node-status-update-fequency=10s.
  2. Узел отключается
  3. kube-controller-manager отслеживает все узлы с помощью --node-monitor-period=5s
  4. kube-controller-manager увидит, что узел не отвечает и имеет льготный период --node-monitor-grace-period=40s, пока не сочтет, что узел не работает.PS: Этот параметр должен быть в N x node-status-update-fequency
  5. Как только узел помечен как нездоровый, kube-controller-manager удалит модули на основе --pod-eviction-timeout=5m

Теперь, если выизменив параметр pod-eviction-timeout на 30 секунд, все равно потребуется

 node status update frequency: 10s
 node-monitor-period: 5s
 node-monitor-grace-period: 40s
 pod-eviction-timeout: 30s

Total 70 seconds to evict the pod from node Время node-status-update-fequecy and node-monitor-grace-period также учитывается в node-monitor-grace-period.Вы также можете настроить эти переменные, чтобы еще больше снизить общее время удаления узла.

Это мой файл kube-controller-manager.yaml (присутствует в / etc / kubernetes / manifest для kubeadm):

containers:
  - command:
    - kube-controller-manager
    - --controllers=*,bootstrapsigner,tokencleaner
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    - --pod-eviction-timeout=30s
    - --address=127.0.0.1
    - --use-service-account-credentials=true
    - --kubeconfig=/etc/kubernetes/controller-manager.conf

Я эффективно вижу, как мои модули выселяются в 70s, как только я выключаю свой узел.

EDIT2:

Выполните следующую команду на главном компьютере и убедитесь, что --pod-eviction-timeout приходит как 20s.

[root@ip-10-0-1-12]# docker ps --no-trunc | grep "kube-controller-manager"

9bc26f99dcfe6ac0e7b2abf22bff67af6060561ee8c0cdff08e11c3a479f182c   sha256:40c8d10b2d11cbc3db2e373a5ffce60dd22dbbf6236567f28ac6abb7efbfc8a9                     
"kube-controller-manager --leader-elect=true --use-service-account-credentials=true --root-ca-file=/etc/kubernetes/pki/ca.crt --cluster-signing-key-file=/etc/kubernetes/pki/ca.key \
**--pod-eviction-timeout=30s** --address=127.0.0.1 --controllers=*,bootstrapsigner,tokencleaner --kubeconfig=/etc/kubernetes/controller-manager.conf --service-account-private-key-file=/etc/kubernetes/pki/sa.key --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --allocate-node-cidrs=true --cluster-cidr=192.168.13.0/24 --node-cidr-mask-size=24"        

Если здесь --pod-eviction-timeout равно 5m, а не 20s, то ваши изменения не будут применены должным образом.

...