33 lines
4.4 KiB
Markdown
33 lines
4.4 KiB
Markdown
---
|
||
reviewers:
|
||
title: Сеть в кластере
|
||
content_type: concept
|
||
weight: 50
|
||
---
|
||
|
||
<!-- overview -->
|
||
Сеть — важная часть Kubernetes, но понять, как именно она работает, бывает непросто. Существует 4 уникальных сетевых проблемы, которые требуют внимнаия:
|
||
|
||
1. Высокосвязанные коммуникации между контейнерами: решается организацией коммуникации между {{< glossary_tooltip text="Pod'ами" term_id="pod" >}} и `localhost`.
|
||
2. Связь Pod'ов друг с другом (Pod-to-Pod): именно ей уделяется основное внимание в этом документе.
|
||
3. Связь Pod'ов с сервисами (Pod-to-Service): подробнее об этом можно почитать в разделе [Сервисы](/docs/concepts/services-networking/service/).
|
||
4. Связь внешних систем с сервисами (External-to-Service): информация о данных коммуникациях также приведена в разделе [Сервисы](/docs/concepts/services-networking/service/).
|
||
|
||
<!-- body -->
|
||
|
||
Суть Kubernetes — в организации совместного использования хостов приложениями. Обычно совместное использование подразумевает, что два приложения не могут задействовать одни и те же порты. Создать единую глобальную схему использования портов очень сложно. В результате пользователи рискуют получить сложноустранимые проблемы на уровне кластера.
|
||
|
||
Динамическое распределение портов значительно усложняет систему: каждое приложение должно уметь принимать порты в виде флагов-параметров, серверы API должны уметь вставлять динамические номера портов в конфигурационные блоки, сервисы должны знать, как найти друг друга и т.п. Вместо того чтобы пытаться разобраться со всем этим, Kubernetes использует иной подход.
|
||
|
||
Больше узнать о сетевой модели Kubernetes можно в [соответствующем разделе](/docs/concepts/services-networking/).
|
||
|
||
## Реализация сетевой модели Kubernetes
|
||
|
||
Сетевая модель реализуется средой исполнения для контейнеров на узлах. Наиболее распространенные среды исполнения используют плагины [Container Network Interface](https://github.com/containernetworking/cni) (CNI) для управления сетью и обеспечения безопаснояти коммуникаций. Существует множество различных плагинов CNI от разных разработчиков. Некоторые из них предлагают только базовые функции, такие как добавление и удаление сетевых интерфейсов. Другие позволяют проводить интеграцию с различныеми системами оркестрации контейнеров, поддерживают запуск нескольких CNI-плагинов/расширенные функции IPAM и т.д.
|
||
|
||
Неполный список сетевых аддонов, поддерживаемых Kubernetes, приведен [на соответствующей странице в разделе "Сеть и сетевая политика"](/docs/concepts/cluster-administration/addons/#networking-and-network-policy).
|
||
|
||
## {{% heading "whatsnext" %}}
|
||
|
||
Подробнее о разработке сетевой модели, принципах, лежащих в ее основе, и некоторых планах на будущее можно узнать из соответствующего [документа](https://git.k8s.io/design-proposals-archive/network/networking.md).
|