DevOps та хмари
Що таке Kubernetes (K8s)?
Kubernetes (K8s) — це система оркестрації контейнерів. Вона сама запускає потрібну кількість контейнерів на групі серверів, перезапускає ті, що впали, розподіляє навантаження і випускає оновлення без зупинки сервісу.
Docker розв’язує задачу «запустити один контейнер». Kubernetes розв’язує задачу «керувати сотнями контейнерів на десятках серверів»: де їх розмістити, що робити, якщо сервер вийшов з ладу, як збільшити потужність під навантаження.
Робота побудована декларативно: ви описуєте бажаний стан — «п’ять копій цього сервісу, такі ресурси, така адреса», — а кластер постійно приводить реальність до цього опису. Звідси самовідновлення і плавні оновлення.
Kubernetes дає багато можливостей, але й додає складності. Для невеликого проєкту з парою сервісів він найчастіше зайвий.
Де застосовується
Kubernetes використовують там, де сервісів багато, а простій неприпустимий: маркетплейси, фінтех, телеком, великі SaaS-продукти. Він підтримує потрібну кількість копій кожного сервісу, переносить їх, якщо сервер вийшов з ладу, розподіляє трафік і поступово випускає нові версії, щоб користувачі не помітили оновлення.
Власний кластер налаштовують рідко — частіше беруть керований Kubernetes у хмарного провайдера. У вакансіях DevOps і SRE Kubernetes — одна з найпоширеніших вимог, а поєднання з Terraform і підходом GitOps стало фактичним стандартом.
Приклад
Уночі один із серверів кластера виходить з ладу. Kubernetes помічає це за секунди, запускає втрачені копії сервісів на інших серверах і перенаправляє на них трафік. Інженер дізнається про подію зі сповіщення моніторингу, а не зі скарг користувачів.
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: registry.example.com/api:1.4.2
ports:
- containerPort: 3000
Часті запитання
Чи потрібен Kubernetes невеликому проєкту?
Найчастіше ні. Для одного-двох сервісів він додає більше складності, ніж користі: кластер треба налаштовувати, оновлювати і вміти ремонтувати. Зазвичай починають зі звичайного сервера з контейнерами або керованого хостингу, а до Kubernetes переходять, коли проєкт росте.
Чи складно вивчити Kubernetes?
Значно складніше, ніж Docker: треба розуміти мережі, сховища, права доступу і саму модель об’єктів кластера. Розумний порядок — спершу впевнено опанувати контейнери, потім Kubernetes. Без досвіду підтримки сервісів багато його концепцій здаються незрозумілими.
Що таке под (pod)?
Це найменша одиниця, якою керує Kubernetes: один або кілька тісно пов’язаних контейнерів зі спільною мережевою адресою і сховищем. Зазвичай у поді один контейнер застосунку, а додаткові відповідають за допоміжні задачі — збір логів чи передачу трафіку.
Чи безкоштовний Kubernetes?
Сам Kubernetes — проєкт із відкритим кодом і безкоштовний. Платити доводиться за сервери, на яких він працює, і за керований сервіс у хмарного провайдера, якщо не хочете обслуговувати кластер самостійно. Основні витрати — саме сервери.
Навчання DevOps в OWU
Опануйте професію DevOps-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс