# Мережа в кластері

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

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

1. Взаємодія контейнерів між собою: цю проблему вирішує використання <a class='glossary-tooltip' title='Pod є групою контейнерів, що запущені у вашому кластері.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/workloads/pods/' target='_blank' aria-label='Podʼів'>Podʼів</a> та взаємодія з `localhost`.
2. Взаємодія між Podʼами: це основна мета даного документа.
3. Взаємодія між Podʼом та Service: ця проблема описана у [Service](/docs/concepts/services-networking/service/).
4. Взаємодія Service із зовнішнім світом: це також описано в контексті Service.

<!-- body -->

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

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

Ознайомтесь докладніше з [мережевою моделлю Kubernetes](/docs/concepts/services-networking/).

## Діапазони IP-адрес Kubernetes {#kubernetes-ip-address-ranges}

Кластери Kubernetes потребують виділення IP-адрес, які не перекриваються, для Podʼів, Service та Вузлів, з діапазону доступних адрес, налаштованих у наступних компонентах:

- Втулок мережі налаштований для призначення IP-адрес Podʼам.
- Kube-apiserver налаштований для призначення IP-адрес Service.
- Kubelet або cloud-controller-manager налаштовані для призначення IP-адрес Вузлам.



<figure class="diagram-medium ">
    <img src="/docs/images/kubernetes-cluster-network.svg"
         alt="Схема, яка ілюструє різні діапазони мережі у кластері Kubernetes"/> 
</figure>

## Типи мереж в кластері {#cluster-network-ipfamilies}

Кластери Kubernetes, залежно від налаштованих типів IP адрес, можуть бути категоризовані на:

- Лише IPv4: Втулок мережі, kube-apiserver та kubelet/cloud-controller-manager налаштовані для призначення лише IPv4-адрес.
- Лише IPv6: Втулок мережі, kube-apiserver та kubelet/cloud-controller-manager налаштовані для призначення лише IPv6-адрес.
- IPv4/IPv6 або IPv6/IPv4 [подвійний стек](/docs/concepts/services-networking/dual-stack/):
  - Втулок мережі налаштований для призначення IPv4 та IPv6-адрес.
  - Kube-apiserver налаштований для призначення IPv4 та IPv6-адрес.
  - Kubelet або cloud-controller-manager налаштовані для призначення IPv4 та IPv6-адрес.
  - Усі компоненти повинні узгоджуватися щодо налаштованого основного типу IP адрес.

Кластери Kubernetes враховують лише типи IP, які присутні в обʼєктах Pod, Service та Node, незалежно від наявних IP-адрес представлених обʼєктів. Наприклад, сервер або Pod може мати кілька IP-адрес призначений його інтерфейсам, але при реалізації мережевої моделі Kubernetes і визначенні типу кластера враховуються тільки IP-адреси в `node.status.addresses` або `pod.status.ips`.

## Як реалізувати мережеву модель Kubernetes {#how-to-implement-kubernetes-network-model}

Модель мережі реалізується середовищем виконання контейнерів на кожному вузлі. Найпоширеніші середовища використовують [Інтерфейс мережі контейнера](https://github.com/containernetworking/cni) (CNI) для керування своєю мережею та забезпечення безпеки. Існує багато різних CNI-втулків від різних вендорів. Деякі з них надають лише базові можливості додавання та видалення мережевих інтерфейсів, тоді як інші надають складніші рішення, такі як інтеграція з іншими системами оркестрування контейнерів, запуск кількох CNI-втулків, розширені функції IPAM та інше.

Див. [цю сторінку](/docs/concepts/cluster-administration/addons/#networking-and-network-policy)
для неповного переліку мережевих надбудов, які підтримуються в Kubernetes.

## Що далі

Ранній дизайн мережевої моделі та її обґрунтування докладно описані у [документі дизайну мережі](https://git.k8s.io/design-proposals-archive/network/networking.md). Щодо майбутніх планів та деяких поточних зусиль, спрямованих на поліпшення мережевих функцій Kubernetes, будь ласка,
звертайтеся до SIG-Network [KEPs](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network).
