Phone icon Зв'язатись з нами

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-інженера на практичних курсах із менторами та реальними проєктами.

Обрати курс