Przygotowywanie klastra Kubernetes z obsługą usługi Azure Arc
Artykuł
Ważne
Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej.
Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.
Klaster Kubernetes z obsługą usługi Azure Arc jest wymaganiem wstępnym do wdrożenia usługi Azure IoT Operations Preview. W tym artykule opisano sposób przygotowywania klastra Kubernetes z obsługą usługi Azure Arc przed wdrożeniem rozszerzeń usługi Azure IoT Operations Preview w klastrze Kubernetes w celu uruchamiania własnych obciążeń. Ten artykuł zawiera wskazówki dotyczące środowisk ubuntu, Windows i chmury.
Usługa Azure Iot Operations jest dostarczana jako zestaw usług Kubernetes z obsługą usługi Azure Arc i jest przeznaczona do użytku z zgodnymi produktami partnerskimi firmy Arc zweryfikowanymi przez usługę ARC. Obecnie firma Microsoft zweryfikowała operacje usługi Azure IoT względem następującego stałego zestawu infrastruktury i środowisk:
Środowisko
Wersja
Usługa AKS-EE w systemie Windows 11 IoT Enterprise na jednym węźle AMD Ryzen-7 (8 rdzeni, 3,3 GHz), 16 GB pamięci RAM
AksEdge-K3s-1.26.10-1.6.384.0
K3s w systemie Ubuntu 22.04.2 na jednym węźle AMD Ryzen-7 (8 rdzeni, 3,3 GHz), 16 GB pamięci RAM
K3s w wersji 1.28.5
Ważne
Wymienione wcześniej środowiska są środowiskami przypominającymi środowisko produkcyjne, które firma Microsoft zweryfikowała. Nie są to jedyne środowiska, w których można uruchamiać operacje usługi Azure IoT. Operacje usługi Azure IoT można uruchamiać w dowolnym klastrze Kubernetes z obsługą usługi Arc, który spełnia wymagania systemowe platformy Kubernetes z obsługą usługi Azure Arc.
Wymagania wstępne
Aby przygotować klaster Kubernetes z obsługą usługi Azure Arc, potrzebne są następujące elementy:
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Ta sekcja zawiera kroki przygotowywania i włączania klastrów usługi Arc w zweryfikowanych środowiskach w systemach Linux i Windows, a także w usłudze GitHub Codespaces w chmurze.
Azure Kubernetes Service Edge Essentials to lokalna implementacja platformy Kubernetes usługi Azure Kubernetes Service (AKS), która automatyzuje uruchamianie konteneryzowanych aplikacji na dużą skalę. Usługa AKS Edge Essentials zawiera obsługiwaną przez firmę Microsoft platformę Kubernetes, która obejmuje uproszczoną dystrybucję Kubernetes z niewielką ilością i prostą instalacją, co ułatwia wdrażanie platformy Kubernetes na sprzęcie typu PC lub "lekkim" brzegowym.
Napiwek
Możesz użyć skryptu AksEdgeQuickStartForAio.ps1 , aby zautomatyzować kroki opisane w tej sekcji i połączyć klaster.
W oknie programu PowerShell z podwyższonym poziomem uprawnień uruchom następujące polecenia:
Operacje usługi Azure IoT powinny działać na dowolnym klastrze kubernetes zgodnym z systemem CNCF. Obecnie firma Microsoft obsługuje tylko K3s w systemie Ubuntu Linux.
Aby przygotować klaster Kubernetes w systemie Ubuntu:
Wykonaj kroki opisane w przewodniku Szybki start usługi K3s.
Utwórz plik yaml konfiguracji K3s w pliku .kube/config:
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
Aby połączyć klaster z usługą Azure Arc:
Na maszynie, na której wdrożono klaster Kubernetes lub terminal usługi Codespace, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure:
az login
Napiwek
Jeśli używasz usługi GitHub codespace w przeglądarce, az login zwraca błąd localhost w oknie przeglądarki po zalogowaniu. Aby rozwiązać ten problem, wykonaj jedną z następujących czynności:
Otwórz przestrzeń kodu na pulpicie programu VS Code, a następnie wróć do terminalu przeglądarki i ponownie uruchom az loginpolecenie .
Lub po wystąpieniu błędu localhost w przeglądarce skopiuj adres URL z przeglądarki i uruchom curl "<URL>" polecenie na nowej karcie terminalu. Powinna zostać wyświetlona odpowiedź JSON z komunikatem "Zalogowano się do platformy Microsoft Azure!".
Ustaw zmienne środowiskowe dla subskrypcji platformy Azure, lokalizacji, nowej grupy zasobów i nazwy klastra, które będą wyświetlane w grupie zasobów.
Jeśli używasz usługi GitHub Codespaces i konfigurujesz te wartości jako zalecane wpisy tajne podczas tworzenia przestrzeni kodu, pomiń ten krok. Przestrzeń kodu automatycznie ustawia nazwę klastra na taką samą jak nazwa przestrzeni kodu.
# Id of the subscription where your resource group and Arc-enabled cluster will be created
export SUBSCRIPTION_ID=<SUBSCRIPTION_ID>
# Azure region where the created resource group will be located
# Currently supported regions: "eastus", "eastus2", "westus", "westus2", "westus3", "westeurope", or "northeurope"
export LOCATION=<REGION>
# Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
export RESOURCE_GROUP=<NEW_RESOURCE_GROUP_NAME>
# Name of the Arc-enabled cluster to create in your resource group
export CLUSTER_NAME=<NEW_CLUSTER_NAME>
Ustaw kontekst subskrypcji platformy Azure dla wszystkich poleceń:
az account set -s $SUBSCRIPTION_ID
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji:
Uwaga
Ten krok musi być uruchamiany tylko raz na subskrypcję.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperationsOrchestrator"
az provider register -n "Microsoft.IoTOperationsMQ"
az provider register -n "Microsoft.IoTOperationsDataProcessor"
az provider register -n "Microsoft.DeviceRegistry"
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
objectId Pobierz aplikację Microsoft Entra ID używaną przez usługę Azure Arc i zapisuj ją jako zmienną środowiskową.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Użyj polecenia az connectedk8s enable-features, aby włączyć obsługę lokalizacji niestandardowej w klastrze. To polecenie używa objectId aplikacji Microsoft Entra ID używanej przez usługę Azure Arc. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:
Użyj usługi GitHub Codespaces, aby wypróbować operacje usługi Azure IoT w klastrze Kubernetes bez instalowania niczego na komputerze lokalnym. Usługa Azure-Samples/explore-iot-operations codespace jest wstępnie skonfigurowana przy użyciu następujących elementów:
Przestrzeń kodu można łatwo skonfigurować i usunąć później, ale nie są one odpowiednie do oceny wydajności lub testowania skalowania. Użyj usługi GitHub Codespaces tylko do eksploracji.
Aby rozpocząć pracę z przestrzenią kodu:
Utwórz przestrzeń kodu w usłudze GitHub Codespaces.
Podaj następujące zalecane wpisy tajne dla przestrzeni kodu:
Parametr
Wartość
SUBSCRIPTION_ID
Identyfikator subskrypcji platformy Azure.
RESOURCE_GROUP
Nazwa nowej grupy zasobów platformy Azure, w której zostanie utworzony klaster.
LOKALIZACJA
Region świadczenia usługi Azure blisko Ciebie. Następujące regiony są obsługiwane w publicznej wersji zapoznawczej: eastus, eastus2, westus2, westus2, westus3, westeurope lub northeurope.
Napiwek
Wartości podane w tym kroku jako wpisy tajne są zapisywane na koncie usługi GitHub, które mają być używane w tych i przyszłych przestrzeniach kodu. Są one również automatycznie dodawane jako zmienne środowiskowe w terminalu codespace i można użyć tych zmiennych środowiskowych w poleceniach interfejsu wiersza polecenia w następnej sekcji.
Wybierz pozycję Utwórz nową przestrzeń kodu.
Gdy przestrzeń kodu będzie gotowa, wybierz przycisk menu w lewym górnym rogu, a następnie wybierz pozycję Otwórz w programie VS Code Desktop.
Jeśli zostanie wyświetlony monit, zainstaluj rozszerzenie GitHub Codespaces dla programu Visual Studio Code i zaloguj się do usługi GitHub.
W programie Visual Studio Code wybierz pozycję Wyświetl>terminal.
Użyj tego terminalu, aby uruchomić wszystkie polecenia wiersza polecenia i interfejsu wiersza polecenia do zarządzania klastrem.
Włączanie klastra w usłudze Arc
Aby połączyć klaster z usługą Azure Arc:
Na maszynie, na której wdrożono klaster Kubernetes lub terminal usługi Codespace, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure:
az login
Napiwek
Jeśli używasz usługi GitHub codespace w przeglądarce, az login zwraca błąd localhost w oknie przeglądarki po zalogowaniu. Aby rozwiązać ten problem, wykonaj jedną z następujących czynności:
Otwórz przestrzeń kodu na pulpicie programu VS Code, a następnie wróć do terminalu przeglądarki i ponownie uruchom az loginpolecenie .
Lub po wystąpieniu błędu localhost w przeglądarce skopiuj adres URL z przeglądarki i uruchom curl "<URL>" polecenie na nowej karcie terminalu. Powinna zostać wyświetlona odpowiedź JSON z komunikatem "Zalogowano się do platformy Microsoft Azure!".
Ustaw zmienne środowiskowe dla subskrypcji platformy Azure, lokalizacji, nowej grupy zasobów i nazwy klastra, które będą wyświetlane w grupie zasobów.
Jeśli używasz usługi GitHub Codespaces i konfigurujesz te wartości jako zalecane wpisy tajne podczas tworzenia przestrzeni kodu, pomiń ten krok. Przestrzeń kodu automatycznie ustawia nazwę klastra na taką samą jak nazwa przestrzeni kodu.
# Id of the subscription where your resource group and Arc-enabled cluster will be created
export SUBSCRIPTION_ID=<SUBSCRIPTION_ID>
# Azure region where the created resource group will be located
# Currently supported regions: "eastus", "eastus2", "westus", "westus2", "westus3", "westeurope", or "northeurope"
export LOCATION=<REGION>
# Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
export RESOURCE_GROUP=<NEW_RESOURCE_GROUP_NAME>
# Name of the Arc-enabled cluster to create in your resource group
export CLUSTER_NAME=<NEW_CLUSTER_NAME>
Ustaw kontekst subskrypcji platformy Azure dla wszystkich poleceń:
az account set -s $SUBSCRIPTION_ID
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji:
Uwaga
Ten krok musi być uruchamiany tylko raz na subskrypcję.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperationsOrchestrator"
az provider register -n "Microsoft.IoTOperationsMQ"
az provider register -n "Microsoft.IoTOperationsDataProcessor"
az provider register -n "Microsoft.DeviceRegistry"
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
objectId Pobierz aplikację Microsoft Entra ID używaną przez usługę Azure Arc i zapisuj ją jako zmienną środowiskową.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Użyj polecenia az connectedk8s enable-features, aby włączyć obsługę lokalizacji niestandardowej w klastrze. To polecenie używa objectId aplikacji Microsoft Entra ID używanej przez usługę Azure Arc. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:
Na maszynie z systemem Windows można uruchomić system Ubuntu w programie Podsystem Windows dla systemu Linux (WSL). Używaj protokołu WSL tylko do celów testowania i programowania.
Ważne
Uruchom wszystkie te kroki w środowisku WSL, w tym kroki interfejsu wiersza polecenia platformy Azure dotyczące konfigurowania klastra.
Operacje usługi Azure IoT powinny działać na dowolnym klastrze kubernetes zgodnym z systemem CNCF. Obecnie firma Microsoft obsługuje tylko K3s w systemie Ubuntu Linux.
Aby przygotować klaster Kubernetes w systemie Ubuntu:
Wykonaj kroki opisane w przewodniku Szybki start usługi K3s.
Utwórz plik yaml konfiguracji K3s w pliku .kube/config:
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
Aby połączyć klaster z usługą Azure Arc:
Na maszynie, na której wdrożono klaster Kubernetes lub terminal usługi Codespace, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure:
az login
Napiwek
Jeśli używasz usługi GitHub codespace w przeglądarce, az login zwraca błąd localhost w oknie przeglądarki po zalogowaniu. Aby rozwiązać ten problem, wykonaj jedną z następujących czynności:
Otwórz przestrzeń kodu na pulpicie programu VS Code, a następnie wróć do terminalu przeglądarki i ponownie uruchom az loginpolecenie .
Lub po wystąpieniu błędu localhost w przeglądarce skopiuj adres URL z przeglądarki i uruchom curl "<URL>" polecenie na nowej karcie terminalu. Powinna zostać wyświetlona odpowiedź JSON z komunikatem "Zalogowano się do platformy Microsoft Azure!".
Ustaw zmienne środowiskowe dla subskrypcji platformy Azure, lokalizacji, nowej grupy zasobów i nazwy klastra, które będą wyświetlane w grupie zasobów.
Jeśli używasz usługi GitHub Codespaces i konfigurujesz te wartości jako zalecane wpisy tajne podczas tworzenia przestrzeni kodu, pomiń ten krok. Przestrzeń kodu automatycznie ustawia nazwę klastra na taką samą jak nazwa przestrzeni kodu.
# Id of the subscription where your resource group and Arc-enabled cluster will be created
export SUBSCRIPTION_ID=<SUBSCRIPTION_ID>
# Azure region where the created resource group will be located
# Currently supported regions: "eastus", "eastus2", "westus", "westus2", "westus3", "westeurope", or "northeurope"
export LOCATION=<REGION>
# Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
export RESOURCE_GROUP=<NEW_RESOURCE_GROUP_NAME>
# Name of the Arc-enabled cluster to create in your resource group
export CLUSTER_NAME=<NEW_CLUSTER_NAME>
Ustaw kontekst subskrypcji platformy Azure dla wszystkich poleceń:
az account set -s $SUBSCRIPTION_ID
Zarejestruj wymaganych dostawców zasobów w ramach subskrypcji:
Uwaga
Ten krok musi być uruchamiany tylko raz na subskrypcję.
az provider register -n "Microsoft.ExtendedLocation"
az provider register -n "Microsoft.Kubernetes"
az provider register -n "Microsoft.KubernetesConfiguration"
az provider register -n "Microsoft.IoTOperationsOrchestrator"
az provider register -n "Microsoft.IoTOperationsMQ"
az provider register -n "Microsoft.IoTOperationsDataProcessor"
az provider register -n "Microsoft.DeviceRegistry"
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
objectId Pobierz aplikację Microsoft Entra ID używaną przez usługę Azure Arc i zapisuj ją jako zmienną środowiskową.
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Użyj polecenia az connectedk8s enable-features, aby włączyć obsługę lokalizacji niestandardowej w klastrze. To polecenie używa objectId aplikacji Microsoft Entra ID używanej przez usługę Azure Arc. Uruchom to polecenie na maszynie, na której wdrożono klaster Kubernetes:
Aby sprawdzić, czy klaster jest gotowy do wdrożenia operacji usługi Azure IoT, możesz użyć polecenia pomocnika verify-host w rozszerzeniu Operacje usługi Azure IoT dla interfejsu wiersza polecenia platformy Azure. Po uruchomieniu na hoście klastra to polecenie pomocnika sprawdza łączność z punktami końcowymi usług Azure Resource Manager i Microsoft Container Registry.