Поделиться через


Основные понятия сети контейнеров

Область применения: AKS на Windows Server

Компоненты приложения должны работать вместе, чтобы обработать свои задачи в подходе микрослужб на основе контейнеров. Kubernetes предоставляет ресурсы, которые позволяют взаимодействовать с приложениями и позволяют подключаться к приложениям и предоставлять их внутри или вне себя. Вы можете сбалансировать нагрузку приложений для создания высокодоступных приложений.

Для более сложных приложений может потребоваться настройка входящего трафика для обработки SSL/TLS или маршрутизации нескольких компонентов. Кроме того, может потребоваться ограничить поток сетевого трафика между модулями pod и узлами для обеспечения безопасности.

В этой статье приведены основные понятия, обеспечивающие сети для приложений в AKS на Windows Server:

  • Службы Kubernetes
  • Контроллер входящего трафика
  • Политики сети

Службы Kubernetes

Чтобы упростить конфигурацию сети для рабочих нагрузок приложений, Kubernetes использует службы для логической группировки набора подов и обеспечения сетевого подключения. Доступны следующие типы служб:

Cluster IP: создает внутренний IP-адрес для использования внутри кластера Kubernetes. Используйте IP-адрес кластера для внутренних приложений, поддерживающих другие рабочие нагрузки в кластере.

Схема, показывающая поток трафика IP-адресов кластера в кластере AKS.

NodePort: создает сопоставление портов на базовом узле, которое позволяет приложению напрямую обращаться с IP-адресом узла и портом.

Схема, показывающая поток трафика NodePort в кластере AKS.

LoadBalancer: создает ресурс подсистемы балансировки нагрузки Azure, настраивает внешний IP-адрес и подключает запрошенные модули pod к внутреннему пулу подсистемы балансировки нагрузки. Чтобы разрешить трафику пользователей достичь приложения, необходимо создать правила балансировки загрузки для конкретных портов.

Схема, показывающая поток трафика подсистемы балансировки нагрузки в кластере AKS.

Для другого управления и маршрутизации входящего трафика можно использовать контроллер входящего трафика.

Примечание.

При развертывании целевого кластера, который использует сеть с другим целевым кластером, существует возможность конфликта IP-адресов подсистемы балансировки нагрузки. Это может произойти при развертывании двух рабочих нагрузок, использующих разные порты в целевых кластерах, которые совместно используют один и тот же AksHciClusterNetwork объект. Из-за того, как IP-адреса и сопоставления портов выделяются внутри HAProxy, это может привести к дублированному назначению IP-адресов. Если это происходит, одна или обе нагрузки могут столкнуться со случайными проблемами с сетевым подключением, пока не будет повторно развернуты нагрузки. При повторном развертывании рабочих нагрузок можно использовать один и тот же порт, который приводит к получению каждого из рабочих нагрузок отдельного IP-адреса службы или повторно развернуть рабочие нагрузки в целевых кластерах, использующих разные AksHciClusterNetwork объекты.

ExternalName: создает определенную запись DNS для упрощения доступа к приложению. IP-адреса для подсистем балансировки нагрузки и служб могут быть внутренними или внешними в зависимости от общей настройки сети и могут быть динамически назначены. Кроме того, можно указать существующий статический IP-адрес для использования. Существующий статический IP-адрес часто привязан к записи DNS. Внутренним балансировщикам нагрузки назначается только частный IP-адрес, поэтому они недоступны из интернета.

Основы сети Kubernetes

Чтобы предоставить доступ к приложениям или разрешить компонентам приложений взаимодействовать друг с другом, Kubernetes предоставляет уровень абстракции для виртуальной сети. Узлы Kubernetes подключены к виртуальной сети и могут предоставлять входящие и исходящие подключения для подов. Компонент kube-proxy , работающий на каждом узле, предоставляет эти сетевые функции.

В Kubernetes службы логически группируют pod'ы, чтобы разрешить:

  • Прямой доступ через один IP-адрес или DNS-имя и определенный порт.
  • Распределяйте трафик с помощью балансировщика нагрузки между несколькими подами, где размещена одна и та же служба или приложение.

При создании кластера AKS мы также создадим и настраиваем базовый HAProxy ресурс подсистемы балансировки нагрузки. При развертывании приложений в кластере Kubernetes IP-адреса настраиваются для подов и служб Kubernetes в качестве конечных точек этого балансировщика нагрузки.

Ресурсы IP-адресов

