Förbered ett kluster för Azure IoT Operations

Ett Azure Arc-aktiverat Kubernetes-kluster är en förutsättning för att distribuera Azure IoT Operations. Den här artikeln beskriver hur man förbereder det klustret, med vägledning för Ubuntu, Windows, Azure Local och vSphere Kubernetes Service (VKS).

Om du vill distribuera Azure IoT Operations snabbt och köra en exempelarbetsbelastning i en testmiljö kan du läsa Quickstart: Kör Azure IoT Operations i GitHub Codespaces med K3s.

Förutsättningar

För multi-nod-distributioner, använd K3s på Ubuntu, AKS på Azure Local eller vSphere Kubernetes Service (VKS). AKS Edge Essentials på Windows stöder endast distributioner av en enda nod.

För att förbereda ett Azure Arc-aktiverat Kubernetes-kluster behöver du:

  • En Azure-prenumeration med rollen Owner eller en kombination av Contributor och Användaråtkomstadministratör roller. Du kan kontrollera åtkomstnivån genom att gå till din prenumeration, välja Access control (IAM) till vänster i Azure-portalen och sedan välja Visa min åtkomst. Om du inte har en Azure prenumeration skapa en kostnadsfri innan du börjar.

  • Azure CLI installerat på utvecklingsdatorn. Kontrollera tillgängliga Azure CLI-tillägg för minsta krav på versionen för connectedk8s-tillägget. Använd az --version för att kontrollera din version och az upgrade uppdatera om det behövs. Mer information finns i Installera Azure CLI.

  • Connectedk8s-tillägget för Azure CLI. Använd följande kommando för att lägga till tillägget eller uppdatera det till den senaste versionen:

    az extension add --upgrade --name connectedk8s
    
  • En Azure resursgrupp. Endast en Azure IoT Operations instans stöds per resursgrupp. Om du vill skapa en ny resursgrupp använder du kommandot az group create . Listan över regioner som stöds för närvarande Azure finns i Supported regions.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

De Azure CLI exemplen i denna artikel använder miljövariabler så att du kan sätta varje värde en gång och sedan kopiera och klistra in kommandona as-is. Om du använder Azure IoT Operations Codespaces-miljön från quickstart är dessa variabler redan inställda för dig och du kan hoppa över detta steg. Annars, ställ in följande miljövariabler i ditt skal innan du kör kommandona.

Följande skript anger de mest använda miljövariablerna:

Miljövariabel Beskrivning
SUBSCRIPTION_ID ID:t för prenumerationen som innehåller din Azure IoT Operations-instans.
RESOURCE_GROUP Namnet på resursgruppen som innehåller din Azure IoT Operations-instans.
AIO_INSTANCE_NAME Namnet på din Azure IoT Operations-instans. För att lista dina instanser, kör az iot ops list -o table.
CLUSTER_NAME Namnet på det Azure Arc-aktiverade Kubernetes-klustret som hostar din instans.
LOCATION Azure-regionen att använda för nya resurser, till exempel eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Du behöver bara ställa in de variabler som denna artikel använder. Den här artikeln kan använda ytterligare miljövariabler för resursnamn som du väljer. Artikeln förklarar hur man placerar dem där de introduceras.

Skapa och Arc-aktivera ett kluster

Detta avsnitt ger steg för att skapa kluster i validerade miljöer på Ubuntu, Windows, Azure Local och vSphere Kubernetes Service (VKS).

Så här förbereder du ett K3s Kubernetes-kluster på Ubuntu:

  1. Skapa ett K3s-kluster med en nod eller flera noder. Exempel finns i snabbstartsguiden för K3s eller K3s-relaterade projekt.

  2. Kontrollera att K3s är installerat kubectl. Om inte följer du anvisningarna för att installera kubectl på Linux.

    kubectl version --client
    
  3. Följ anvisningarna för att installera Helm.

  4. Skapa en K3s-konfiguration YAML-fil i .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. Kör följande kommando för att öka användarbevaknings-/instansgränserna.

    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. Öka filbeskrivningsgränsen för bättre prestanda:

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

Aktivera ditt K3s-kluster för Arc

