Udostępnij za pośrednictwem


Przygotowywanie klastra Kubernetes z obsługą usługi Azure Arc

Klaster Kubernetes z obsługą usługi Azure Arc jest wymaganiem wstępnym do wdrażania operacji usługi Azure IoT. W tym artykule opisano sposób przygotowania klastra przed wdrożeniem operacji usługi Azure IoT. Ten artykuł zawiera wskazówki dotyczące systemów Ubuntu i Windows.

Kroki opisane w tym artykule przygotowują klaster do wdrożenia ustawień bezpiecznych, co jest dłuższym, ale gotowym do produkcji procesem. Jeśli chcesz szybko wdrożyć operacje usługi Azure IoT i uruchomić przykładowe obciążenie tylko przy użyciu ustawień testowych, zobacz Przewodnik Szybki start: uruchamianie operacji usługi Azure IoT w usłudze GitHub Codespaces przy użyciu języka K3s . Aby uzyskać więcej informacji na temat ustawień testów i bezpiecznych ustawień, zobacz Szczegóły > wdrożenia Wybierz swoje funkcje.

Wymagania wstępne

Firma Microsoft obsługuje podstawy usługi Azure Kubernetes Service (AKS) Edge na potrzeby wdrożeń w systemach Windows i K3 na potrzeby wdrożeń w systemie Ubuntu. Jeśli chcesz wdrożyć operacje usługi Azure IoT w rozwiązaniu z wieloma węzłami, użyj K3s w systemie Ubuntu.

Aby przygotować klaster Kubernetes z włączoną usługą Azure Arc, potrzebne są następujące elementy:

  • Subskrypcja platformy Azure z rolą Właściciel lub kombinacją ról Współautor i Administrator dostępu użytkowników. Poziom dostępu możesz sprawdzić, przechodząc do subskrypcji, wybierając pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) po lewej stronie witryny Azure Portal, a następnie wybierając pozycję Wyświetl mój dostęp. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz je bezpłatnie .

  • Grupa zasobów platformy Azure. Obsługiwane jest tylko jedno wystąpienie operacji usługi Azure IoT na grupę zasobów. Aby utworzyć nową grupę zasobów, użyj polecenia az group create . Aby uzyskać listę aktualnie obsługiwanych regionów świadczenia usługi Azure, zobacz Obsługiwane regiony.

    az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
    
  • Interfejs wiersza polecenia platformy Azure w wersji 2.64.0 lub nowszej zainstalowany na maszynie klastra. Użyj az --version polecenia , aby sprawdzić wersję i az upgrade zaktualizować w razie potrzeby. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure.

  • Najnowsza wersja rozszerzenia connectedk8s dla interfejsu wiersza polecenia platformy Azure:

    az extension add --upgrade --name connectedk8s
    
  • Sprzęt spełniający wymagania systemowe:

  • Jeśli zamierzasz wdrożyć operacje usługi Azure IoT w klastrze wielowęźle z włączoną odpornością na uszkodzenia, zapoznaj się z wymaganiami dotyczącymi sprzętu i magazynu w temacie Przygotowywanie woluminów usługi Linux for Edge.

Tworzenie klastra i włączanie usługi Arc

Ta sekcja zawiera kroki tworzenia klastrów w zweryfikowanych środowiskach w systemach Linux i Windows.

Aby przygotować klaster Kubernetes K3s w systemie Ubuntu:

  1. Utwórz klaster K3s z jednym węzłem lub wieloma węzłami. Przykłady można znaleźć w przewodniku Szybki start K3s lub projektach związanych z językiem K3s.

  2. Sprawdź, czy narzędzie kubectl zostało zainstalowane w ramach K3s. Jeśli nie, postępuj zgodnie z instrukcjami, aby zainstalować narzędzie kubectl w systemie Linux.

    kubectl version --client
    
  3. Postępuj zgodnie z instrukcjami, aby zainstalować program Helm.

  4. Utwórz plik yaml konfiguracji K3s w pliku .kube/config:

    mkdir ~/.kube
    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
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. 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
    
  6. Aby uzyskać lepszą wydajność, zwiększ limit deskryptora plików:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Włączanie klastra w usłudze Arc

