Предоставление служб Kubernetes внешним устройствам
Если вы работаете с приложениями Kubernetes, вам может потребоваться сделать службы Kubernetes доступными для внешних устройств, чтобы они могли взаимодействовать с развернутыми рабочими нагрузками. В этой статье объясняется, как предоставлять службы Kubernetes, работающие в кластере AKS Edge Essentials, внешним устройствам. В зависимости от конфигурации сети, используемой для настройки кластера Kubernetes, существует два разных способа предоставления служб:
- Один кластер компьютеров с перенаправлением портов.
- Масштабируемый кластер с внешним виртуальным коммутатором.
Примечание.
Если вы используете службы 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, контекстах и форматировании. Выполните следующие действия, чтобы настроить перенаправление портов:
Откройте сеанс PowerShell с повышенными привилегиями.
Включите порт правила брандмауэра для внешнего порта операционной системы Windows. Дополнительные сведения см. в статье New-NetFirewallRule:
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Получите IP-адрес целевой службы в пространстве имен:
kubectl get service -n <namespace>
Настройте перенаправление портов с порта ос узла 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
и порта30034
Linux. Эта служба должна быть доступной через порт 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 непосредственно внешним устройствам во внешней сети без необходимости переадресации портов.