Сеть Kubernetes на устройстве Azure Stack Edge Pro с GPU

ОБЛАСТЬ ПРИМЕНЕНИЯ:Yes for Pro GPU SKUAzure Stack Edge Pro — GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

При настройке роли вычислений на устройстве Azure Stack Edge Pro с GPU создается кластер Kubernetes. После создания кластера Kubernetes контейнерные приложения можно развернуть в кластере Kubernetes в объектах Pod. Существуют различные способы использования сети для объектов Pod в кластере Kubernetes.

В этой статье содержится общее описание сети в кластере Kubernetes для контекста устройства Azure Stack Edge Pro с GPU.

Требования к сети

Ниже приведен пример типичного двухуровневого приложения, развернутого в кластере Kubernetes.

  • Приложение содержит интерфейсный веб-сервер и приложение базы данных в серверной части.
  • Каждому объекту pod назначается IP-адрес, но эти IP-адреса могут измениться при перезапуске и обработке отказа объекта pod.
  • Каждое приложение состоит из нескольких объектов pod. По всем репликам объектов pod необходимо обеспечить балансировку нагрузки трафика.

Kubernetes networking requirements

Для приведенного выше сценария характерны следующие сетевые требования:

  • Необходимо, чтобы доступное из Интернета приложение было доступно пользователю приложения за пределами кластера Kubernetes через имя или IP-адрес.
  • Необходимо обеспечить возможность взаимодействия приложений в кластере Kubernetes, например интерфейсных и серверных объектов pod.

Чтобы решить обе указанные выше задачи, мы представляем службу Kubernetes.

сетевые службы;

Существует два типа служб Kubernetes:

  • Служба IP-адресов кластера. Эта служба предоставляет постоянную конечную точку для pod приложения. К любому объекту pod, связанному с этими службами, нельзя получить доступ извне кластера Kubernetes. IP-адрес, используемый этими службами, взят из диапазона адресов частной сети.

    Чтобы предоставлять pod в кластере Kubernetes для доступа через другие объекты pod, а не через службу подсистемы балансировки нагрузки с доступом извне, воспользуйтесь статьей Предоставление службы Kubernetes в качестве IP-службы кластера для внутренней связи.

  • IP-адрес подсистемы балансировки нагрузки: функционирует аналогично службе IP-адресов кластера, но в этом случае связанный IP-адрес поступает из внешней сети, и к нему можно получить доступ извне кластера Kubernetes.

Конфигурация сети Kubernetes

IP-адреса, используемые для узлов Kubernetes и внешних служб, предоставляются через страницу Compute (Вычисления) в локальном пользовательском интерфейсе устройства.

Kubernetes IP assignment in local UI

Назначение IP-адреса предназначено для:

  • IP-адресов узлов Kubernetes: этот диапазон IP-адресов используется для главных и рабочих узлов Kubernetes. Эти IP-адреса используются при обмене данными между узлами Kubernetes.
  • IP-адреса внешних служб Kubernetes: этот диапазон IP-адресов используется для внешних служб (также известных как службы подсистемы балансировки нагрузки), которые доступны за пределами кластера Kubernetes.

Компоненты сети Kubernetes

Calico, Metallb и Core DNS — это компоненты, устанавливаемые для работы в сети на устройстве Azure Stack Edge Pro с GPU.

  • Calico назначает IP-адрес из диапазона частных IP-адресов каждому pod и настраивает сеть для этих объектов pod таким образом, чтобы обеспечить возможность взаимодействия с объектами pod в других узлах.
  • Metallb выполняется в объекте pod в кластере и назначает IP-адрес службам типа load balancer. IP-адреса подсистемы балансировки нагрузки выбираются из диапазона IP-адресов службы, предоставленного через локальный пользовательский интерфейс.
  • Core DNS . Эта надстройка настраивает имя службы сопоставления записей DNS с IP-адресом кластера.

При подключении к устройству через интерфейс PowerShell вы увидите указанные выше сетевые компоненты, работающие в кластере Kubernetes.

Сетевые интерфейсы и коммутаторы

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

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

  • Внешний виртуальный коммутатор создается, когда вы настраиваете порт устройства для вычислительной среды на странице Compute (Вычисления) в локальном пользовательском интерфейсе. Этот коммутатор вы будете использовать для связи с вычислительной инфраструктурой, например с развертываемыми на устройстве виртуальными машинами.

  • Внутренний виртуальный коммутатор создается в процессе заводской настройки устройства по умолчанию. Внутренний виртуальный коммутатор использует преобразование сетевых адресов (NAT) для маршрутизации трафика через каждый порт, настроенный в шлюзе по умолчанию. Например, этот пример коммутатора позволяет маршрутизировать все запросы в среде выполнения Интернета вещей от виртуальных машин к порталу Azure.

