Een cluster voorbereiden voor Azure IoT-bewerkingen

Een Kubernetes-cluster met Azure Arc-functionaliteit is een vereiste voor het implementeren van Azure IoT-bewerkingen. Dit artikel beschrijft hoe je die cluster voorbereidt, met richtlijnen voor Ubuntu, Windows, Azure Lokaal en vSphere Kubernetes Service (VKS).

Als u Azure IoT-bewerkingen snel wilt implementeren en een voorbeeldworkload wilt uitvoeren in een testomgeving, raadpleegt u de Quickstart: Voer Azure IoT-bewerkingen uit in GitHub Codespaces met K3s.

Vereiste voorwaarden

Voor multi-node deployments gebruik je K3s op Ubuntu, AKS op Azure Lokaal, of vSphere Kubernetes Service (VKS). AKS Edge Essentials op Windows ondersteunt alleen single-node-implementaties.

Als u een Kubernetes-cluster met Azure Arc wilt voorbereiden, hebt u het volgende nodig:

  • Een Azure-abonnement met de rol Owner of een combinatie van Contributor en Gebruiker-toegangsbeheerder. U kunt uw toegangsniveau controleren door naar uw abonnement te navigeren, Access-besturingselement (IAM) aan de linkerkant van de Azure-portal te selecteren en vervolgens Weergave van mijn toegang te selecteren. Als u geen Azure abonnement hebt, gratis een abonnement maken voordat u begint.

  • De Azure CLI geïnstalleerd op uw ontwikkelcomputer. Controleer Beschikbare Azure CLI-extensies voor de minimaal vereiste versie voor de connectedk8s-extensie. Gebruik az --version om uw versie te controleren en az upgrade om indien nodig bij te werken. Zie De Azure CLI installeren voor meer informatie.

  • De connectedk8s-extensie voor de Azure CLI. Gebruik de volgende opdracht om de extensie toe te voegen of bij te werken naar de nieuwste versie:

    az extension add --upgrade --name connectedk8s
    
  • Een Azure resourcegroep. Er wordt slechts één Azure IoT-bewerkingen exemplaar per resourcegroep ondersteund. Gebruik de opdracht az group create om een nieuwe resourcegroep te maken. Zie Supported regions voor de lijst met momenteel ondersteunde Azure regio's.

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

De Azure CLI voorbeelden in dit artikel gebruiken omgevingsvariabelen zodat je elke waarde één keer kunt instellen en vervolgens de commando's kunt kopiëren en plakken as-is. Als je de Azure IoT-bewerkingen Codespaces-omgeving vanuit de quickstart gebruikt, zijn deze variabelen al voor je ingesteld en kun je deze stap overslaan. Anders stel je de volgende omgevingsvariabelen in je shell voordat je de commando's uitvoert.

De volgende scripts stellen de meest gebruikte omgevingsvariabelen in:

Omgevingsvariabele Description
SUBSCRIPTION_ID De ID van het abonnement dat je Azure IoT-bewerkingen-instantie bevat.
RESOURCE_GROUP De naam van de resourcegroep die je Azure IoT-bewerkingen-instantie bevat.
AIO_INSTANCE_NAME De naam van je Azure IoT-bewerkingen instance. Om je instanties op te sommen, voer az iot ops list -o tableje .
CLUSTER_NAME De naam van de Azure Arc-enabled Kubernetes-cluster die jouw instantie host.
LOCATION De Azure-regio om te gebruiken voor nieuwe bronnen, bijvoorbeeld eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Je hoeft alleen de variabelen in te stellen die dit artikel gebruikt. Dit artikel kan extra omgevingsvariabelen gebruiken voor de bronnamen die je kiest. Het artikel legt uit hoe je ze op de plek kunt plaatsen waar ze worden geïntroduceerd.

Een cluster maken en arc inschakelen

Deze sectie geeft stappen om clusters te creëren in gevalideerde omgevingen op Ubuntu, Windows, Azure Lokaal en vSphere Kubernetes Service (VKS).

Een K3s Kubernetes-cluster voorbereiden op Ubuntu:

  1. Maak een K3s-cluster met één knooppunt of meerdere knooppunten. Zie de K3s-snelstartgids of K3s-gerelateerde projecten voor voorbeelden.

  2. Controleer of K3s kubectl is geïnstalleerd. Zo niet, volg dan de instructies voor het installeren van kubectl in Linux.

    kubectl version --client
    
  3. Volg de instructies om Helm te installeren.

  4. Maak een K3s-configuratie YAML-bestand aan in .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. Voer de volgende opdracht uit om de limieten voor gebruikerstoezicht of instanties te verhogen.

    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. Voor betere prestaties verhoogt u de limiet voor bestandsdescriptor:

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

Schakel je K3s-cluster in voor Arc