Połącz klaster z usługą Azure Arc, aby można było nim zarządzać zdalnie.

  1. Na maszynie, na której wdrożono klaster Kubernetes, zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu konta użytkownika Microsoft Entra, które ma wymagane role dla subskrypcji platformy Azure:

    az login
    

    Jeśli w dowolnym momencie wystąpi błąd informujący, że urządzenie jest wymagane do zarządzania dostępem do zasobu, uruchom ponownie polecenie az login i upewnij się, że logujesz się interaktywnie za pomocą przeglądarki.

  2. Po zalogowaniu interfejs wiersza polecenia platformy Azure wyświetla wszystkie subskrypcje i wskazuje domyślną subskrypcję gwiazdką *. Aby kontynuować subskrypcję domyślną, wybierz pozycję Enter. W przeciwnym razie wpisz liczbę subskrypcji platformy Azure, której chcesz użyć.

  3. 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"
    
  4. Użyj polecenia az connectedk8s connect, aby włączyć klaster Kubernetes w usłudze Arc i zarządzać nim w ramach grupy zasobów platformy Azure.

    az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Aby zapobiec nieplanowanym aktualizacjom usługi Azure Arc i rozszerzeń systemu Arc używanych przez operacje usługi Azure IoT jako zależności, to polecenie wyłącza automatyczne aktualizowanie. Zamiast tego ręcznie uaktualnij agentów zgodnie z potrzebami.

    Ważne

    Jeśli środowisko używa serwera proxy lub usługi Azure Arc Gateway, zmodyfikuj az connectedk8s connect polecenie przy użyciu informacji o serwerze proxy:

    1. Postępuj zgodnie z instrukcjami podanymi w artykule Nawiązywanie połączenia przy użyciu serwera proxy ruchu wychodzącego lub dołączanie klastrów Kubernetes do usługi Azure Arc za pomocą usługi Azure Arc Gateway.
    2. Dodaj 169.254.169.254 do --proxy-skip-range parametru az connectedk8s connect polecenia . Usługa Azure Device Registry używa tego lokalnego punktu końcowego do uzyskiwania tokenów dostępu do autoryzacji.

    Operacje usługi Azure IoT nie obsługują serwerów proxy, które wymagają zaufanego certyfikatu.

  5. Pobierz adres URL wystawcy klastra.

    az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    Zapisz dane wyjściowe tego polecenia, aby użyć go w następnych krokach.

  6. Utwórz plik konfiguracji k3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Dodaj następującą zawartość do config.yaml pliku, zastępując <SERVICE_ACCOUNT_ISSUER> symbol zastępczy adresem URL wystawcy klastra.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Zapisz plik i zamknij edytor nano.

  9. Przygotuj się do włączenia usługi Azure Arc, lokalizacji niestandardowej w klastrze Arc, uzyskując identyfikator obiektu lokalizacji niestandardowej i zapisując go jako zmienną środowiskową, OBJECT_ID. Musisz zalogować się do interfejsu wiersza polecenia platformy Azure przy użyciu konta użytkownika microsoft Entra, aby pomyślnie uruchomić polecenie, a nie jednostkę usługi. Uruchom następujące polecenie dokładnie zgodnie z zapisem bez zmiany wartości identyfikatora GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

Uwaga

Jeśli zostanie wyświetlony błąd: "Nie można pobrać identyfikatora aplikacji "custom-locations". Operacja będzie kontynuowana bez włączania tej funkcji. Niewystarczające uprawnienia do ukończenia operacji" może być używana jednostka usługi, która nie ma uprawnień niezbędnych do pobrania identyfikatora obiektu lokalizacji niestandardowej. Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu konta użytkownika Microsoft Entra spełniającego wymagania wstępne.

  1. Użyj polecenia az connectedk8s enable-features, aby włączyć funkcję lokalizacji niestandardowej w klastrze Arc. To polecenie używa zmiennej środowiskowej OBJECT_ID zapisanej w poprzednim kroku, aby ustawić wartość parametru custom-locations-oid. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:

    az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  2. Uruchom ponownie K3s.

    systemctl restart k3s
    

Konfigurowanie klastrów z wieloma węzłami dla usługi Azure Container Storage

W klastrach z wieloma węzłami z co najmniej trzema węzłami można włączyć odporność na uszkodzenia magazynu z usługą Azure Container Storage włączoną przez usługę Azure Arc podczas wdrażania operacji usługi Azure IoT.

Jeśli chcesz włączyć odporność na uszkodzenia podczas wdrażania, skonfiguruj klastry, wykonując kroki opisane w artykule Przygotowywanie woluminów usługi Linux dla usługi Edge przy użyciu klastra z systemem Ubuntu z wieloma węzłami.

Konfiguracja zaawansowana

Na tym etapie, gdy masz klaster Kubernetes z włączoną usługą Azure Arc, ale przed wdrożeniem w nim operacji usługi Azure IoT możesz skonfigurować klaster pod kątem zaawansowanych scenariuszy.

Następne kroki

Teraz, gdy masz klaster Kubernetes z włączoną usługą Azure Arc, możesz wdrożyć operacje usługi Azure IoT.