Вот что происходит, когда узел умирает или переходит в автономный режим:
- Kubelet передает свой статус мастерам с помощью
--node-status-update-fequency=10s
. - Узел отключается
- kube-controller-manager отслеживает все узлы с помощью
--node-monitor-period=5s
- kube-controller-manager увидит, что узел не отвечает и имеет льготный период
--node-monitor-grace-period=40s
, пока не сочтет, что узел не работает.PS: Этот параметр должен быть в N x node-status-update-fequency
- Как только узел помечен как нездоровый, 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
, то ваши изменения не будут применены должным образом.