Сетевые маршруты

Трафик виртуальных машин Kubernetes на устройстве можно маршрутизировать, добавляя новые конфигурации маршрутов. Конфигурация маршрутов — это запись в таблице маршрутизации со следующими полями:

Параметр Описание
Назначение Введите IP-адрес или префикс IP-адресов.
Длина префикса Длина префикса, соответствующая адресу или диапазону адресов в целевой сети.
Следующий прыжок IP-адрес, на который переадресовывается пакет.
Интерфейс Сетевой интерфейс, который переадресовывает IP-пакет.
Метрика Метрика маршрутизации определяет предпочитаемый сетевой интерфейс для достижения целевой сети.

Изменение маршрутизации в сети вычислительной среды

Маршрутизацию на виртуальных машинах главного и рабочего узлов Kubernetes можно изменить с помощью командлета Add-HcsNetRoute. Изучите предложенный на приведенной ниже схеме макет.

Azure Stack Edge networking diagram

  • Порт 2 подключен к Интернету и объявлен предпочтительным путем для всего исходящего трафика.
  • Кроме того, вы настроили вычислительную среду в порте 3, после чего в этом сетевом интерфейсе был создан внешний виртуальный коммутатор.
  • Порт 3 подключен к частной сети с камерами и другими датчиками. Они передают необработанные данные на устройство Azure Stack Edge для обработки.

Если в среде вашей частной сети настроен шлюз, следует задать настраиваемые маршруты для виртуальных машин главного и рабочего узлов Kubernetes. Это позволит им обмениваться данными с таким шлюзом, но только для нужного трафика. Так вы сохраните контроль над потоками трафика между сетью вычислительной среды и другими портами, которые могут быть настроены на устройстве Azure Stack Edge. Например, весь остальной трафик в Интернет вы можете направить в другой физический порт устройства. В нашем примере трафик в Интернет можно передавать через порт 2.

Также следует учитывать следующие факторы:

  • Если вы используете одноуровневую подсеть, эти маршруты не нужно добавлять в частную сеть. При желании вы можете добавлять такие маршруты, если в частной сети есть несколько подсетей.
  • Вы можете добавлять такие маршруты только на виртуальные машины главного и рабочего узлов Kubernetes, но не на базовое устройство (узел Windows).
  • Вычислительную среду Kubernetes не обязательно настраивать до настройки этих маршрутов. Кроме того, вы можете добавлять или изменять маршруты после настройки вычислительной среды Kubernetes.
  • Новую конфигурацию маршрутов можно добавлять только через интерфейс PowerShell устройства, но не через локальный пользовательский интерфейс.
  • Обязательно используйте только сетевые интерфейсы со статической конфигурацией.

Добавление конфигурации маршрутов

Чтобы добавить настраиваемый маршрут в частную сеть, выполните следующий командлет:

Add-HcsNetRoute -InterfaceAlias <Port number> -DestinationPrefix <Destination IP address or IP address prefix> -NextHop <IP address of next hop> -RouteMetric <Route metric number> 

Ниже приведен пример выходных данных.

Add-HcsNetRoute -InterfaceAlias "Port3" -DestinationPrefix "192.168.20.0/24" -NextHop "192.168.20.1" -RouteMetric 100 

Приведенная выше команда создаст запись в таблице маршрутизации, которая определяет целевую подсеть 192.168.20.0/24, указывает следующий прыжок как 192.168.20.1 и назначает эту запись маршрутизации метрикой маршрутизации 100. Чем ниже значение метрики маршрутизации, тем более высокий приоритет назначается маршруту.

Проверка конфигурации маршрутов

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

Get-HcsNetRoute -InterfaceAlias <Port number>

Удаление конфигурации маршрутов

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

Remove-HcsNetRoute -InterfaceAlias <Port number> -DestinationPrefix <Destination IP or IP prefix>

Маршрутизация с несколькими сетевыми интерфейсами

Если к устройству подключены несколько портов, то для него не поддерживается стандартное объединение сетевых интерфейсов SET (Объединение внедренных коммутаторов), которое позволяет объединить несколько физических сетевых адаптеров в единый виртуальный сетевой адаптер в среде Hyper-V.

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

Ознакомьтесь со сведениями о настройке сети Kubernetes на устройстве Azure Stack Edge Pro с GPU: