Kubernetes для новачків: базові концепції

event 17.05.2026 01:33
| category Kubernetes | person iron_will | comment 0 | visibility 21 | |

Вступ

Сучасна розробка програмного забезпечення дедалі більше орієнтується на мікросервісну архітектуру, контейнеризацію та автоматизацію інфраструктури. У центрі цієї трансформації знаходиться Kubernetes - одна з найпопулярніших платформ оркестрації контейнерів, яка стала фактичним стандартом у DevOps та cloud-native середовищах.

Kubernetes дозволяє автоматизувати розгортання, масштабування, балансування навантаження та відновлення контейнеризованих застосунків. Якщо Docker вирішує задачу створення й запуску контейнерів, то Kubernetes відповідає за керування великою кількістю контейнерів у продакшн-середовищі.

Для новачків Kubernetes часто здається надто складним через велику кількість компонентів, абстракцій і термінів. Однак більшість концепцій мають логічну структуру. Розуміння базових елементів - Pod, Node, Deployment, Service, Namespace та Cluster - значно спрощує подальше вивчення платформи.

У цій статті розглянемо ключові концепції Kubernetes, принципи роботи кластера, базові об’єкти та практичні приклади розгортання застосунків.

Що таке Kubernetes

Kubernetes - це платформа для автоматизованого керування контейнерами. Вона була створена в Google на основі внутрішньої системи Borg та пізніше передана до Cloud Native Computing Foundation.

Основні задачі Kubernetes:

  • автоматичне розгортання контейнерів
  • масштабування застосунків
  • балансування трафіку
  • самовідновлення сервісів
  • оновлення без простою
  • управління конфігураціями та секретами

Kubernetes працює поверх контейнерного рушія:

  • Docker
  • containerd
  • CRI-O

Сьогодні більшість Kubernetes-кластерів використовують саме containerd.

Архітектура Kubernetes

Kubernetes складається з двох головних частин:

  1. Control Plane
  2. Worker Nodes

Control Plane

Control Plane відповідає за керування кластером.

До його компонентів належать:

API Server


Головна точка взаємодії з кластером.

Усі команди:

kubectl get podskubectl apply -f app.yaml

відправляються саме до API Server.


etcd

Розподілене key-value сховище, у якому Kubernetes зберігає стан кластера:

  • конфігурації
  • deployment-и
  • secrets
  • metadata

Scheduler

Визначає, на якому вузлі запускати Pod.

Scheduler враховує:

  • ресурси CPU/RAM
  • affinity/anti-affinity
  • taints/tolerations
  • навантаження вузлів

Controller Manager

Слідкує за тим, щоб фактичний стан відповідав бажаному.

Наприклад:

  • якщо Pod впав - створюється новий
  • якщо Deployment має 3 replicas - Kubernetes підтримує саме 3

Worker Node

Worker Node - сервер, де запускаються контейнери.

Кожен вузол містить:

kubelet

Агент Kubernetes на вузлі.

Він:

  • отримує інструкції від API Server
  • запускає Pod-и
  • перевіряє їх стан

Container Runtime

Середовище виконання контейнерів.

Наприклад:

  • containerd
  • CRI-O

kube-proxy

Відповідає за мережеву взаємодію та маршрутизацію.

Що таке Cluster

Cluster - це група серверів, які працюють як єдина система.

У Kubernetes кластер складається з:

  • одного або кількох master/control-plane вузлів
  • worker nodes

Приклад:

Cluster
├── Control Plane
│   ├── API Server
│   ├── Scheduler
│   └── etcd
|
│── Worker Node 1
│   ├── Pod A
│   └── Pod B
|
└── Worker Node 2
    ├── Pod C
        └── Pod D

Користувач працює не з окремими серверами, а з кластером загалом.

Pod - базова одиниця Kubernetes

Pod - найменший deployable-об’єкт у Kubernetes.

Pod може містити:

  • один контейнер
  • кілька контейнерів

У більшості випадків один Pod = один контейнер.

Особливості Pod

Pod-и:

  • мають власну IP-адресу
  • спільно використовують мережу
  • можуть використовувати shared volumes
  • є тимчасовими

Якщо Pod видаляється - створюється новий із новою IP-адресою.

Приклад Pod

apiVersion: v1
kind:  Pod
 
metadata:
  name: nginx-pod
  
spec:
  containers:
    - name: nginx
       image: nginx:latest
       ports:
        - containerPort: 80

Створення Pod:

kubectl apply -f pod.yaml

Перевірка:

kubectl get pods

Deployment - керування Pod-ами

Напряму Pod-и зазвичай не створюють у production.

Для цього використовують Deployment.

Deployment:

  • керує Pod-ами
  • підтримує replicas
  • виконує rolling updates
  • автоматично відновлює контейнери

Приклад Deployment

apiVersion: apps/v1
kind: Deployment