Koppla ditt kluster till Azure Arc så att du kan hantera det på distans.

  1. Från en dator som har kubectl tillgång till ditt kluster, logga in på Azure CLI med ditt Microsoft Entra-användarkonto som har de nödvändiga rollerna för Azure-prenumerationen:

    az login
    

    Om du vid något tillfälle får ett felmeddelande som säger att din enhet måste hanteras för att komma åt din resurs, kör az login igen och se till att du loggar in interaktivt via en webbläsare.

  2. Efter att du loggat in visar Azure CLI alla dina prenumerationer och anger din standardprenumeration med en asterisk *. Om du vill fortsätta med din standardprenumeration väljer du Enter. Annars skriver du numret på den Azure prenumeration som du vill använda.

  3. Registrera nödvändiga resursprovidrar i din prenumeration.

    Anmärkning

    Du behöver bara köra detta steg en gång per prenumeration. För att registrera resursleverantörer behöver du behörighet att utföra /register/action-åtgärden, vilket ingår i rollerna Deltagare och Ägare för prenumerationen. Mer information finns i Azure resursleverantörer och typer.

    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. Använd kommandot az connectedk8s connect för att Arc-aktivera ditt Kubernetes-kluster och hantera det som en del av din Azure resursgrupp.

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

    För att förhindra oplanerade uppdateringar av Azure Arc och system arc-tillägg som Azure IoT Operations använder som beroenden inaktiverar det här kommandot autoupgrade. Uppgradera i stället agenter manuellt efter behov.

    Viktigt!

    Om din miljö använder en proxyserver eller Azure Arc Gateway ändrar du kommandot az connectedk8s connect med din proxyinformation:

    1. Följ anvisningarna i antingen Anslut med hjälp av en utgående proxyserver eller Registrera Kubernetes-kluster till Azure Arc med Azure Arc Gateway.
    2. Lägg till 169.254.169.254 i parametern --proxy-skip-range för az connectedk8s connect kommandot. Azure Device Registry använder den här lokala slutpunkten för att hämta åtkomsttoken för auktorisering.

    Azure IoT Operations stöder inte proxyservrar som kräver ett betrott certifikat.

  5. Hämta klustrets utfärdar-URL.

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

    Spara utdata från det här kommandot som ska användas i nästa steg.

  6. Skapa en K3s-konfigurationsfil.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Lägg till följande innehåll i config.yaml-filen, och ersätt <SERVICE_ACCOUNT_ISSUER>-platshållaren med ditt klusters utfärdarens URL.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Spara filen och avsluta Nano-redigeraren.

  9. Förbered för att aktivera Azure Arc-tjänsten, anpassad plats, i Arc-klustret genom att hämta objekt-ID:t för anpassad plats och spara det som miljövariabel OBJECT_ID. Du måste logga in på Azure CLI med ett Microsoft Entra-användarkonto, inte en tjänstehuvudansvarig, för att kunna köra kommandot framgångsrikt. Kör följande kommando exakt som skrivet, utan att ändra GUID-värdet.

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

    Anmärkning

    Om du får felet: "Det går inte att hämta oid för appen 'anpassade platser'. Fortsätter utan att aktivera funktionen. Otillräcklig behörighet för att slutföra åtgärden", då kan det bero på att din tjänst-principal saknar de nödvändiga behörigheterna för att hämta objekt-ID:t för den anpassade platsen. Logga in på Azure CLI med ett Microsoft Entra-användarkonto som uppfyller förutsättningarna. Mer information finns i Skapa och hantera anpassade platser.

  10. Använd kommandot az connectedk8s enable-features för att aktivera funktionen för anpassad plats i Arc-klustret. Detta kommando använder variabeln OBJECT_ID environment som du sparade i föregående steg för att sätta värdet för parametern custom-locations-oid. Kör det här kommandot på datorn där du distribuerade Kubernetes-klustret:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Starta om K3s.

    systemctl restart k3s
    

Konfigurera Azure Container Storage som aktiverats med Azure Arc

Funktioner som lokala lagringsslutpunkter för dataflöde och medieanslutningsappen kan också använda Azure Container Storage som aktiveras av Azure Arc (ACSA) för att synkronisera lokala data till molnet. ACSA installeras inte som en del av Azure IoT Operations, så du måste installera det separat.

För att lära dig hur du installerar ACSA på ditt Kubernetes-kluster:

Nästa steg

Nu när du har ett Azure Arc aktiverat Kubernetes-kluster kan du distribuera Azure IoT Operations.