Що таке Kubernetes (K8s)?
Kubernetes — система оркестрації контейнерів: вона сама запускає потрібну кількість контейнерів на групі серверів, перезапускає ті, що впали, розподіляє навантаження й викочує оновлення без зупинки сервісу.
Docker розвʼязує задачу «запустити один контейнер». Kubernetes розвʼязує задачу «керувати сотнями контейнерів на десятках серверів»: де саме їх розмістити, що робити при відмові вузла, як масштабувати під навантаження.
Робота будується декларативно: ви описуєте бажаний стан — «пʼять екземплярів цього сервісу, ось такі ресурси, така адреса», — а кластер постійно приводить реальність до цього опису. Звідси самовідновлення та плавні оновлення.
Kubernetes дає багато, але й коштує дорого у складності. Для невеликого проєкту з парою сервісів він найчастіше надлишковий.
Де застосовується
Kubernetes ставлять там, де сервісів багато і простій неприпустимий: маркетплейси, фінтех, телеком, великі SaaS-продукти. Він тримає потрібну кількість копій кожного сервісу, переносить їх при відмові вузла, розподіляє трафік і викочує нову версію поступово, щоб користувачі не помітили оновлення.
Власними силами кластер піднімають рідко — частіше беруть керований варіант у хмарного провайдера. У вакансіях 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 безплатний?
Сам проєкт має відкритий вихідний код і безплатний. Платити доводиться за інфраструктуру, на якій він працює, і за керований сервіс у хмарного провайдера, якщо ви не хочете обслуговувати керуючі вузли самі. Основна стаття витрат зазвичай — самі сервери.