Udostępnij za pośrednictwem


Konfigurowanie klastra poziomu 3 w izolowanej sieci za pomocą usługi Azure IoT Layered Network Management (wersja zapoznawcza)

Możesz skonfigurować specjalne izolowane środowisko sieciowe na potrzeby wdrażania operacji usługi Azure IoT. Na przykład poziom 3 lub niższy w architekturze sieci ISA-95. W tym artykule skonfigurujesz klaster Kubernetes i włączysz go za pośrednictwem usługi Azure IoT Layered Network Management (wersja zapoznawcza) na górnym poziomie. Przed rozpoczęciem tego procesu usługa Zarządzania siecią warstwową (wersja zapoznawcza) musi być gotowa do akceptowania żądania połączenia z tego poziomu.

Wykonasz następujące zadania:

  • Skonfiguruj system hosta i zainstaluj wszystkie wymagane oprogramowanie w środowisku dostępnym z Internetu.
  • Zainstaluj wybraną platformę Kubernetes.
  • Przenieś hosta do izolowanego środowiska sieciowego.
  • Użyj dostosowanego ustawienia DNS, aby skierować ruch sieciowy do usługi Zarządzania siecią warstwową na poziomie nadrzędnym.
  • Włączanie usługi Arc w klastrze.

Ważne

Usługa Azure IoT Layered Network Management (wersja zapoznawcza) zostanie wycofana. Zamiast tego skorzystaj z przykładowych wskazówek dotyczących sieci warstwowych , aby zaimplementować zarządzanie siecią warstwową w operacjach usługi Azure IoT.

Wymagania wstępne

Postępuj zgodnie ze wskazówkami dotyczącymi wymagań sprzętowych i sekcji wymagań wstępnych w temacie Przygotowywanie klastra Kubernetes z obsługą usługi Azure Arc.

Konfigurowanie klastra Kubernetes

Możesz użyć usługi AKS Edge Essentials hostowanej w systemie Windows 11 lub klastrze K3S w systemie Ubuntu dla klastra Kubernetes.

Ten krok należy wykonać w środowisku dostępnym z Internetu spoza izolowanej sieci. W przeciwnym razie należy przygotować pakiet instalacyjny offline dla następującego oprogramowania w następnej sekcji.

Przygotowywanie maszyny z systemem Ubuntu

  1. Ubuntu 22.04 LTS jest zalecaną wersją dla maszyny hosta.

  2. Zainstaluj program Helm 3.8.0 lub nowszy.

  3. Zainstaluj narzędzie Kubectl.

  4. Uruchom następujące polecenie, aby zwiększyć limity zegarka/wystąpienia użytkownika.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  5. Aby uzyskać lepszą wydajność, zwiększ limit deskryptora plików:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Zainstaluj następujące opcjonalne oprogramowanie, jeśli planujesz wypróbować przewodniki Szybki start dotyczące operacji usługi Azure IoT lub scenariusze związane z MQTT.

  7. Zainstaluj interfejs wiersza polecenia platformy Azure. Interfejs wiersza polecenia platformy Azure można zainstalować bezpośrednio na maszynie poziomu 3 lub na innej maszynie dewelopera lub serwera przesiadkowego , jeśli planujesz zdalny dostęp do klastra poziomu 3. Jeśli zdecydujesz się uzyskać zdalny dostęp do klastra Kubernetes w celu zachowania czystego hosta klastra, uruchomisz polecenia powiązane z narzędziem kubectl i az" z maszyny deweloperów , aby wykonać pozostałe kroki opisane w tym artykule.

Tworzenie klastra K3S

  1. Zainstaluj usługę K3S przy użyciu następującego polecenia:

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Ważne

    Pamiętaj, aby użyć parametru --disable=traefik , aby wyłączyć traefik. W przeciwnym razie może wystąpić problem podczas próby przydzielenia publicznego adresu IP dla usługi Zarządzania siecią warstwową w kolejnych krokach.

    Alternatywnie możesz skonfigurować usługę K3S w trybie offline, wykonując kroki opisane w dokumentacji Instalacji usługi Air-Gap po przeniesieniu urządzenia do izolowanego środowiska sieciowego.

  2. Skopiuj plik yaml konfiguracji K3s do .kube/configpliku .

    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
    

Przenoszenie urządzenia do poziomu 3 izolowanej sieci

