Udostępnij za pomocą


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, Windows, Azure Local i Tanzu Kubernetes Grid (TKG).

Jeśli chcesz szybko wdrożyć operacje usługi Azure IoT i uruchomić przykładowe obciążenie w środowisku testowym, zobacz Przewodnik Szybki start: uruchamianie operacji usługi Azure IoT w usłudze GitHub Codespaces przy użyciu języka K3s.

Wymagania wstępne

Firma Microsoft wspiera Azure Kubernetes Service (AKS) Edge Essentials dla wdrożeń w systemie Windows, K3s dla wdrożeń w systemie Ubuntu, wdrożenia AKS na platformie Azure Local oraz wydanie Tanzu Kubernetes (TKr) na TKG. 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ółtwórca i Administrator dostępu użytkownika. 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 Azure w wersji 2.62.0 lub nowszej jest zainstalowany na klastrowej maszynie. Użyj az --version do sprawdzenia swojej wersji i az upgrade do aktualizacji, jeśli to konieczne. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure.

  • Najnowsza wersja rozszerzenia connectedk8s dla interfejsu Azure CLI:

    az extension add --upgrade --name connectedk8s
    

Utwórz klaster i włącz 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 powiązanych z K3s.

  2. Sprawdź, czy kubectl został zainstalowany jako część 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 .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 monitorowania/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łącz klaster w usłudze Arc

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

  1. Na maszynie, która ma kubectl dostęp do klastra, zaloguj się do Azure CLI przy użyciu konta użytkownika Microsoft Entra, który ma odpowiednie 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 operacji /register/action, które są uwzględnione w ramach ról Subskrybenta Kontrybutora i Właściciela. 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 połączenie przy użyciu serwera proxy wychodzącego lub dołącz klastry Kubernetes do Azure Arc za pomocą usługi Azure Arc Gateway.
    2. Dodaj 169.254.169.254 do parametru --proxy-skip-range polecenia az connectedk8s connect. 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 pliku config.yaml, zastępując element zastępczy <SERVICE_ACCOUNT_ISSUER> 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. Aby pomyślnie uruchomić polecenie, musisz być zalogowany do Azure CLI przy użyciu konta użytkownika Microsoft Entra, a nie jako jednostka 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". Kontynuacja bez włączenia funkcji. Niewystarczające uprawnienia do ukończenia operacji", oznacza, że twoja jednostka usługi może nie mieć niezbędnych uprawnień do pobrania identyfikatora obiektu lokalizacji niestandardowej. Zaloguj się do Azure CLI przy użyciu konta użytkownika Microsoft Entra spełniającego wymagania. Aby uzyskać więcej informacji, zobacz Tworzenie lokalizacji niestandardowych i zarządzanie nimi.

  10. 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
    
  11. Uruchom ponownie K3s.

    systemctl restart k3s
    

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

W klastrach systemu Ubuntu z wieloma węzłami, mających co najmniej trzy węzły, można włączyć odporność na błędy przechowywania, korzystając z usługi Azure Container Storage włączonej przez Azure Arc podczas wdrażania Operacji Azure IoT.

Jeśli chcesz włączyć odporność na uszkodzenia podczas wdrażania, skonfiguruj klastry, wykonując kroki opisane w Przygotowywanie Linuksa do woluminów Edge z użyciem klastra Ubuntu z wieloma węzłami.

Jeśli używasz klastra w dystrybucji Kubernetes innej niż k3s, zapoznaj się ze wskazówkami dotyczącymi przygotowywania systemu Linux na innych platformach.

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ć operację usługi Azure IoT przy użyciu ustawień testowych lub ustawień produkcyjnych.

  • Wdrożenie testowe: zalecane do szybkiej oceny i tworzenia prototypów przed wdrożeniem w środowisku produkcyjnym. Wdrożenie testowe nie jest odpowiednie dla środowiska produkcyjnego, ponieważ brakuje mu zdolności do obserwowalności i wzmocnionych zabezpieczeń.
  • Wdrożenie produkcyjne: zalecane w przypadku obciążeń gotowych do produkcji. Wdrożenie produkcyjne jest odpowiednie dla rzeczywistych wdrożeń IoT z wymaganiami dotyczącymi zgodności i zabezpieczeń.