Перейти до вмісту

Модуль 5.4: Збої робочих вузлів

Hands-On Lab Available
K8s Cluster advanced 40 min
Launch Lab ↗

Opens in Killercoda in a new tab

Складність: [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 Перевірка статусу вузла»
Terminal window
# Швидкий статус
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 не працює, мережеві проблеми
UnknownHeartbeat не отриманоВузол недоступний, kubelet впав
SchedulingDisabledКордонованийРучний cordon або обслуговування

Частина 2: Усунення несправностей kubelet

Розділ «Частина 2: Усунення несправностей kubelet»
┌──────────────────────────────────────────────────────────────┐
│ ОБОВ'ЯЗКИ KUBELET │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ kubelet │ │
│ │ │ │
│ │ • Реєструє вузол у API-сервері │ │
│ │ • Спостерігає за призначенням Підів │ │
│ │ • Керує життєвим циклом контейнерів (через runtime) │ │
│ │ • Звітує про стан вузла/Підів │ │
│ │ • Обробляє проби (liveness, readiness) │ │
│ │ • Монтує томи │ │
│ │ • Запускає статичні Під'и │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ Якщо kubelet збоїть → Вузол NotReady → Під'и перестають │
│ працювати │
│ │
└──────────────────────────────────────────────────────────────┘

2.2 Перевірка статусу kubelet

Розділ «2.2 Перевірка статусу kubelet»
Terminal window
# Спочатку SSH на вузол
ssh <node-name>
# Перевірити статус сервісу kubelet
sudo systemctl status kubelet
# Перевірити чи kubelet працює
ps aux | grep kubelet
# Перевірити логи kubelet
sudo journalctl -u kubelet -f
# Перевірити останні помилки kubelet
sudo journalctl -u kubelet --since "10 minutes ago" | grep -i error

2.3 Типові проблеми kubelet

Розділ «2.3 Типові проблеми kubelet»
ПроблемаСимптомДіагностикаВиправлення
kubelet зупиненийВузол NotReadysystemctl status kubeletsystemctl start kubelet
kubelet падає циклічноВузол мерехтитьjournalctl -u kubeletВиправити конфіг, перевірити логи
Неправильний конфігНе запускаєтьсяПомилка в логахВиправити /var/lib/kubelet/config.yaml
Не може дістатись APINotReadyТайм-аут мережі в логахПеревірити мережу, firewall
Проблеми з сертифікатамиПомилки TLSПомилки сертифікатів у логахОновити сертифікати
Container runtime не працюєНе може створити Під’иПомилки runtimeВиправити containerd/docker

2.4 Виправлення проблем kubelet

Розділ «2.4 Виправлення проблем kubelet»

kubelet не працює:

Terminal window
# Запустити kubelet
sudo systemctl start kubelet
# Увімкнути автозапуск
sudo systemctl enable kubelet
# Перевірити статус
sudo systemctl status kubelet

Проблеми конфігурації kubelet:

Terminal window
# Перевірити файл конфігурації kubelet
cat /var/lib/kubelet/config.yaml
# Перевірити прапорці kubelet
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# Після виправлення конфігу перезавантажити та перезапустити
sudo systemctl daemon-reload
sudo systemctl restart kubelet

Проблеми з сертифікатами kubelet:

Terminal window
# Перевірити шляхи сертифікатів
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»
┌──────────────────────────────────────────────────────────────┐
│ СТЕК 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»
Terminal window
# Перевірити containerd (найпоширеніший)
sudo systemctl status containerd
sudo crictl info
# Перевірити сокет container runtime
ls -la /run/containerd/containerd.sock
# Перелік контейнерів через crictl
sudo crictl ps
# Перелік образів
sudo crictl images

3.3 Типові проблеми Runtime

Розділ «3.3 Типові проблеми Runtime»
ПроблемаСимптомДіагностикаВиправлення
containerd зупиненийПід’и ContainerCreatingsystemctl status containerdsystemctl start containerd
Відсутній сокетПомилки kubeletПеревірити шлях сокетуПерезапустити containerd
Диск заповненийСтворення контейнера збоїтьdf -hОчистити диск
Помилки pull образівImagePullBackOffПеревірити доступ до реєструВиправити автентифікацію реєстру
Ресурси вичерпаніВипадкові збої контейнерівПеревірити cgroupsЗбільшити ресурси

3.4 Виправлення проблем Runtime

Розділ «3.4 Виправлення проблем Runtime»

containerd не працює:

Terminal window
# Запустити containerd
sudo systemctl start containerd
# Перевірити статус
sudo systemctl status containerd
# Перевірити логи на проблеми
sudo journalctl -u containerd --since "10 minutes ago"

Усунення несправностей через crictl:

Terminal window
# Налаштувати crictl для containerd
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# Перелік усіх контейнерів (включаючи зупинені)
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 Діагностика проблем з ресурсами»
Terminal window
# Перевірити умови вузла
k describe node <node> | grep -A 10 Conditions
# На вузлі — перевірити пам'ять
free -m
cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable"
# Перевірити диск
df -h
du -sh /var/lib/containerd/* # Сховище контейнерів
du -sh /var/log/* # Сховище логів
# Перевірити PID
cat /proc/sys/kernel/pid_max
ps aux | wc -l

Стандартні пороги евікції kubelet:

evictionHard:
memory.available: "100Mi"
nodefs.available: "10%"
nodefs.inodesFree: "5%"
imagefs.available: "15%"

Коли ці пороги перевищені:

  1. Умова вузла встановлюється в True (напр., MemoryPressure)
  2. Нові Під’и не розподіляються
  3. Існуючі Під’и можуть бути евіктовані

4.4 Виправлення проблем з ресурсами

Розділ «4.4 Виправлення проблем з ресурсами»

Тиск на пам’ять:

Terminal window
# Знайти процеси, що споживають багато пам'яті
ps aux --sort=-%mem | head -20
# Знайти Під'и, що використовують найбільше пам'яті
k top pods -A --sort-by=memory
# Варіанти:
# 1. Вбити непотрібні процеси
# 2. Евіктувати Під'и з низьким пріоритетом
# 3. Додати пам'яті на вузол

Тиск на диск:

Terminal window
# Знайти великі файли
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:

Terminal window
# Перевірити поточний ліміт PID
cat /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 Діагностика мережевих проблем»
Terminal window
# Перевірити базове з'єднання
ping <api-server-ip>
# Перевірити доступність API-сервера
curl -k https://<api-server>:6443/healthz
# Перевірити DNS
nslookup kubernetes.default.svc.cluster.local
cat /etc/resolv.conf
# Перевірити firewall
sudo iptables -L -n
sudo firewall-cmd --list-all # Якщо використовується firewalld
# Перевірити мережеві інтерфейси
ip addr
ip route

5.3 Типові мережеві проблеми

Розділ «5.3 Типові мережеві проблеми»
ПроблемаСимптомДіагностикаВиправлення
Firewall блокуєНе може дістатись APItelnet api-server 6443Відкрити порти firewall
Збій DNSРезолвінг імен не працюєnslookupВиправити /etc/resolv.conf
Зміна IP-адресиВузол NotReadyПеревірити IP у специфікації вузлаПереналаштувати або перепід’єднати
Проблеми CNI плагінаМережа Підів не працюєПеревірити Під’и CNIПерезапустити CNI, виправити конфіг
Неспівпадіння MTUПеріодичні збоїПеревірити налаштування MTUВирівняти значення MTU

5.4 Обов’язкові порти

Розділ «5.4 Обов’язкові порти»
ПортПротоколКомпонентПризначення
6443TCPAPI-серверKubernetes API
10250TCPkubeletkubelet API
10259TCPkube-schedulerМетрики планувальника
10257TCPkube-controller-managerМетрики контролера
2379-2380TCPetcdКлієнтський та peer
30000-32767TCPNodePortNodePort Сервісів

Частина 6: Процедури відновлення вузла

Розділ «Частина 6: Процедури відновлення вузла»

6.1 Дерево рішень для відновлення

Розділ «6.1 Дерево рішень для відновлення»
┌──────────────────────────────────────────────────────────────┐
│ ДЕРЕВО РІШЕНЬ ДЛЯ ВІДНОВЛЕННЯ ВУЗЛА │
│ │
│ Вузол NotReady? │
│ │ │
│ ├── Можна SSH на вузол? │
│ │ │ │
│ │ ├── ТАК → Перевірити kubelet, runtime, мережу │
│ │ │ │
│ │ └── НІ → Перевірити фізично/VM, cloud │
│ │ консоль │
│ │ │
│ ├── kubelet працює? │
│ │ │ │
│ │ ├── ТАК → Перевірити логи, сертифікати, │
│ │ │ з'єднання з API │
│ │ │ │
│ │ └── НІ → Запустити kubelet │
│ │ │
│ └── Все ще NotReady після виправлень? │
│ │ │
│ └── Drain та перепід'єднати вузол │
│ │
└──────────────────────────────────────────────────────────────┘

6.2 Дренування вузла

Розділ «6.2 Дренування вузла»
Terminal window
# Дренувати вузол (безпечно евіктує Під'и)
k drain <node-name> --ignore-daemonsets --delete-emptydir-data
# Тільки кордон (запобігти новим Під'ам)
k cordon <node-name>
# Зняти кордон (дозволити розподілення знову)
k uncordon <node-name>

6.3 Перепід’єднання вузла

Розділ «6.3 Перепід’єднання вузла»

Якщо вузол потребує повного скидання:

Terminal window
# На робочому вузлі
sudo kubeadm reset
# На площині управління — згенерувати новий токен
kubeadm token create --print-join-command
# На робочому вузлі — перепід'єднатись
sudo kubeadm join <api-server>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
Terminal window
# Спочатку дренувати
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 теж
Ігнорування використання дискуДеградація вузлаМоніторте диск, очищайте регулярно

Через скільки часу після останнього 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

Вузол має MemoryPressure=True. Що станеться з новими Під’ами?

Відповідь

Нові Під’и не будуть розподілені на цей вузол. Планувальник враховує умови вузла при прийнятті рішень щодо розміщення. Крім того, існуючі Під’и можуть бути евіктовані для звільнення пам’яті, починаючи з BestEffort Підів (без запитів/лімітів ресурсів), потім Burstable, потім Guaranteed.

Коли слід використовувати crictl замість kubectl?

Відповідь

Використовуйте crictl коли:

  • kubelet або API-сервер не працює (kubectl не працюватиме)
  • Налагодження проблем container runtime
  • Інспекція контейнерів на рівні runtime
  • Вузол у стані NotReady

crictl спілкується безпосередньо з container runtime (containerd), повністю обминаючи Kubernetes API.

Яка різниця між kubectl drain та kubectl cordon?

Відповідь
  • cordon: Позначає вузол як нерозподілюваний (без нових Підів). Існуючі Під’и продовжують працювати.
  • drain: Кордонує вузол І евіктує всі Під’и (крім DaemonSet Підів). Готує вузол до обслуговування.

Використовуйте cordon для «м’якого» обслуговування, drain для відключення вузла.

Де зазвичай розташований сокет containerd?

Відповідь

/run/containerd/containerd.sock

Це Unix-сокет, який kubelet використовує для зв’язку з containerd через CRI. Якщо цього сокету немає або containerd не слухає на ньому, kubelet не може керувати контейнерами.

Перевірте за допомогою: ls -la /run/containerd/containerd.sock


Практична вправа: Симуляція усунення несправностей вузла

Розділ «Практична вправа: Симуляція усунення несправностей вузла»

Практика діагностики проблем вузла за допомогою доступних команд.

  • Доступ до кластера Kubernetes
  • SSH-доступ щонайменше до одного робочого вузла

Завдання 1: Оцінка здоров’я вузла

Розділ «Завдання 1: Оцінка здоров’я вузла»
Terminal window
# Перевірити всі вузли
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»
Terminal window
# SSH на робочий вузол
ssh <node>
# Перевірити статус kubelet
sudo systemctl status kubelet
# Переглянути останні логи kubelet
sudo journalctl -u kubelet --since "5 minutes ago" | tail -50
# Перевірити конфігурацію kubelet
cat /var/lib/kubelet/config.yaml | head -30

Завдання 3: Перевірка Container Runtime

Розділ «Завдання 3: Перевірка Container Runtime»
Terminal window
# Перевірити статус containerd
sudo systemctl status containerd
# Перелік працюючих контейнерів
sudo crictl ps
# Перевірити інформацію container runtime
sudo crictl info
# Перелік образів на вузлі
sudo crictl images

Завдання 4: Оцінка ресурсів

Розділ «Завдання 4: Оцінка ресурсів»
Terminal window
# Перевірити пам'ять
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 (безпечно)»
Terminal window
# Кордонувати вузол (запобігає новому розподіленню)
k cordon <node-name>
# Перевірити що він нерозподілюваний
k get node <node-name>
# Спробувати розподілити Під
k run test-pod --image=nginx
k get pods test-pod -o wide # НЕ повинен бути на кордонованому вузлі
# Зняти кордон
k uncordon <node-name>
# Очищення
k delete pod test-pod
  • Перевірили умови вузлів для всіх вузлів
  • Підтвердили що kubelet працює
  • Підтвердили що containerd працює
  • Оцінили використання ресурсів вузла
  • Успішно кордонували та зняли кордон з вузла

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


Вправа 1: Перевірка статусу вузла (30 с)

Розділ «Вправа 1: Перевірка статусу вузла (30 с)»
Terminal window
# Завдання: Перелічити всі вузли з їх статусом
k get nodes

Вправа 2: Умови вузла (1 хв)

Розділ «Вправа 2: Умови вузла (1 хв)»
Terminal window
# Завдання: Перевірити всі умови конкретного вузла
k describe node <node> | grep -A 10 Conditions

Вправа 3: Статус kubelet (30 с)

Розділ «Вправа 3: Статус kubelet (30 с)»
Terminal window
# Завдання: Перевірити чи kubelet працює (на вузлі)
sudo systemctl status kubelet

Вправа 4: Логи kubelet (1 хв)

Розділ «Вправа 4: Логи kubelet (1 хв)»
Terminal window
# Завдання: Переглянути останні 20 рядків логів kubelet
sudo journalctl -u kubelet -n 20

Вправа 5: Статус Container Runtime (30 с)

Розділ «Вправа 5: Статус Container Runtime (30 с)»
Terminal window
# Завдання: Перевірити containerd та перелічити контейнери
sudo systemctl status containerd
sudo crictl ps

Вправа 6: Використання ресурсів (1 хв)

Розділ «Вправа 6: Використання ресурсів (1 хв)»
Terminal window
# Завдання: Перевірити використання ресурсів вузла
k top nodes
k describe node <node> | grep -A 5 "Allocated resources"

Вправа 7: Дренування вузла (1 хв)

Розділ «Вправа 7: Дренування вузла (1 хв)»
Terminal window
# Завдання: Безпечно дренувати вузол
k drain <node> --ignore-daemonsets --delete-emptydir-data

Вправа 8: Використання диску (30 с)

Розділ «Вправа 8: Використання диску (30 с)»
Terminal window
# Завдання: Перевірити використання диску на вузлі
df -h
du -sh /var/lib/containerd/

Переходьте до Модуль 5.5: Усунення мережевих несправностей, щоб навчитися діагностувати та виправляти проблеми зв’язку Під-Під, Під-Сервіс та зовнішнього з’єднання.