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ę iaz 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:
- Obsługiwane środowiska operacji usługi Azure IoT.
- Wymagania systemowe platformy Kubernetes z obsługą usługi Azure Arc.
- Wymagania K3s.
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:
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.
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
Postępuj zgodnie z instrukcjami, aby zainstalować program Helm.
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
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
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.
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.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ć.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"
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:- 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.
- Dodaj
169.254.169.254
do--proxy-skip-range
parametruaz 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.
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.
Utwórz plik konfiguracji k3s.
sudo nano /etc/rancher/k3s/config.yaml
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
Zapisz plik i zamknij edytor nano.
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.
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
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.
- Jeśli chcesz włączyć funkcje obserwacji w klastrze, wykonaj kroki opisane w artykule Wdrażanie zasobów obserwowania i konfigurowanie dzienników.
- Jeśli chcesz skonfigurować własnego wystawcę certyfikatów w klastrze, wykonaj kroki opisane w temacie Zarządzanie certyfikatami > Przynieś własny wystawca.
Następne kroki
Teraz, gdy masz klaster Kubernetes z włączoną usługą Azure Arc, możesz wdrożyć operacje usługi Azure IoT.