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


Предоставление служб Kubernetes внешним устройствам

Если вы работаете с приложениями Kubernetes, вам может потребоваться сделать службы Kubernetes доступными для внешних устройств, чтобы они могли взаимодействовать с развернутыми рабочими нагрузками. В этой статье объясняется, как предоставлять службы Kubernetes, работающие в кластере AKS Edge Essentials, внешним устройствам. В зависимости от конфигурации сети, используемой для настройки кластера Kubernetes, существует два разных способа предоставления служб:

  1. Один кластер компьютеров с перенаправлением портов.
  2. Масштабируемый кластер с внешним виртуальным коммутатором.

Примечание.

Если вы используете службы Kubernetes, обязательно настройте Init.ServiceIPRangeSize параметры и Init.ServiceIPRangeStart параметры во время развертывания. Дополнительные сведения см. в разделе "Параметры JSON конфигурации развертывания".

Вариант 1. Один кластер компьютеров с перенаправлением портов

Конфигурация кластера одного компьютера AKS Edge Essentials использует внутренний виртуальный коммутатор для управления сетями. Этот коммутатор гарантирует, что все обмен данными между ОС узла Windows и узлом Linux или Windows выполняется с помощью внутренней сети, недоступной внешними устройствами. Дополнительные сведения о сети AKS Edge Essentials см. в разделе "Сети AKS Edge Essentials".

Если вам нужно получить доступ к службе Kubernetes с внешних устройств, настройте перенаправление портов из ос узла Windows на узел Linux или Windows. Если вы используете службу Kubernetes типа LoadBalancer, обязательно получите правильный serviceIp с помощью kubectl get services команды. Если вы используете службу Kubernetes типа ClusterIp или NodePort, используйте IP-адрес узла Linux/Windows Kubernetes.

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

  1. Откройте сеанс PowerShell с повышенными привилегиями.

  2. Включите порт правила брандмауэра для внешнего порта операционной системы Windows. Дополнительные сведения см. в статье New-NetFirewallRule:

    New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
    
  3. Получите IP-адрес целевой службы в пространстве имен:

    kubectl get service -n <namespace>
    
  4. Настройте перенаправление портов с порта ос узла Windows на IP-адрес и порт службы Kubernetes:

    Параметр Описание
    listen-port Порт IPv4 операционной системы Windows, используемый внешними устройствами для взаимодействия со службой Kubernetes.
    listen-address Указывает IPv4-адрес, для которого следует прослушивать ос узла Windows. Если адрес не указан, по умолчанию используется адрес локального компьютера.
    connect-port Указывает порт IPv4, на который необходимо перенаправить трафик. Этот порт должен быть портом службы Kubernetes.
    connect-address Указывает IPv4-адрес, на который необходимо перенаправить трафик. Этот порт должен быть IP-адресом службы Kubernetes.
    netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
    

На следующем примере на рисунке есть две службы Kubernetes, работающие на устройстве Windows с адресом IPv4 10.0.0.2 :

  • Linux-Svc под управлением службы NodePort с IP-адресом узла 192.168.0.2 и порта 30034Linux. Эта служба должна быть доступной через порт 8080 в операционной системе узла Windows.
  • Win-Svc работает в качестве службы LoadBalancer с IP-адресом 192.168.0.5 и портом30035. Эта служба должна быть доступной через порт 8081 в операционной системе узла Windows.

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

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.0.0.2 connectport=30034 connectaddress=192.168.0.2
netsh interface portproxy add v4tov4 listenport=8081 listenaddress=10.0.0.2 connectport=30035 connectaddress=192.168.0.5

Снимок экрана: переадресация внутреннего сетевого порта.

Предупреждение

Если вы не используете статическую конфигурацию сети, может измениться адрес IPv4 хост-ос Windows. Это может повлиять на конфигурации перенаправления портов и целевой IPv4-адрес, используемый внешними устройствами. Чтобы свести к минимуму влияние изменения адреса IPv4, можно использовать более универсальный listenaddressвариант.

Вариант 2. Масштабируемый кластер с внешним виртуальным коммутатором

Конфигурация масштабируемого кластера AKS Edge Essentials использует внешний виртуальный коммутатор для управления сетями. Так как узлы выполняются на разных устройствах, все узлы должны быть подключены к одной сети для взаимодействия друг с другом. Дополнительные сведения о сети AKS Edge Essentials см. в разделе "Сети AKS Edge Essentials".

В этой конфигурации узлы Kubernetes подключены к внешней сети, поэтому службы Kubernetes доступны внешним устройствам без необходимости переадресации портов. Если вы используете службу Kubernetes типа LoadBalancer, получите правильный serviceIp с помощью kubectl get services команды, следуя инструкциям по варианту 1. Если вы используете службу Kubernetes типа ClusterIp или NodePort, используйте IP-адрес узла Linux/Windows Kubernetes.

Примечание.

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

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