Мережа Kubernetes

Мережа Kubernetes є основою для забезпечення комунікації контейнерів та сервісів у кластері Kubernetes, а також з зовнішніми мережами. Ось ключові концепції та компоненти мережі Kubernetes:

1. Модель плоскої мережі

Kubernetes припускає наявність плоскої мережі на рівні 2, де всі поди можуть комунікувати з іншими подами, незалежно від того, на якому вузлі вони знаходяться. Ця модель спрощує мережеву конфігурацію, усуваючи необхідність у складній маршрутизації, але припускає наявність певних мережевих можливостей:

  • IP-адреси подів (Pods’ IP Addresses): Кожен под отримує свою IP-адресу, яка є маршрутизованою всередині кластера. Ця IP-адреса залишається незмінною на весь період існування пода, що спрощує виявлення сервісів.
  • IP сервісу (Service IP): Сервіси Kubernetes є абстракцією для експонування додатків, що працюють на наборі подів, як мережевий сервіс. Вони отримують стабільну IP-адресу (ClusterIP), яка не змінюється, навіть якщо поди, що знаходяться за сервісом, змінюються.

2. Плагіни мережі (CNI — Container Network Interface)

Kubernetes не займається налаштуванням мережі самостійно, а використовує плагіни CNI для цієї функціональності:

  • Flannel: Забезпечує просту накладену мережу, яка дає кожному поду IP-адресу, яку можна адресувати з будь-якого вузла в кластері.
  • Calico: Пропонує виконання мережевих політик, забезпечення безпечного мережевого з'єднання та підтримку як локальних, так і хмарних розгортань. Може надавати як мережеве з'єднання, так і мережеві політики в одному рішенні.
  • Weave Net: Автоматично налаштовує мережу для контейнерів, включаючи шифрування трафіку між вузлами.
  • Cilium: Орієнтується на надання мережі та безпеки з акцентом на продуктивність, особливо для мікросервісів, працюючи на 3-му та 4-му рівнях.

3. Виявлення сервісів

Kubernetes надає службу виявлення сервісів на основі DNS:

  • Внутрішній DNS (Internal DNS): Кожен сервіс отримує DNS-ім’я (наприклад, my-service.namespace.svc.cluster.local), яке можуть використовувати поди для пошуку сервісів всередині кластера.
  • Зовнішній DNS (External DNS): Для експонування сервісів поза кластером можна інтегруватися з зовнішніми DNS-розв'язувачами або використовувати Ingress-контролери Kubernetes.

4. Мережеві політики

Kubernetes дозволяє вказати, як групи подів можуть комунікувати між собою та з іншими мережевими кінцевими точками. Мережеві політики є способом контролю трафіку на рівні IP-адрес або портів:

  • Правила Ingress та Egress (Ingress and Egress Rules): Визначають, які поди можуть входити в мережу або виходити з неї.

5. Ingress

Ingress керує зовнішнім доступом до сервісів у кластері, зазвичай через HTTP та HTTPS:

  • Ingress Controller: Реалізація специфікації Ingress. Прикладом є NGINX, Traefik або HAProxy.

6. Балансування навантаження

Kubernetes підтримує балансування навантаження на різних рівнях:

  • Service Load Balancer: Автоматично створює балансувальник навантаження у підтримуваних хмарних середовищах.
  • NodePort: Експонує сервіс на IP кожного вузла на статичному порту.
  • Зовнішні балансувальники навантаження (External Load Balancers): Для локальних рішень або складніших сценаріїв.

7. Міжподова комунікація (Inter-Pod Communication)

Поди комунікують через свої IP-адреси, які керуються плагіном CNI. Така комунікація може бути прямою, якщо поди знаходяться на одному вузлі, або маршрутизуватися через накладену мережу, якщо вони знаходяться на різних вузлах.

8. Мережева безпека (Network Security)

Безпека посилюється за допомогою мережевих політик, політик безпеки подів та використання безпечних мережевих плагінів, які можуть шифрувати трафік.

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

Перекладено з: Kubernetes Networking

Leave a Reply

Your email address will not be published. Required fields are marked *