Verbind je cluster met Azure Arc zodat je het op afstand kunt beheren.

  1. Vanaf een machine die toegang heeft kubectl tot je cluster, log je in op Azure CLI met je Microsoft Entra-gebruikersaccount dat de vereiste rollen voor het Azure-abonnement heeft:

    az login
    

    Als je op enig moment een foutmelding krijgt dat je apparaat beheerd moet worden om toegang te krijgen tot je bron, start az login dan opnieuw en zorg ervoor dat je interactief inlogt via een browser.

  2. Nadat je bent ingelogd, toont de Azure CLI al je abonnementen en geeft je standaardabonnement aan met een asterisk*. Als u wilt doorgaan met uw standaardabonnement, selecteert u Enter. Typ anders het nummer van het Azure-abonnement dat u wilt gebruiken.

  3. Registreer de vereiste resourceproviders in uw abonnement.

    Opmerking

    Je hoeft deze stap maar één keer per abonnement uit te voeren. Om resource providers te registreren, heb je toestemming nodig om de bewerking /register/action uit te voeren. Deze toestemming is opgenomen in de abonnementsrollen Contributor en Owner. Zie Azure resourceproviders en -typen voor meer informatie.

    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. Gebruik de opdracht az connectedk8s connect om uw Kubernetes-cluster in te schakelen en te beheren als onderdeel van uw Azure resourcegroep.

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

    Als u niet-geplande updates wilt voorkomen voor Azure Arc en de systeem-Arc-extensies die Azure IoT-bewerkingen als afhankelijkheden gebruikt, wordt met deze opdracht automatischupgrade uitgeschakeld. In plaats daarvan moet u agents handmatig bijwerken als dat nodig is.

    Belangrijk

    Als uw omgeving gebruikmaakt van een proxyserver of Azure Arc Gateway, wijzigt u de opdracht az connectedk8s connect met uw proxygegevens:

    1. Volg de instructies in Connect using een uitgaande proxyserver of Inschepen van Kubernetes-clusters naar Azure Arc met Azure Arc Gateway.
    2. Toevoegen 169.254.169.254 aan de --proxy-skip-range parameter van de az connectedk8s connect opdracht. Azure Device Registry gebruikt dit lokale eindpunt om toegangstokens voor autorisatie op te halen.

    Azure IoT-bewerkingen biedt geen ondersteuning voor proxyservers waarvoor een vertrouwd certificaat is vereist.

  5. Haal de URL van de uitgever van het cluster op.

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

    Sla de uitvoer van deze opdracht op voor gebruik in de volgende stappen.

  6. Maak een K3s-configuratiebestand aan.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Voeg de volgende inhoud toe aan het config.yaml bestand, waarbij u de tijdelijke aanduiding vervangt door de <SERVICE_ACCOUNT_ISSUER> URL van de verlener van uw cluster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Sla het bestand op en sluit de nano-editor af.

  9. Bereid u voor op het inschakelen van de Azure Arc-service, aangepaste locatie, op uw Arc-cluster door de id van het aangepaste locatieobject op te halen en op te slaan als de omgevingsvariabele, OBJECT_ID. Je moet inloggen bij Azure CLI met een Microsoft Entra-gebruikersaccount, niet met een serviceprincipal, om het commando succesvol uit te voeren. Voer de volgende opdracht precies uit zoals geschreven, zonder de GUID-waarde te wijzigen.

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

    Opmerking

    Als u de foutmelding krijgt: 'Kan de OID van de app "custom-locations" niet ophalen.' Doorgaan zonder de functie in te schakelen. Er zijn onvoldoende bevoegdheden om de bewerking te voltooien. Uw service-principal beschikt mogelijk niet over de benodigde machtigingen om de object-id van de aangepaste locatie op te halen. Log in bij Azure CLI met een Microsoft Entra-gebruikersaccount dat aan de voorwaarden voldoet. Zie Aangepaste locaties maken en beheren voor meer informatie.

  10. Gebruik de opdracht az connectedk8s enable-features om de functie voor aangepaste locatie in uw Arc-cluster in te schakelen. Dit commando gebruikt de OBJECT_ID omgevingsvariabele die je in de vorige stap hebt opgeslagen om de waarde voor de custom-locations-oid parameter in te stellen. Voer deze opdracht uit op de computer waarop u het Kubernetes-cluster hebt geïmplementeerd:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Start K3s opnieuw op.

    systemctl restart k3s
    

Azure Container Storage configureren, ingeschakeld door Azure Arc

Functies zoals eindpunten voor lokale opslag voor gegevensstromen en de mediaconnector gebruiken optioneel Azure Container Storage ingeschakeld door Azure Arc (ACSA) om lokale gegevens te synchroniseren met de cloud. ACSA is niet geïnstalleerd als onderdeel van Azure IoT-bewerkingen, dus je moet het apart installeren.

Om te leren hoe je ACSA installeert op je Kubernetes-cluster:

Volgende stappen

Nu u een Kubernetes-cluster met Azure Arc hebt, kunt u Azure IoT-bewerkingen implementeren.