Po przeniesieniu urządzenia do warstwy sieci izolowanej na poziomie 3 wymagane jest posiadanie niestandardowego systemu DNS.

  • Jeśli wybierzesz podejście CoreDNS , wykonaj kroki podane w instrukcji, a klaster jest gotowy do nawiązania połączenia z usługą Arc.
  • Jeśli używasz serwera DNS, musisz mieć gotowy serwer DNS, a następnie skonfigurować ustawienie DNS systemu Ubuntu. W poniższym przykładzie użyto interfejsu użytkownika systemu Ubuntu:
    1. Otwórz ustawienia sieci Wi-Fi.
    2. Wybierz ustawienie bieżącego połączenia.
    3. Na karcie IPv4 wyłącz ustawienie Automatyczne dla systemu DNS i wprowadź lokalny adres IP serwera DNS.
    4. Uruchom ponownie usługę CoreDNS.
      kubectl rollout restart -n kube-system deployment/coredns
      

Aprowizuj klaster w usłudze Azure Arc

Przed zainicjowaniem obsługi administracyjnej w usłudze Azure Arc użyj następującego polecenia, aby upewnić się, że serwer DNS działa zgodnie z oczekiwaniami:

dig login.microsoftonline.com

Dane wyjściowe powinny być podobne do poniższego przykładu. W SEKCJI ODPOWIEDŹ sprawdź, czy adres IP to adres IP maszyny na poziomie nadrzędnym, który został skonfigurowany wcześniej.

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> login.microsoftonline.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28891
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.microsoftonline.com.     IN      A

;; ANSWER SECTION:
login.microsoftonline.com. 0    IN      A       100.104.0.165

Klaster z obsługą usługi Arc

  1. Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure. Aby uniknąć problemów z uprawnieniami później, ważne jest, aby logowanie odbywało się interaktywnie przy użyciu okna przeglądarki:

    az login
    
  2. Ustaw zmienne środowiskowe dla pozostałej części konfiguracji. Zastąp wartości <> prawidłowymi wartościami lub wybranymi nazwami. CLUSTER_NAME I RESOURCE_GROUP są tworzone na podstawie nazw, które podajesz:

    # 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
    # Currently supported regions: : "westus3" or "eastus2"
    $LOCATION = "WestUS3"
    # 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>"
    
  3. Ustaw kontekst subskrypcji platformy Azure dla wszystkich poleceń:

    az account set -s $SUBSCRIPTION_ID
    
  4. Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji:

    Uwaga

    Ten krok musi być uruchamiany tylko raz na subskrypcję. Aby zarejestrować dostawców zasobów, musisz mieć uprawnienia do wykonania /register/action operacji, która jest uwzględniona w rolach Współautor subskrypcji i Właściciel. Aby uzyskać więcej informacji, zobacz Dostawcy zasobów i typy platformy Azure.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  5. Użyj polecenia az group create, aby utworzyć grupę zasobów w ramach subskrypcji platformy Azure w celu przechowywania wszystkich zasobów:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Użyj polecenia az connectedk8s connect z obsługą usługi Arc klastra Kubernetes i zarządzaj nim w grupie zasobów utworzonej w poprzednim kroku:

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    Napiwek

    connectedk8s Jeśli polecenia kończą się niepowodzeniem, spróbuj użyć poleceń cmdlet w temacie Łączenie klastra AKS Edge Essentials z usługą Arc.

Konfigurowanie sieci klastra

Ważne

Te kroki dotyczą tylko podstawowych elementów usługi AKS Edge.

Po wdrożeniu operacji usługi Azure IoT w klastrze włącz połączenia przychodzące z brokerem MQTT i skonfiguruj przekazywanie portów:

  1. Włącz regułę zapory dla portu 18883:
    New-NetFirewallRule -DisplayName "MQTT broker" -Direction Inbound -Protocol TCP -LocalPort 18883 -Action Allow
    
  2. Uruchom następujące polecenie i zanotuj adres IP usługi o nazwie aio-broker:
    kubectl get svc aio-broker -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. Włącz przekazywanie portów dla portu 18883. Zastąp <aio-broker IP address> ciąg adresem IP zanotowanymi w poprzednim kroku:
    netsh interface portproxy add v4tov4 listenport=18883 listenaddress=0.0.0.0 connectport=18883 connectaddress=<aio-broker IP address>