Настройка azure IoT Layered Network Management (предварительная версия) на уровне 4 кластера
Azure IoT Layered Network Management (предварительная версия) — это компонент для поддержки операций Интернета вещей Azure. Однако его необходимо развернуть отдельно на верхнем сетевом уровне для поддержки операций Интернета вещей Azure на нижнем уровне. На верхнем уровне сетевых слоев (обычно это уровень 4 сетевой архитектуры ISA-95), кластер и служба управления сетями уровня имеют прямой доступ к Интернету. После завершения установки служба управления многоуровневой сетью (предварительная версия) готова к получению сетевого трафика из дочернего слоя и перенаправит ее в Azure Arc.
Необходимые компоненты
Соблюдайте следующие минимальные требования к развертыванию многоуровневого сетевого управления отдельно в системе.
- Кластер AKS Edge Essentials - Arc и категория GitOps в требованиях AKS Edge Essentials и матрица поддержки
- Требования к системе Kubernetes с поддержкой Azure Arc для кластера - K3S Kubernetes
Настройка кластера Kubernetes на уровне 4
Чтобы настроить только многоуровневое управление сетями, предварительные требования проще, чем развертывание операций Интернета вещей Azure. Это необязательно для выполнения общих требований для операций Интернета вещей Azure в подготовке кластера Kubernetes.
Следующие действия по настройке кластера AKS Edge Essentials и K3S Kubernetes проверяются корпорацией Майкрософт.
Подготовка компьютера Ubuntu
Ubuntu 22.04 LTS — это рекомендуемая версия для хост-компьютера.
Установите Helm 3.8.0 или более поздней версии.
Установите Kubectl.
Установите интерфейс командной строки Azure. Вы можете установить Azure CLI непосредственно на компьютере уровня 4 или на другом компьютере разработчика или прыжка, если вы планируете удаленно получить доступ к кластеру уровня 3. Если вы решили удаленно получить доступ к кластеру Kubernetes, чтобы обеспечить очистку узла кластера, выполните связанные команды kubectl и az", связанные с компьютером разработчика для остальных действий, описанных в этой статье.
Установите Azure CLI. Выполните действия, описанные в статье "Установка Azure CLI в Linux".
Установите подключенныеk8s и другие расширения.
az extension add --name connectedk8s az extension add --name k8s-extension
Создание кластера K3S
Установите K3S со следующей командой:
curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
Дополнительные сведения см. в кратком руководстве по K3s.
Внимание
Не забудьте использовать
--disable=traefik
параметр для отключения traefik. В противном случае может возникнуть проблема при попытке выделить общедоступный IP-адрес для службы управления многоуровневой сетью в последующих шагах.Скопируйте файл yaml
.kube/config
конфигурации K3s в .mkdir ~/.kube cp ~/.kube/config ~/.kube/config.back sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged mv ~/.kube/merged ~/.kube/config chmod 0600 ~/.kube/config export KUBECONFIG=~/.kube/config #switch to k3s context kubectl config use-context default
Включение Arc кластера
Войдите с помощью Azure CLI. Чтобы избежать проблем с разрешениями позже, важно интерактивно войти в систему с помощью окна браузера:
az login
Задайте переменные среды для шагов установки. Замените значения в
<>
допустимых значениях или именах.RESOURCE_GROUP
ОниCLUSTER_NAME
создаются на основе указанных имен. Ознакомьтесь с поддерживаемыми регионами операций Интернета вещей Azure для выбораLOCATION
.# Id of the subscription where your resource group and Arc-enabled cluster will be created $SUBSCRIPTION_ID = "<subscription-id>" # Azure region where the created resource group will be located $LOCATION = "<region>" # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources $RESOURCE_GROUP = "<resource-group-name>" # Name of the Arc-enabled cluster to create in your resource group $CLUSTER_NAME = "<cluster-name>"
Задайте контекст подписки Azure для всех команд:
az account set -s $SUBSCRIPTION_ID
Зарегистрируйте необходимых поставщиков ресурсов в подписке:
Примечание.
Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на
/register/action
операцию, которая включается в роли участника подписки и владельца. Дополнительные сведения см. в разделе "Поставщики и типы ресурсов Azure".az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration"
Используйте команду az group create, чтобы создать группу ресурсов в подписке Azure для хранения всех ресурсов:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Используйте команду az connectedk8s connect, чтобы включить кластер Kubernetes и управлять им в группе ресурсов, созданной на предыдущем шаге:
az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Развертывание многоуровневой службы управления сетями в кластере
После включения Arc кластера Kubernetes можно развернуть службу управления многоуровневой сетью в кластере.
Установка оператора управления многоуровневой сетью
Выполните следующую команду. Замените заполнители
<RESOURCE GROUP>
и<CLUSTER NAME>
сведения о подключении Arc на предыдущем шаге.az login az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
Используйте команду kubectl, чтобы проверить, запущен ли оператор управления многоуровневой сетью.
kubectl get pods
NAME READY STATUS RESTARTS AGE azedge-lnm-operator-598cc495c-5428j 1/1 Running 0 28h
Настройка службы управления многоуровневой сетью
Создайте настраиваемый ресурс управления многоуровневой сетью.
lnm-cr.yaml
Создайте файл, как указано:- Для отладки или экспериментирования можно изменить значение параметра loglevel для отладки.
- Дополнительные сведения о конечных точках см. в статье о конечных точках Операций Интернета вещей Azure.
apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1 kind: Lnm metadata: name: level4 namespace: default spec: image: pullPolicy: IfNotPresent repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless tag: v1.27.0 replicas: 1 logLevel: "debug" openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317" level: 4 allowList: enableArcDomains: true domains: - destinationUrl: "management.azure.com" destinationType: external - destinationUrl: "*.dp.kubernetesconfiguration.azure.com" destinationType: external - destinationUrl: "login.microsoftonline.com" destinationType: external - destinationUrl: "*.login.microsoft.com" destinationType: external - destinationUrl: "login.windows.net" destinationType: external - destinationUrl: "mcr.microsoft.com" destinationType: external - destinationUrl: "*.data.mcr.microsoft.com" destinationType: external - destinationUrl: "gbl.his.arc.azure.com" destinationType: external - destinationUrl: "*.his.arc.azure.com" destinationType: external - destinationUrl: "k8connecthelm.azureedge.net" destinationType: external - destinationUrl: "guestnotificationservice.azure.com" destinationType: external - destinationUrl: "*.guestnotificationservice.azure.com" destinationType: external - destinationUrl: "sts.windows.net" destinationType: external - destinationUrl: "k8sconnectcsp.azureedge.net" destinationType: external - destinationUrl: "*.servicebus.windows.net" destinationType: external - destinationUrl: "graph.microsoft.com" destinationType: external - destinationUrl: "*.arc.azure.net" destinationType: external - destinationUrl: "*.obo.arc.azure.com" destinationType: external - destinationUrl: "linuxgeneva-microsoft.azurecr.io" destinationType: external - destinationUrl: "graph.windows.net" destinationType: external - destinationUrl: "*.azurecr.io" destinationType: external - destinationUrl: "*.blob.core.windows.net" destinationType: external - destinationUrl: "*.vault.azure.net" destinationType: external - destinationUrl: "*.blob.storage.azure.net" destinationType: external sourceIpRange: - addressPrefix: "0.0.0.0" prefixLen: 0
Создайте настраиваемый ресурс для создания экземпляра управления многоуровневой сетью.
kubectl apply -f lnm-cr.yaml
Просмотрите службу Kubernetes с многоуровневой сетью:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lnm-level-4 LoadBalancer 10.43.91.54 192.168.0.4 80:30530/TCP,443:31117/TCP,10000:31914/TCP 95s
Добавление конфигурации iptables для AKS Edge Essentials
Внимание
Этот шаг применим только при размещении многоуровневого сетевого управления в кластере AKS Edge Essentials.
Развертывание управления многоуровневой сетью создает службу Kubernetes типа LoadBalancer. Чтобы служба была доступна за пределами кластера Kubernetes, необходимо сопоставить порты узла Windows с соответствующими портами в службе управления многоуровневой сетью.
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.4
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=10000 connectaddress=192.168.0.4
После успешного выполнения этих команд трафик, полученный через порты 443 и 10000 на узле Windows, направляется в службу Kubernetes. При настройке настраиваемого DNS для уровня сети дочернего уровня вы направляете сетевой трафик к IP-адресу этого узла Windows, а затем в службу управления многоуровневой сетью, запущенной на нем.