Чтобы упростить конфигурацию сети для рабочих нагрузок приложений, AKS Arc назначает IP-адреса следующим объектам в развертывании:

  • Сервер API кластера Kubernetes: сервер API является компонентом уровня управления Kubernetes, который предоставляет API Kubernetes. Сервер API — это интерфейс для плоскости управления Kubernetes. Статические IP-адреса всегда выделяются серверам API независимо от базовой сетевой модели.
  • Узлы Kubernetes (виртуальные машины): кластер Kubernetes состоит из набора рабочих машин, называемых узлами, а узлы размещают контейнерные приложения. Помимо узлов плоскости управления каждый кластер имеет по крайней мере один рабочий узел. Для кластера AKS узлы Kubernetes настраиваются как виртуальные машины. Эти виртуальные машины создаются как высокодоступные виртуальные машины. Дополнительные сведения см. в разделе "Основные понятия сети узлов".
  • Службы Kubernetes: в Kubernetes службы логически группируйте IP-адреса pod, чтобы разрешить прямой доступ через один IP-адрес или DNS-имя на определенном порту. Службы также могут распределять трафик с помощью подсистемы балансировки нагрузки. Статические IP-адреса всегда выделяются службам Kubernetes независимо от базовой сетевой модели.
  • Подсистемы балансировки нагрузки HAProxy: HAProxy — это подсистема балансировки нагрузки TCP/HTTP и прокси-сервер, который распределяет входящие запросы по нескольким конечным точкам. Каждый кластер рабочей нагрузки в развертывании AKS в Windows Server имеет подсистему балансировки нагрузки HAProxy, развернутую и настроенную в качестве специализированной виртуальной машины.
  • Локальная облачная служба Майкрософт: это поставщик облачных служб, который позволяет создавать и управлять виртуализированной средой, в которой размещается Kubernetes в локальном кластере Windows Server. Сетевая модель, за которой следует кластер Windows Server, определяет метод выделения IP-адресов, используемый локальной облачной службой Майкрософт. Дополнительные сведения о сетевых концепциях, реализованных локальной облачной службой Майкрософт, см . в разделе "Основные понятия сети узлов".

Сети Kubernetes

В AKS в Windows Server можно развернуть кластер, использующий одну из следующих сетевых моделей:

  • Сеть наложения flannel — сетевые ресурсы обычно создаются и настраиваются при развертывании кластера.
  • Сеть Project Calico . Эта модель предлагает дополнительные сетевые функции, такие как политики сети и управление потоками.

Обе реализации сетевой архитектуры используют модель конфигурации наложенной сети, в которой назначение IP-адресов не связано с остальной частью сети центра обработки данных.

Дополнительные сведения о наложении сетей см. в статье "Введение в kubernetes Overlay Networking для Windows".

Дополнительные сведения о подключаемом модуле и политиках сети Calico см. в разделе о начале работы с политикой сети Calico.

Сравнение сетевых моделей

Фланель

Примечание.

Фланнелл CNI был снят в отставку в декабре 2023 года.

Flannel — это уровень виртуальной сети, разработанный специально для контейнеров. Flannel создает плоскую сеть, которая накладывает сеть узла. Всем контейнерам и pod-модулям в этой наложенной сети назначается собственный IP-адрес, и они взаимодействуют напрямую, подключаясь к IP-адресам друг друга.

Calico

Calico — это решение с открытым исходным кодом для сетей и сетевой безопасности контейнеров, виртуальных машин и нативных рабочих нагрузок на компьютерах. Calico поддерживает несколько плоскостей данных, включая плоскость данных Linux eBPF, сетевую плоскость Linux и плоскость данных Windows HNS.

Возможности

Возможность Фланель Calico
Политики сети Нет Да
IPv6 No Да
Используемые слои L2 (VxLAN) L2 (VxLAN)
Развертывание кластера в существующей или новой виртуальной сети Да Да
Поддержка Windows Да Да
Подключение Pod-Pod Да Да
Подключение pod-VM, виртуальная машина в одной сети. Нет Да
Подключение pod-VM, виртуальная машина в другой сети Да Да
Службы Kubernetes Да Да
Предоставление доступа через подсистему балансировки нагрузки Да Да
Сети Много сетей в одном кластере с многими демонами Множество сетей в одном кластере
Развертывание Linux: DaemonSet Linux: DaemonSet
Windows: Служба Windows: Служба
Командная строка ничего calicoctl

Внимание

В настоящее время выбор по умолчанию — использовать Calico в сетевом режиме наложения. Чтобы включить Flannel, используйте -primaryNetworkPlugin параметр New-AksHciCluster команды PowerShell и укажите flannel в качестве значения. Это значение нельзя изменить после развертывания кластера, и оно применяется как к узлам кластера Windows, так и к узлам кластера Linux.

Например:

New-AksHciCluster -name MyCluster -primaryNetworkPlugin 'flannel'

Следующие шаги

В этой статье рассматриваются понятия сети для контейнеров в узлах AKS на Windows Server. Дополнительные сведения об AKS в концепциях Windows Server см. в следующих статьях: