Модуль 5.4: Збої робочих вузлів
Складність:
[MEDIUM]— Критично для роботи кластераЧас на виконання: 45–55 хвилин
Передумови: Модуль 5.1 (Методологія), Модуль 1.1 (Архітектура кластера)
Що ви зможете робити
Розділ «Що ви зможете робити»Після цього модуля ви зможете:
- Діагностувати статус NotReady робочого вузла, перевіряючи kubelet, середовище виконання контейнерів та мережу
- Виправити збої kubelet, спричинені помилками конфігурації, закінченням терміну дії сертифікатів та тиском на ресурси
- Відновити вузол із стану disk pressure, memory pressure та PID pressure
- Виконати drain та cordon вузлів безпечно під час обслуговування, враховуючи PodDisruptionBudgets
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Робочі вузли — це місце, де ваші додатки фактично працюють. Коли вузол виходить з ладу, Під’и евіктуються або застрягають, Сервіси стають недоступними, а додатки страждають. Розуміння того, як діагностувати та виправляти проблеми робочих вузлів, є критичним для підтримки здоров’я кластера та доступності додатків.
Аналогія з фабричним цехом
Якщо площина управління — це менеджмент, робочі вузли — це фабричний цех. kubelet — це начальник цеху — якщо його немає, нічого не робиться. Container runtime — це обладнання — якщо воно зламається, виробництво зупиняється. Ресурси вузла (CPU, пам’ять, диск) — це сировина — вичерпаються, і фабрика зупиниться.
Що ви дізнаєтесь
Розділ «Що ви дізнаєтесь»Після завершення цього модуля ви зможете:
- Діагностувати статус NotReady вузла
- Усувати несправності kubelet
- Виправляти проблеми container runtime
- Обробляти вичерпання ресурсів вузла
- Відновлювати після мережевих збоїв вузла
Чи знали ви?
Розділ «Чи знали ви?»- Heartbeat вузла кожні 10 секунд: kubelet звітує API-серверу кожні 10с. Після 40с без heartbeat вузол позначається як Unknown
- Евікція Підів через 5 хвилин: за замовчуванням Під’и на вузлах NotReady евіктуються через 5 хвилин (pod-eviction-timeout)
- Три умови викликають тиск: MemoryPressure, DiskPressure, PIDPressure — будь-яка з них у True спричиняє проблеми з розподілом
- kubelet — це не Під: на відміну від компонентів площини управління, kubelet працює як сервіс systemd, а не контейнер
Частина 1: Огляд статусу вузла
Розділ «Частина 1: Огляд статусу вузла»1.1 Розуміння умов вузла
Розділ «1.1 Розуміння умов вузла»┌──────────────────────────────────────────────────────────────┐│ УМОВИ ВУЗЛА ││ ││ Умова Здоровий Значення ││ ───────────────────────────────────────────────────────── ││ Ready True Вузол здоровий, може ││ запускати Під'и ││ MemoryPressure False Пам'яті достатньо ││ DiskPressure False Місця на диску достатньо ││ PIDPressure False ID процесів доступні ││ NetworkUnavailable False Мережа налаштована ││ ││ Будь-яка нездорова умова → проблеми з розподілом ││ Ready=False або Unknown → вузол NotReady ││ │└──────────────────────────────────────────────────────────────┘1.2 Перевірка статусу вузла
Розділ «1.2 Перевірка статусу вузла»# Швидкий статусk get nodes
# Детальні умовиk describe node <node-name> | grep -A 10 Conditions
# Усі вузли з умовамиk get nodes -o custom-columns='NAME:.metadata.name,READY:.status.conditions[?(@.type=="Ready")].status,REASON:.status.conditions[?(@.type=="Ready")].reason'
# Перевірити тиск ресурсівk describe node <node-name> | grep -E "MemoryPressure|DiskPressure|PIDPressure"1.3 Стани статусу вузла
Розділ «1.3 Стани статусу вузла»| Статус | Значення | Типові причини |
|---|---|---|
| Ready | Здоровий, приймає Під’и | Нормальна робота |
| NotReady | Нездоровий | kubelet не працює, мережеві проблеми |
| Unknown | Heartbeat не отримано | Вузол недоступний, kubelet впав |
| SchedulingDisabled | Кордонований | Ручний cordon або обслуговування |
Частина 2: Усунення несправностей kubelet
Розділ «Частина 2: Усунення несправностей kubelet»2.1 Огляд kubelet
Розділ «2.1 Огляд kubelet»┌──────────────────────────────────────────────────────────────┐│ ОБОВ'ЯЗКИ KUBELET ││ ││ ┌──────────────────────────────────────────────────────┐ ││ │ kubelet │ ││ │ │ ││ │ • Реєструє вузол у API-сервері │ ││ │ • Спостерігає за призначенням Підів │ ││ │ • Керує життєвим циклом контейнерів (через runtime) │ ││ │ • Звітує про стан вузла/Підів │ ││ │ • Обробляє проби (liveness, readiness) │ ││ │ • Монтує томи │ ││ │ • Запускає статичні Під'и │ ││ │ │ ││ └──────────────────────────────────────────────────────┘ ││ ││ Якщо kubelet збоїть → Вузол NotReady → Під'и перестають ││ працювати ││ │└──────────────────────────────────────────────────────────────┘2.2 Перевірка статусу kubelet
Розділ «2.2 Перевірка статусу kubelet»# Спочатку SSH на вузолssh <node-name>
# Перевірити статус сервісу kubeletsudo systemctl status kubelet
# Перевірити чи kubelet працюєps aux | grep kubelet
# Перевірити логи kubeletsudo journalctl -u kubelet -f
# Перевірити останні помилки kubeletsudo journalctl -u kubelet --since "10 minutes ago" | grep -i error2.3 Типові проблеми kubelet
Розділ «2.3 Типові проблеми kubelet»| Проблема | Симптом | Діагностика | Виправлення |
|---|---|---|---|
| kubelet зупинений | Вузол NotReady | systemctl status kubelet | systemctl start kubelet |
| kubelet падає циклічно | Вузол мерехтить | journalctl -u kubelet | Виправити конфіг, перевірити логи |
| Неправильний конфіг | Не запускається | Помилка в логах | Виправити /var/lib/kubelet/config.yaml |
| Не може дістатись API | NotReady | Тайм-аут мережі в логах | Перевірити мережу, firewall |
| Проблеми з сертифікатами | Помилки TLS | Помилки сертифікатів у логах | Оновити сертифікати |
| Container runtime не працює | Не може створити Під’и | Помилки runtime | Виправити containerd/docker |
2.4 Виправлення проблем kubelet
Розділ «2.4 Виправлення проблем kubelet»kubelet не працює:
# Запустити kubeletsudo systemctl start kubelet
# Увімкнути автозапускsudo systemctl enable kubelet
# Перевірити статусsudo systemctl status kubeletПроблеми конфігурації kubelet:
# Перевірити файл конфігурації kubeletcat /var/lib/kubelet/config.yaml
# Перевірити прапорці kubeletcat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# Після виправлення конфігу перезавантажити та перезапуститиsudo systemctl daemon-reloadsudo systemctl restart kubeletПроблеми з сертифікатами kubelet:
# Перевірити шляхи сертифікатівcat /var/lib/kubelet/config.yaml | grep -i cert
# Перевірити наявність сертифікатівls -la /var/lib/kubelet/pki/
# Для прострочених сертифікатів може знадобитись перепід'єднання вузла# На площині управління: kubeadm token create --print-join-command# На робочому вузлі: kubeadm reset && kubeadm join ...Частина 3: Усунення несправностей Container Runtime
Розділ «Частина 3: Усунення несправностей Container Runtime»3.1 Огляд Container Runtime
Розділ «3.1 Огляд Container Runtime»┌──────────────────────────────────────────────────────────────┐│ СТЕК CONTAINER RUNTIME ││ ││ kubelet ││ │ ││ │ CRI (Container Runtime Interface) ││ ▼ ││ containerd (або docker, cri-o) ││ │ ││ │ OCI (Open Container Initiative) ││ ▼ ││ runc (низькорівневий runtime) ││ │ ││ ▼ ││ Ядро Linux (cgroups, namespaces) ││ │└──────────────────────────────────────────────────────────────┘3.2 Перевірка Container Runtime
Розділ «3.2 Перевірка Container Runtime»# Перевірити containerd (найпоширеніший)sudo systemctl status containerdsudo crictl info
# Перевірити сокет container runtimels -la /run/containerd/containerd.sock
# Перелік контейнерів через crictlsudo crictl ps
# Перелік образівsudo crictl images3.3 Типові проблеми Runtime
Розділ «3.3 Типові проблеми Runtime»| Проблема | Симптом | Діагностика | Виправлення |
|---|---|---|---|
| containerd зупинений | Під’и ContainerCreating | systemctl status containerd | systemctl start containerd |
| Відсутній сокет | Помилки kubelet | Перевірити шлях сокету | Перезапустити containerd |
| Диск заповнений | Створення контейнера збоїть | df -h | Очистити диск |
| Помилки pull образів | ImagePullBackOff | Перевірити доступ до реєстру | Виправити автентифікацію реєстру |
| Ресурси вичерпані | Випадкові збої контейнерів | Перевірити cgroups | Збільшити ресурси |
3.4 Виправлення проблем Runtime
Розділ «3.4 Виправлення проблем Runtime»containerd не працює:
# Запустити containerdsudo systemctl start containerd
# Перевірити статусsudo systemctl status containerd
# Перевірити логи на проблемиsudo journalctl -u containerd --since "10 minutes ago"Усунення несправностей через crictl:
# Налаштувати crictl для containerdcat <<EOF | sudo tee /etc/crictl.yamlruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: falseEOF
# Перелік усіх контейнерів (включаючи зупинені)sudo crictl ps -a
# Отримати логи контейнераsudo crictl logs <container-id>
# Інспекція контейнераsudo crictl inspect <container-id>Частина 4: Вичерпання ресурсів вузла
Розділ «Частина 4: Вичерпання ресурсів вузла»4.1 Типи тиску на ресурси
Розділ «4.1 Типи тиску на ресурси»┌──────────────────────────────────────────────────────────────┐│ ТИПИ ТИСКУ НА РЕСУРСИ ││ ││ ТИСК НА ПАМ'ЯТЬ ││ • Доступна пам'ять нижче порогу ││ • Спричиняє евікцію Підів ││ • Перевірка: free -m, cat /proc/meminfo ││ ││ ТИСК НА ДИСК ││ • Використання диску вище порогу ││ • Спричиняє очищення образів ││ • Перевірка: df -h ││ ││ ТИСК НА PID ││ • ID процесів вичерпані ││ • Неможливо створити нові процеси ││ • Перевірка: cat /proc/sys/kernel/pid_max ││ ││ Коли будь-який тиск True — вузол може не приймати нові ││ Під'и ││ │└──────────────────────────────────────────────────────────────┘4.2 Діагностика проблем з ресурсами
Розділ «4.2 Діагностика проблем з ресурсами»# Перевірити умови вузлаk describe node <node> | grep -A 10 Conditions
# На вузлі — перевірити пам'ятьfree -mcat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable"
# Перевірити дискdf -hdu -sh /var/lib/containerd/* # Сховище контейнерівdu -sh /var/log/* # Сховище логів
# Перевірити PIDcat /proc/sys/kernel/pid_maxps aux | wc -l4.3 Пороги евікції
Розділ «4.3 Пороги евікції»Стандартні пороги евікції kubelet:
evictionHard: memory.available: "100Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%"Коли ці пороги перевищені:
- Умова вузла встановлюється в True (напр., MemoryPressure)
- Нові Під’и не розподіляються
- Існуючі Під’и можуть бути евіктовані
4.4 Виправлення проблем з ресурсами
Розділ «4.4 Виправлення проблем з ресурсами»Тиск на пам’ять:
# Знайти процеси, що споживають багато пам'ятіps aux --sort=-%mem | head -20
# Знайти Під'и, що використовують найбільше пам'ятіk top pods -A --sort-by=memory
# Варіанти:# 1. Вбити непотрібні процеси# 2. Евіктувати Під'и з низьким пріоритетом# 3. Додати пам'яті на вузолТиск на диск:
# Знайти великі файлиsudo find / -type f -size +100M -exec ls -lh {} \;
# Очистити образи контейнерівsudo crictl rmi --prune
# Очистити старі логиsudo journalctl --vacuum-time=3d
# Очистити невикористані контейнериsudo crictl rm $(sudo crictl ps -a -q --state exited)Тиск на PID:
# Перевірити поточний ліміт PIDcat /proc/sys/kernel/pid_max
# Збільшити ліміт тимчасовоecho 65536 | sudo tee /proc/sys/kernel/pid_max
# Знайти процеси за кількістюps aux | awk '{print $1}' | sort | uniq -c | sort -rn | headЧастина 5: Мережеві проблеми вузла
Розділ «Частина 5: Мережеві проблеми вузла»5.1 Мережеві вимоги вузла
Розділ «5.1 Мережеві вимоги вузла»┌──────────────────────────────────────────────────────────────┐│ МЕРЕЖЕВІ ВИМОГИ ВУЗЛА ││ ││ Вузол потребує з'єднання з: ││ ┌─────────────────────────────────────────────────────┐ ││ │ API-сервер (порт 6443) - Обов'язково │ ││ │ Інші вузли (різні) - Для мережі Підів │ ││ │ DNS-сервери (порт 53) - Для резолвінгу імен │ ││ │ Реєстр (порт 443) - Для pull образів │ ││ └─────────────────────────────────────────────────────┘ ││ ││ Мережеві збої → Вузол NotReady або Unknown ││ │└──────────────────────────────────────────────────────────────┘5.2 Діагностика мережевих проблем
Розділ «5.2 Діагностика мережевих проблем»# Перевірити базове з'єднанняping <api-server-ip>
# Перевірити доступність API-сервераcurl -k https://<api-server>:6443/healthz
# Перевірити DNSnslookup kubernetes.default.svc.cluster.localcat /etc/resolv.conf
# Перевірити firewallsudo iptables -L -nsudo firewall-cmd --list-all # Якщо використовується firewalld
# Перевірити мережеві інтерфейсиip addrip route5.3 Типові мережеві проблеми
Розділ «5.3 Типові мережеві проблеми»| Проблема | Симптом | Діагностика | Виправлення |
|---|---|---|---|
| Firewall блокує | Не може дістатись API | telnet api-server 6443 | Відкрити порти firewall |
| Збій DNS | Резолвінг імен не працює | nslookup | Виправити /etc/resolv.conf |
| Зміна IP-адреси | Вузол NotReady | Перевірити IP у специфікації вузла | Переналаштувати або перепід’єднати |
| Проблеми CNI плагіна | Мережа Підів не працює | Перевірити Під’и CNI | Перезапустити CNI, виправити конфіг |
| Неспівпадіння MTU | Періодичні збої | Перевірити налаштування MTU | Вирівняти значення MTU |
5.4 Обов’язкові порти
Розділ «5.4 Обов’язкові порти»| Порт | Протокол | Компонент | Призначення |
|---|---|---|---|
| 6443 | TCP | API-сервер | Kubernetes API |
| 10250 | TCP | kubelet | kubelet API |
| 10259 | TCP | kube-scheduler | Метрики планувальника |
| 10257 | TCP | kube-controller-manager | Метрики контролера |
| 2379-2380 | TCP | etcd | Клієнтський та peer |
| 30000-32767 | TCP | NodePort | NodePort Сервісів |
Частина 6: Процедури відновлення вузла
Розділ «Частина 6: Процедури відновлення вузла»6.1 Дерево рішень для відновлення
Розділ «6.1 Дерево рішень для відновлення»┌──────────────────────────────────────────────────────────────┐│ ДЕРЕВО РІШЕНЬ ДЛЯ ВІДНОВЛЕННЯ ВУЗЛА ││ ││ Вузол NotReady? ││ │ ││ ├── Можна SSH на вузол? ││ │ │ ││ │ ├── ТАК → Перевірити kubelet, runtime, мережу ││ │ │ ││ │ └── НІ → Перевірити фізично/VM, cloud ││ │ консоль ││ │ ││ ├── kubelet працює? ││ │ │ ││ │ ├── ТАК → Перевірити логи, сертифікати, ││ │ │ з'єднання з API ││ │ │ ││ │ └── НІ → Запустити kubelet ││ │ ││ └── Все ще NotReady після виправлень? ││ │ ││ └── Drain та перепід'єднати вузол ││ │└──────────────────────────────────────────────────────────────┘6.2 Дренування вузла
Розділ «6.2 Дренування вузла»# Дренувати вузол (безпечно евіктує Під'и)k drain <node-name> --ignore-daemonsets --delete-emptydir-data
# Тільки кордон (запобігти новим Під'ам)k cordon <node-name>
# Зняти кордон (дозволити розподілення знову)k uncordon <node-name>6.3 Перепід’єднання вузла
Розділ «6.3 Перепід’єднання вузла»Якщо вузол потребує повного скидання:
# На робочому вузліsudo kubeadm reset
# На площині управління — згенерувати новий токенkubeadm token create --print-join-command
# На робочому вузлі — перепід'єднатисьsudo kubeadm join <api-server>:6443 --token <token> --discovery-token-ca-cert-hash <hash>6.4 Видалення вузла
Розділ «6.4 Видалення вузла»# Спочатку дренуватиk drain <node> --ignore-daemonsets --delete-emptydir-data
# Видалити вузол з кластераk delete node <node-name>
# На самому вузліsudo kubeadm resetТипові помилки
Розділ «Типові помилки»| Помилка | Проблема | Рішення |
|---|---|---|
| Не перевіряти kubelet першим | Пропуск очевидної проблеми | Завжди починайте з systemctl status kubelet |
| Ігнорування умов вузла | Пропуск тиску на ресурси | Перевіряйте всі умови, не лише Ready |
| Видалення вузла перед drain | Порушення роботи Підів | Завжди дренуйте перед видаленням |
| Забули про DaemonSet Під’и | Drain не вдається | Використовуйте --ignore-daemonsets |
| Не перевіряти runtime | Звинувачення kubelet | Перевірте статус containerd теж |
| Ігнорування використання диску | Деградація вузла | Моніторте диск, очищайте регулярно |
Тест
Розділ «Тест»Q1: Heartbeat вузла
Розділ «Q1: Heartbeat вузла»Через скільки часу після останнього heartbeat вузол стає Unknown?
Відповідь
40 секунд. kubelet надсилає heartbeat кожні 10 секунд. Після 4 пропущених heartbeat (40с), node-controller позначає вузол як Unknown. Через 5 хвилин (за замовчуванням) Під’и на цьому вузлі плануються до евікції.
Q2: kubelet vs статичні Під’и
Розділ «Q2: kubelet vs статичні Під’и»Яка ключова різниця між kubelet та компонентами площини управління з точки зору їх запуску?
Відповідь
kubelet працює як сервіс systemd на хості, тоді як компоненти площини управління (API-сервер, планувальник, controller manager, etcd) працюють як статичні Під’и, якими керує kubelet.
Це означає:
- kubelet: перевіряйте через
systemctl status kubelet - Площина управління: перевіряйте через
crictl psабоk get pods -n kube-system
Q3: MemoryPressure
Розділ «Q3: MemoryPressure»Вузол має MemoryPressure=True. Що станеться з новими Під’ами?
Відповідь
Нові Під’и не будуть розподілені на цей вузол. Планувальник враховує умови вузла при прийнятті рішень щодо розміщення. Крім того, існуючі Під’и можуть бути евіктовані для звільнення пам’яті, починаючи з BestEffort Підів (без запитів/лімітів ресурсів), потім Burstable, потім Guaranteed.
Q4: crictl vs kubectl
Розділ «Q4: crictl vs kubectl»Коли слід використовувати crictl замість kubectl?
Відповідь
Використовуйте crictl коли:
- kubelet або API-сервер не працює (kubectl не працюватиме)
- Налагодження проблем container runtime
- Інспекція контейнерів на рівні runtime
- Вузол у стані NotReady
crictl спілкується безпосередньо з container runtime (containerd), повністю обминаючи Kubernetes API.
Q5: Drain vs Cordon
Розділ «Q5: Drain vs Cordon»Яка різниця між kubectl drain та kubectl cordon?
Відповідь
- cordon: Позначає вузол як нерозподілюваний (без нових Підів). Існуючі Під’и продовжують працювати.
- drain: Кордонує вузол І евіктує всі Під’и (крім DaemonSet Підів). Готує вузол до обслуговування.
Використовуйте cordon для «м’якого» обслуговування, drain для відключення вузла.
Q6: Сокет Container Runtime
Розділ «Q6: Сокет Container Runtime»Де зазвичай розташований сокет containerd?
Відповідь
/run/containerd/containerd.sock
Це Unix-сокет, який kubelet використовує для зв’язку з containerd через CRI. Якщо цього сокету немає або containerd не слухає на ньому, kubelet не може керувати контейнерами.
Перевірте за допомогою: ls -la /run/containerd/containerd.sock
Практична вправа: Симуляція усунення несправностей вузла
Розділ «Практична вправа: Симуляція усунення несправностей вузла»Сценарій
Розділ «Сценарій»Практика діагностики проблем вузла за допомогою доступних команд.
Передумови
Розділ «Передумови»- Доступ до кластера Kubernetes
- SSH-доступ щонайменше до одного робочого вузла
Завдання 1: Оцінка здоров’я вузла
Розділ «Завдання 1: Оцінка здоров’я вузла»# Перевірити всі вузлиk get nodes -o wide
# Отримати детальну інформацію про вузолk describe node <node-name>
# Перевірити умови вузла конкретноk get node <node-name> -o jsonpath='{.status.conditions[*].type}' | tr ' ' '\n'Завдання 2: Дослідження kubelet
Розділ «Завдання 2: Дослідження kubelet»# SSH на робочий вузолssh <node>
# Перевірити статус kubeletsudo systemctl status kubelet
# Переглянути останні логи kubeletsudo journalctl -u kubelet --since "5 minutes ago" | tail -50
# Перевірити конфігурацію kubeletcat /var/lib/kubelet/config.yaml | head -30Завдання 3: Перевірка Container Runtime
Розділ «Завдання 3: Перевірка Container Runtime»# Перевірити статус containerdsudo systemctl status containerd
# Перелік працюючих контейнерівsudo crictl ps
# Перевірити інформацію container runtimesudo crictl info
# Перелік образів на вузліsudo crictl imagesЗавдання 4: Оцінка ресурсів
Розділ «Завдання 4: Оцінка ресурсів»# Перевірити пам'ятьfree -m
# Перевірити дискdf -h
# Перевірити що використовує ресурсиk top node <node-name>
# Переглянути виділені ресурсиk describe node <node-name> | grep -A 10 "Allocated resources"Завдання 5: Cordon та Uncordon (безпечно)
Розділ «Завдання 5: Cordon та Uncordon (безпечно)»# Кордонувати вузол (запобігає новому розподіленню)k cordon <node-name>
# Перевірити що він нерозподілюванийk get node <node-name>
# Спробувати розподілити Підk run test-pod --image=nginxk get pods test-pod -o wide # НЕ повинен бути на кордонованому вузлі
# Зняти кордонk uncordon <node-name>
# Очищенняk delete pod test-podКритерії успіху
Розділ «Критерії успіху»- Перевірили умови вузлів для всіх вузлів
- Підтвердили що kubelet працює
- Підтвердили що containerd працює
- Оцінили використання ресурсів вузла
- Успішно кордонували та зняли кордон з вузла
Очищення
Розділ «Очищення»Вузол повинен бути без кордону після вправи.
Практичні вправи
Розділ «Практичні вправи»Вправа 1: Перевірка статусу вузла (30 с)
Розділ «Вправа 1: Перевірка статусу вузла (30 с)»# Завдання: Перелічити всі вузли з їх статусомk get nodesВправа 2: Умови вузла (1 хв)
Розділ «Вправа 2: Умови вузла (1 хв)»# Завдання: Перевірити всі умови конкретного вузлаk describe node <node> | grep -A 10 ConditionsВправа 3: Статус kubelet (30 с)
Розділ «Вправа 3: Статус kubelet (30 с)»# Завдання: Перевірити чи kubelet працює (на вузлі)sudo systemctl status kubeletВправа 4: Логи kubelet (1 хв)
Розділ «Вправа 4: Логи kubelet (1 хв)»# Завдання: Переглянути останні 20 рядків логів kubeletsudo journalctl -u kubelet -n 20Вправа 5: Статус Container Runtime (30 с)
Розділ «Вправа 5: Статус Container Runtime (30 с)»# Завдання: Перевірити containerd та перелічити контейнериsudo systemctl status containerdsudo crictl psВправа 6: Використання ресурсів (1 хв)
Розділ «Вправа 6: Використання ресурсів (1 хв)»# Завдання: Перевірити використання ресурсів вузлаk top nodesk describe node <node> | grep -A 5 "Allocated resources"Вправа 7: Дренування вузла (1 хв)
Розділ «Вправа 7: Дренування вузла (1 хв)»# Завдання: Безпечно дренувати вузолk drain <node> --ignore-daemonsets --delete-emptydir-dataВправа 8: Використання диску (30 с)
Розділ «Вправа 8: Використання диску (30 с)»# Завдання: Перевірити використання диску на вузліdf -hdu -sh /var/lib/containerd/Наступний модуль
Розділ «Наступний модуль»Переходьте до Модуль 5.5: Усунення мережевих несправностей, щоб навчитися діагностувати та виправляти проблеми зв’язку Під-Під, Під-Сервіс та зовнішнього з’єднання.