metadata:
  name: nginx-deployment

spec:
  replicas: 3

  selector:
    matchLabels:
      app: nginx

  template:
    metadata:
      labels:
        app: nginx

    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          ports:
            - containerPort: 80

Що відбувається після запуску

Kubernetes:

  1. Створює ReplicaSet
  2. ReplicaSet створює 3 Pod-и
  3. Scheduler розподіляє їх по вузлах
  4. kubelet запускає контейнери

Масштабування

kubectl scale deployment nginx-deployment --replicas=5

Kubernetes автоматично створить ще 2 Pod-и.

Service - доступ до застосунку

Pod-и мають динамічні IP-адреси.

Після перезапуску IP змінюється, тому прямий доступ до Pod ненадійний.

Для вирішення проблеми використовують Service.

Service створює стабільну точку доступу.

Типи Service

ClusterIP

Тип за замовчуванням.

Доступ лише всередині кластера.

NodePort

Відкриває порт на кожному вузлі.

LoadBalancer

Створює зовнішній балансувальник навантаження.

Часто використовується у хмарних провайдерах:

  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure

Приклад Service

apiVersion: v1
kind: Service

metadata:
  name: nginx-service

spec:
  selector:
    app: nginx

  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

  type: ClusterIP

Namespace - логічна ізоляція

Namespace дозволяє розділяти ресурси в одному кластері.

Наприклад:

  • development
  • staging
  • production

Створення Namespace

kubectl create namespace dev

Використання Namespace

kubectl get pods -n dev

ConfigMap та Secret

Зберігати конфігурації всередині контейнерів - погана практика.

Kubernetes пропонує:

  • ConfigMap
  • Secret

ConfigMap

Для звичайних конфігурацій.

Приклад:

apiVersion: v1
kind: ConfigMap

metadata:
  name: app-config

data:
  APP_ENV: production
  LOG_LEVEL: info

Secret

Для чутливих даних:

  • паролів
  • токенів
  • API-ключів

Приклад:

apiVersion: v1
kind: Secret

metadata:
  name: db-secret

type: Opaque

data:
  password: cGFzc3dvcmQ=

Значення зберігається у Base64.

Persistent Volume та зберігання даних

Контейнери за своєю природою тимчасові.

Після видалення Pod локальні дані можуть бути втрачені.

Kubernetes вирішує це через:

  • Persistent Volume (PV)
  • Persistent Volume Claim (PVC)

Основна логіка

Application → PVC → PV → Storage

Приклад PVC

apiVersion: v1
kind: PersistentVolumeClaim

metadata:
  name: app-pvc

spec:
  accessModes:
    - ReadWriteOnce

  resources:
    requests:
      storage: 1Gi

Ingress - HTTP-маршрутизація

Ingress використовується для керування HTTP/HTTPS-трафіком.

Він дозволяє:

  • використовувати один IP для кількох сервісів
  • налаштовувати SSL
  • створювати routing rules

Приклад Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress

metadata:
  name: app-ingress

spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix

            backend:
              service:
                name: nginx-service
                port:
                  number: 80

Як Kubernetes забезпечує відмовостійкість

Однією з головних переваг Kubernetes є self-healing.

Якщо:

  • контейнер завершується аварійно
  • вузол стає недоступним
  • Pod перестає відповідати

Kubernetes автоматично:

  • перезапускає контейнер
  • створює новий Pod
  • переносить навантаження

Rolling Updates та Zero Downtime

Deployment підтримує поступове оновлення застосунків.

Приклад:

kubectl set image deployment/nginx-deployment \nginx=nginx:1.26

Kubernetes:

  1. Створює нові Pod-и
  2. Перевіряє readiness
  3. Видаляє старі Pod-и

У результаті сервіс працює без простою.

Практичний кейс: деплой вебзастосунку

Розглянемо типовий сценарій.

Завдання

Необхідно розгорнути:

  • frontend
  • backend API
  • PostgreSQL

Архітектура

Ingress
   ↓
Frontend Service
   ↓
Frontend Pods

Backend Service
   ↓
Backend Pods
   ↓
PostgreSQL PVC

Основні компоненти

Frontend

  • Deployment
  • Service
  • Ingress

Backend

  • Deployment
  • ConfigMap
  • Secret
  • Service

PostgreSQL

  • StatefulSet
  • Persistent Volume
  • Secret

Що дає Kubernetes у цьому кейсі

  • автоматичне масштабування frontend
  • self-healing backend
  • постійне сховище для БД
  • rolling updates без downtime
  • централізоване керування

kubectl - головний інструмент адміністратора

kubectl - CLI для роботи з Kubernetes.

Найважливіші команди

Перегляд Pod:

kubectl get pods

Перегляд вузлів:

kubectl get nodes

Перегляд логів:

kubectl logs pod-name

Вхід у контейнер:

kubectl exec -it pod-name -- bash

