Виконує максимально можливий відкат змін, зроблених командами kubeadm init або kubeadm join.
Виконує максимально можливий відкат змін, зроблених на цьому хості командами 'kubeadm init' або 'kubeadm join'
Команда "reset" виконує наступні фази:
preflight Run reset pre-flight checks
remove-etcd-member Remove a local etcd member.
cleanup-node Run 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 | |
Шлях до 'справжньої' кореневої файлової системи хоста. Це змусить kubeadm виконати chroot у вказаний шлях. |
|
kubeadm reset відповідає за очищення локальної файлової системи вузла від файлів, створених за допомогою команд kubeadm init або kubeadm join. Для вузлів панелі управління reset також видаляє з кластера etcd локального члена stacked etcd цього вузла.
kubeadm reset phase можна використовувати для виконання окремих фаз наведеного вище процесу. Щоб пропустити список фаз, ви можете використовувати прапорець --skip-phases, який працює аналогічно до механізмів запуску фаз kubeadm join та kubeadm init.
kubeadm reset також підтримує прапорець --config для передачі структури ResetConfiguration.
kubeadm reset не видалить жодних даних etcd, якщо використовується зовнішній etcd. Це означає, що якщо ви знову виконаєте kubeadm init з використанням тих самих точок доступу etcd, ви побачите стан від попередніх кластерів.
Щоб видалити дані etcd, рекомендується використовувати клієнт, такий як etcdctl, наприклад:
etcdctl del "" --prefix
Дивіться документацію etcd для отримання додаткової інформації.
Втулки 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-адреси та проксі-сервери Service.
Якщо залишити правила без очищення, не повинно виникнути жодних проблем, якщо хост пізніше буде повторно використано як вузол Kubernetes або якщо він слугуватиме для інших цілей.
Якщо ви бажаєте виконати таке очищення, ви можете використати той самий контейнер kube-proxy, який використовувався у вашому кластері, і прапорець --cleanup у бінарному файлі kube-proxy:
docker run --privileged --network=host -v /lib/modules:/lib/modules:ro --rm registry.k8s.io/kube-proxy:v1.37.0 sh -c "kube-proxy --cleanup && echo DONE"
Наприкінці виконання наведеної вище команди має бути виведено DONE. Замість Docker для запуску контейнера ви можете скористатися вашим улюбленим середовищем виконання контейнерів.
Тека $HOME/.kube зазвичай містить конфігураційні файли та кеш kubectl. Хоча залишення вмісту $HOME/.kube/cache без очищення не є проблемою, у цій теці є один важливий файл. Це $HOME/.kube/config, і він використовується kubectl для автентифікації в API-сервері Kubernetes. Після завершення kubeadm init користувачеві пропонується скопіювати файл /etc/kubernetes/admin.conf у розташування $HOME/.kube/config і надати доступ до нього поточному користувачеві.
Команда kubeadm reset не очищує вміст теки $HOME/.kube. Залишення файлу $HOME/.kube/config без видалення може бути проблематичним, залежно від того, хто матиме доступ до цього хосту після виклику kubeadm reset. Якщо той самий кластер продовжує існувати, наполегливо рекомендуємо видалити цей файл, оскільки облікові дані адміністратора, що зберігаються в ньому, залишатимуться дійсними.
Щоб очистити теку, перегляньте її вміст, виконайте резервне копіювання, якщо потрібно, і виконайте наступну команду:
rm -rf $HOME/.kube
Якщо ваш 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