172 похожих чатов

Кто мне может подсказать как правильно дрейнить ноды с кластера?

Вроде все делается по доке куба по graceful shutdown
Есть условный кластер который провижнит aws-ec2 ноды через autoscaler. Простаивающие ноды нужно удалять. Для этого существует CloudControllerManager. Он должен удалить ноду из кластера, после того как она допустим выключится или удалится из aws.
После введения ноды обратно через kubeadm join появляются проблемы вида:
Warning FailedCreatePodSandBox 7s (x4 over 34s) kubelet, tw02 (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "9e90d1f770448d82f390939ec560f1668b520f2bb24b82d7a0437ac1e0e3e411" network for pod "updatedevdbv01updateham-e35fd36d9b1c440289cee988f8ff1121": networkPlugin cni failed to set up pod "updatedevdbv01updateham-e35fd36d9b1c440289cee988f8ff1121_airflow" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.117.1/24
Я правильно понимаю что "graceful delete" в данном случае должен быть по схеме:
- на ноду ничего не падает
- делается drain node(удалить поды с тачки и если дизрапшен стоит, перекинуть на соседа)
- нода уходит в статус unschedulable
- нода удаляется
- CloudControllerManager видит что нода недоступна физически и удаляет ее из кластера

Такая схема правильная?

Кажется что CCM тупо удаляет ноду, а потом пытается после ре-джойна шедулить на нее поды с корявыми адресами. Или неправильно думаю?

2 ответов

42 просмотра

У меня тупой кластер по типу bare-metal есть. Я если хочу ноду вывести из кластера делаю: kubectl cordon <node_name>, что делает ее не доступной для шедулинга новых подов. kubectl drain <node_name>, выселяет все поды с этой ноды и шудулит их на доступных нодах. kubectl delete <node_name>, удаляет ноду из кластера

схема правильная, но ты потом ноду не трогаешь и не ресетишь? Тогда если ввести её обратно на cni0 у неё будет неправильные адреса, о чем кубелет тебе и сообщает

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта