kubeadm reset

Виконує максимально можливий відкат змін, зроблених командами kubeadm init або kubeadm join.

Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.

Опис

Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.

Команда "reset" виконує наступні фази:

preflight           Запуск попередніх перевірок
remove-etcd-member  Вилучення локального учасника etcd.
cleanup-node        Запуск очищення вузла.
kubeadm reset [flags]

Параметри

--cert-dir string     Типово: "/etc/kubernetes/pki"

Шлях до теки, де зберігаються сертифікати. Якщо вказано, очистити цю теку.

--cleanup-tmp-dir

Очистити теку "/etc/kubernetes/tmp"

--config string

Шлях до файлу конфігурації kubeadm.

--cri-socket string

Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.

--dry-run

Не вносити жодних змін; лише вивести, що буде зроблено.

-f, --force

Виконати reset вузла без запиту на підтвердження.

-h, --help

довідка reset

--ignore-preflight-errors strings

Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.

--kubeconfig string     Типово: "/etc/kubernetes/admin.conf"

Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.

--skip-phases strings

Список фаз, які слід пропустити

Параметри успадковані від батьківських команд

--rootfs string

Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях

Робочий процес

kubeadm reset відповідає за очищення файлової системи вузла від файлів, створених за допомогою команд kubeadm init або kubeadm join. Для вузлів панелі управління reset також видаляє локального учасника стека etcd цього вузла з кластера etcd.

kubeadm reset phase можна використовувати для виконання окремих фаз наведеного вище робочого процесу. Щоб пропустити список фаз, ви можете використовувати прапорець --skip-phases, який працює аналогічно до роботи з фазами kubeadm join та kubeadm init.

kubeadm reset також підтримує прапорець --config для передачі структури ResetConfiguration.

Очищення зовнішніх членів etcd

kubeadm reset не видалить жодних даних etcd, якщо використовується зовнішній etcd. Це означає, що якщо ви знову виконаєте kubeadm init з використанням тих самих точок доступу etcd, ви побачите стан від попередніх кластерів.

Щоб видалити дані etcd, рекомендується використовувати клієнт, такий як etcdctl, наприклад:

etcdctl del "" --prefix

Дивіться документацію etcd для отримання додаткової інформації.

Очищення конфігурації CNI

Втулки CNI використовують теку /etc/cni/net.d для зберігання своїх конфігурацій. Команда kubeadm reset не очищує цю теку. Залишення конфігурації втулка CNI на хості може бути проблематичним, якщо той самий хост пізніше буде використано як новий вузол Kubernetes, а у цьому кластері буде розгорнуто інший втулок CNI. Це може призвести до конфлікту конфігурації між втулками CNI.

Щоб очистити теку, створіть резервну копію її вмісту, якщо потрібно, а потім виконайте наступну команду:

sudo rm -rf /etc/cni/net.d

Очищення правил мережевого трафіку

Команда kubeadm reset не очищує правила iptables, nftables або IPVS, застосовані до вузла kube-proxy. Цикл контролю в kube-proxy гарантує, що правила на кожному вузлі будуть синхронізовані. Додаткові відомості наведено у статті Віртуальні IP-адреси та службові проксі-сервери.

Якщо залишити правила без очищення, не повинно виникнути жодних проблем, якщо хост пізніше буде повторно використано як вузол Kubernetes або якщо він слугуватиме для інших цілей.

Якщо ви бажаєте виконати таке очищення, ви можете використати той самий контейнер kube-proxy, який використовувався у вашому кластері, і прапорець --cleanup у бінарному файлі kube-proxy:

docker run --privileged --rm registry.k8s.io/kube-proxy:v1.32.0 sh -c "kube-proxy --cleanup && echo DONE"

У результаті виконання наведеної вище команди має бути виведено DONE. Замість Docker для запуску контейнера ви можете скористатися вашим улюбленим середовищем виконання контейнерів.

Очищення $HOME/.kube

Тека $HOME/.kube зазвичай містить конфігураційні файли та кеш kubectl. Хоча не очищення вмісту $HOME/.kube/cache не є проблемою, у цій теці є один важливий файл. Це $HOME/.kube/config і він використовується kubectl для автентифікації на сервері Kubernetes API. Після завершення kubeadm init користувачеві буде запропоновано скопіювати файл /etc/kubernetes/admin.conf до теки $HOME/.kube/config і надати доступ до нього поточному користувачеві.

Команда kubeadm reset не очищує вміст теки $HOME/.kube. Залишення файлу $HOME/.kube/config без видалення може бути проблематичним, залежно від того, хто матиме доступ до цього хосту після виклику kubeadm reset. Якщо той самий кластер продовжує існувати, наполегливо рекомендуємо видалити цей файл, оскільки облікові дані адміністратора, що зберігаються в ньому, залишатимуться дійсними.

Щоб очистити теку, перегляньте її вміст, виконайте резервне копіювання, якщо потрібно, і виконайте наступну команду:

rm -rf $HOME/.kube

Відповідне завершення роботи kube-apiserver

Якщо ваш kube-apiserver налаштований з прапорцем --shutdown-delay-duration, ви можете виконати наступні команди, щоб спробувати завершити роботу відповідним чином для запущеного Pod API сервера, перед тим як виконати kubeadm reset:

yq eval -i '.spec.containers[0].command = []' /etc/kubernetes/manifests/kube-apiserver.yaml
timeout 60 sh -c 'while pgrep kube-apiserver >/dev/null; do sleep 1; done' || true

Що далі

  • kubeadm init для створення вузла панелі управління Kubernetes
  • kubeadm join для приєднання робочого вузла Kubernetes до кластера
Змінено January 25, 2025 at 10:58 PM PST: sync with upstream (38ab9ff41d)