Видалення Pod:

kubectl delete pod pod-name

Типові помилки новачків

Використання Pod замість Deployment

Pod не забезпечує автоматичне відновлення.

Для production слід використовувати Deployment.

Відсутність readiness/liveness probes

Без probes Kubernetes не знає:

  • чи застосунок готовий приймати трафік
  • чи контейнер завис

Неправильна робота із Secret

Secret не слід:

  • зберігати у Git
  • передавати відкритим текстом
  • використовувати без RBAC

Ігнорування resource limits

Без обмежень контейнер може спожити всі ресурси вузла.

Приклад:

resources:
  requests:
    memory: "256Mi"
    cpu: "250m"

  limits:
    memory: "512Mi"
    cpu: "500m"

Kubernetes та DevOps

Kubernetes став центральним компонентом сучасного DevOps.

Його часто інтегрують із:

  • Jenkins
  • GitLab
  • Argo CD
  • Terraform
  • Helm

Це дозволяє створювати повністю автоматизовані CI/CD-конвеєри.

Коли Kubernetes не потрібен

Попри популярність Kubernetes, він не є універсальним рішенням.

Не варто використовувати Kubernetes:

  • для простих monolith-застосунків
  • при малій інфраструктурі
  • без компетенцій DevOps
  • якщо достатньо Docker Compose

Kubernetes додає складність:

  • networking
  • observability
  • storage
  • security
  • cluster maintenance

Тому важливо оцінювати реальні потреби бізнесу.

Висновки

Kubernetes - потужна платформа оркестрації контейнерів, яка стала стандартом для сучасної cloud-native інфраструктури. Вона дозволяє автоматизувати розгортання застосунків, масштабування, балансування навантаження та відновлення сервісів після збоїв.

Для ефективної роботи з Kubernetes необхідно розуміти базові концепції:

  • Cluster
  • Node
  • Pod
  • Deployment
  • Service
  • Namespace
  • Ingress
  • Persistent Volume

Саме ці компоненти формують основу будь-якого Kubernetes-кластера.

Новачкам не варто намагатися одразу освоїти всі можливості платформи. Значно ефективніше поступово вивчати архітектуру, практикуватися з kubectl, створювати прості deployment-и та аналізувати поведінку Pod-ів у реальному середовищі.

Попри складність, Kubernetes відкриває широкі можливості для автоматизації інфраструктури, побудови масштабованих систем та впровадження сучасних DevOps-практик.

Схожі пости

Що таке RAID: рівні RAID, принцип роботи та навіщо він потрібен

Вступ У сучасній ІТ-інфраструктурі дані є одним із найцінніших ресурсів. Сервери, системи віртуалізації, бази даних, файлові сховища та резервні копії постійно працюють із великими обсягами інформації. Втрата даних через збій накопичувача може призв...

category System administration person iron_will event 10/05/2026

Docker: як оптимізувати розмір контейнера з 50 ГБ до керованого рівня

Вступ Контейнери давно стали стандартом де-факто для доставки застосунків у production. Проте з ростом складності систем часто виникає нетривіальна проблема - неконтрольоване збільшення розміру Docker-образів. Сценарій, коли образ досягає 30–50 ГБ,...

category DevOps person iron_will event 06/05/2026

Як знайти головну IP-адресу джерела DDoS у лог-файлі на 10 млн рядків у Linux

Вступ Коли сервер потрапляє під DDoS-атаку, одним із перших завдань адміністратора є швидке визначення джерел аномального трафіку. На практиці це означає аналіз великих лог-файлів вебсервера, балансувальника, firewall або reverse proxy. Якщо файл мі...

category System administration person iron_will event 25/04/2026

Kubernetes: сучасна платформа оркестрації контейнерів для production-середовищ

Вступ Kubernetes став де-факто стандартом для запуску контейнеризованих застосунків у production-середовищах. Якщо Docker вирішив проблему пакування застосунку разом із залежностями, то Kubernetes вирішує значно складніше завдання - як масштабувати,...

category DevOps person iron_will event 19/04/2026

Файлові системи ext4, XFS, Btrfs - що обрати для production

Вступ Вибір файлової системи в Linux-середовищі - це не просто технічна деталь, а стратегічне рішення, яке безпосередньо впливає на продуктивність, надійність і масштабованість інфраструктури. У production-системах, де критичними є стабільність і пе...

category DevOps person iron_will event 14/04/2026

Zero Trust архітектура на практиці: принципи, впровадження та технічні кейси

Вступ Класичні моделі кібербезпеки, що базуються на периметрі мережі, давно втратили ефективність. Сучасні ІТ-інфраструктури характеризуються гібридністю, розподіленістю та активним використанням хмарних сервісів. У таких умовах концепція «довіряй,...

category Security person iron_will event 05/04/2026
cookie
Цей сайт використовує cookies для покращення роботи. Детальніше