Delen via


Een Kubernetes-cluster implementeren met AKS-engine in Azure Stack Hub

U kunt een Kubernetes-cluster implementeren in Azure Stack Hub vanaf een client-VM met AKS-engine. In dit artikel kijken we naar het schrijven van een clusterspecificatie, het implementeren van een cluster met het apimodel.json-bestand en het controleren van uw cluster door MySQL met Helm te implementeren.

Een clusterspecificatie definiëren

U kunt een clusterspecificatie opgeven in een documentbestand met behulp van de JSON-indeling die het API-model wordt genoemd. De AKS-engine maakt gebruik van een clusterspecificatie in het API-model om uw cluster te maken.

U vindt voorbeelden van het API-model voor uw besturingssysteem- en AKS-engineversienummer voor recente releases in de AKS-engine en de bijbehorende afbeeldingstoewijzing.

  1. Zoek het versienummer van uw AKS-engine, bijvoorbeeld, v.0.63.0in de tabel.
  2. Selecteer en open de koppeling voor uw besturingssysteem in de tabel met voorbeelden van API-modellen.
  3. Selecteer Onbewerkt. U kunt de URL in de volgende instructies gebruiken.

Een URL naar het API-model kan er als volgt uitzien:

https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json

Vervang voor elk van de volgende voorbeelden de <URL for the API Model> URL.

Het API-model bijwerken

In deze sectie wordt gekeken naar het maken van een API-model voor uw cluster.

  1. Begin met het gebruik van een Azure Stack Hub API-modelbestand voor Linux of Windows. Vanaf de computer hebt u de AKS-engine geïnstalleerd en voert u het volgende uit:

    curl -o kubernetes-azurestack.json <URL for the API Model>
    

    Notitie

    Als de verbinding is verbroken, kunt u het bestand downloaden en handmatig kopiëren naar de niet-verbonden computer waar u het wilt bewerken. U kunt het bestand kopiëren naar uw Linux-computer met behulp van hulpprogramma's zoals PuTTY of WinSCP.

  2. Als u het API-model in een editor wilt openen, kunt u nano gebruiken:

    nano ./kubernetes-azurestack.json
    

    Notitie

    Als u geen nano hebt geïnstalleerd, kunt u nano installeren op Ubuntu: sudo apt-get install nano.

  3. Zoek in het bestand kubernetes-azurestack.json orchestratorRelease en orchestratorVersion. Selecteer een van de ondersteunde Kubernetes-versies; u vindt de versietabel in de releaseopmerkingen. Geef de orchestratorRelease indeling x.xx en orchestratorVersion op als x.xx.x. Zie Ondersteunde AKS-engineversies voor een lijst met huidige versies

  4. Zoek customCloudProfile en geef de URL op naar de tenantportal. Bijvoorbeeld: https://portal.local.azurestack.external.

  5. Toevoegen "identitySystem":"adfs" als u AD FS gebruikt. Voorbeeld:

        "customCloudProfile": {
            "portalURL": "https://portal.local.azurestack.external",
            "identitySystem": "adfs"
        },
    

    Notitie

    Als u Microsoft Entra ID voor uw identiteitssysteem gebruikt, hoeft u het veld identitySystem niet toe te voegen.

  6. Stel masterProfilede volgende velden in:

    Veld Beschrijving
    dnsPrefix Voer een unieke tekenreeks in die fungeert om de hostnaam van vm's te identificeren. Bijvoorbeeld een naam op basis van de naam van de resourcegroep.
    aantal Voer het gewenste aantal masters in voor uw implementatie. Het minimum voor een ha-implementatie is 3, maar 1 is toegestaan voor niet-HA-implementaties.
    vmSize Voer een grootte in die wordt ondersteund door Azure Stack Hub, bijvoorbeeld Standard_D2_v2.
    distributie Enter aks-ubuntu-18.04 of aks-ubuntu-20.04.
  7. In agentPoolProfiles update:

    Veld Beschrijving
    aantal Voer het gewenste aantal agents in voor uw implementatie. Het maximum aantal knooppunten dat per abonnement moet worden gebruikt, is 50. Als u meer dan één cluster per abonnement implementeert, zorgt u ervoor dat het totale aantal agents niet hoger is dan 50. Zorg ervoor dat u de configuratie-items gebruikt die zijn opgegeven in het JSON-voorbeeldbestand van het API-model.
    vmSize Voer een grootte in die wordt ondersteund door Azure Stack Hub, bijvoorbeeld Standard_D2_v2.
    distributie Voer aks-ubuntu-18.04, aks-ubuntu-20.04 of Windows.
    Gebruiken Windows voor agents die worden uitgevoerd in Windows. Zie bijvoorbeeld kubernetes-windows.json
  8. In linuxProfile update:

    Veld Beschrijving
    adminUsername Voer de gebruikersnaam van de VM-beheerder in.
    ssh Voer de openbare sleutel in die wordt gebruikt voor SSH-verificatie met VM's. Gebruik ssh-rsa en vervolgens de sleutel. Zie Een SSH-sleutel maken voor Linux voor instructies over het maken van een openbare sleutel.

    Als u implementeert in een aangepast virtueel netwerk, vindt u instructies voor het zoeken en toevoegen van de vereiste sleutel en waarden aan de juiste matrices in het API-model in Een Kubernetes-cluster implementeren in een aangepast virtueel netwerk.

    Notitie

    Met de AKS-engine voor Azure Stack Hub kunt u geen eigen certificaten opgeven voor het maken van het cluster.

  9. Als u Windows gebruikt, werkt u de windowsProfile waarden van adminUsername: en adminPassword:

    "windowsProfile": {
    "adminUsername": "azureuser",
    "adminPassword": "",
    "sshEnabled": true
    }
    

Meer informatie over het API-model

Certificaat toevoegen bij gebruik van ASDK

Als u een cluster implementeert in de Azure Stack Development Kit (ASDK) en Linux gebruikt, moet u het basiscertificaat toevoegen aan het vertrouwde certificaatarchief van de client-VM waarop de AKS-engine wordt uitgevoerd.

  1. Zoek het basiscertificaat op de VIRTUELE machine in deze map: /var/lib/waagent/Certificates.pem.
  2. Kopieer het certificaatbestand:
    sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt
    sudo update-ca-certificates
    

Een Kubernetes-cluster implementeren

Nadat u alle vereiste waarden in uw API-model hebt verzameld, kunt u uw cluster maken. Op dit moment moet u het volgende doen:

Vraag uw Azure Stack Hub-operator om het volgende te doen:

  • Controleer de status van het systeem, stel voor dat het wordt uitgevoerd Test-AzureStack en het hulpprogramma voor hardwarebewaking van uw OEM-leverancier.
  • Controleer de systeemcapaciteit, inclusief resources zoals geheugen, opslag en openbare IP-adressen.
  • Geef details op van het quotum dat is gekoppeld aan uw abonnement, zodat u kunt controleren of er nog steeds voldoende ruimte is voor het aantal virtuele machines dat u wilt gebruiken.

Ga verder met het implementeren van een cluster:

  1. Bekijk de beschikbare parameters voor de AKS-engine in Azure Stack Hub CLI-vlaggen.

    Parameter Voorbeeld Beschrijving
    azure-env AzureStackCloud Om aan te geven aan de AKS-engine dat uw doelplatform azure Stack Hub gebruikt AzureStackCloud.
    identity-system adfs Optioneel. Geef uw oplossing voor identiteitsbeheer op als u Active Directory Federated Services (AD FS) gebruikt.
    locatie lokaal De regionaam voor uw Azure Stack Hub. Voor de ASDK is de regio ingesteld op local.
    resource-group kube-rg Voer de naam van een nieuwe resourcegroep in of selecteer een bestaande resourcegroep. De resourcenaam moet alfanumerieke en kleine letters zijn.
    api-model ./kubernetes-azurestack.json Pad naar het clusterconfiguratiebestand of API-model.
    uitvoermap kube-rg Voer de naam in van de map die het uitvoerbestand apimodel.json en andere gegenereerde bestanden bevat.
    client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer de GUID van de service-principal in. De client-id die is geïdentificeerd als de toepassings-id toen uw Azure Stack Hub-beheerder de service-principal heeft gemaakt.
    client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer het geheim van de service-principal in. U stelt het clientgeheim in bij het maken van uw service.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Voer uw abonnements-id in. U moet een abonnement voor de tenant opgeven. Implementatie in het beheerabonnement wordt niet ondersteund. Zie Abonneren op een aanbieding voor meer informatie

    Dit is een voorbeeld:

    Notitie

    Voor AKSe versie 0.75.3 en hoger is aks-engine-azurestack deployde opdracht voor het implementeren van een AKS-enginecluster.

    aks-engine deploy \
    --azure-env AzureStackCloud \
    --location <for asdk is local> \
    --resource-group kube-rg \
    --api-model ./kubernetes-azurestack.json \
    --output-directory kube-rg \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  2. Als de uitvoering om een of andere reden mislukt nadat de uitvoermap is gemaakt, kunt u het probleem oplossen en de opdracht opnieuw uitvoeren. Als u de implementatie opnieuw uitvoert en dezelfde uitvoermap eerder had gebruikt, retourneert de AKS-engine een fout met de mededeling dat de map al bestaat. U kunt de bestaande map overschrijven met behulp van de vlag: --force-overwrite.

  3. Sla de configuratie van het AKS-enginecluster op een veilige, versleutelde locatie op.

    Zoek het bestand apimodel.json. Sla het bestand op een veilige locatie op. Dit bestand wordt gebruikt als invoer in al uw andere AKS-enginebewerkingen.

    Het gegenereerde apimodel.json-bestand bevat de service-principal, het geheim en de openbare SSH-sleutel die u in het invoer-API-model gebruikt. Het bestand bevat ook alle andere metagegevens die nodig zijn voor de AKS-engine om alle andere bewerkingen uit te voeren. Als u het bestand kwijtraakt, kan de AKS-engine het cluster niet configureren.

    De geheimen zijn niet versleuteld. Bewaar het bestand op een versleutelde, veilige plaats.

Uw cluster verifiëren

Controleer uw cluster door verbinding te maken met, de informatie op te kubectlhalen en vervolgens de statussen van uw knooppunten op te halen.

  1. Haal het kubeconfig bestand op om verbinding te maken met het besturingsvlak.

    • Als u het bestand al hebt kubectl geïnstalleerd, controleert u het kubeconfig bestand op het zojuist gemaakte cluster in dit mappad /kubeconfig/kubeconfig.json. U kunt de /kubeconfig.json map .kube toevoegen en de naam ervan wijzigen in 'config' om toegang te krijgen tot uw nieuwe cluster.
      Als u niet hebt geïnstalleerd kubectl, gaat u naar Hulpprogramma's installeren om het kubernetes-opdrachtregelprogramma te installeren. Volg anders de onderstaande instructies voor toegang tot het cluster vanaf een van de besturingsvlakknooppunten.
  2. Haal het openbare IP-adres van een van uw besturingsvlakknooppunten op met behulp van de Azure Stack Hub-portal.

  3. Maak vanaf een computer met toegang tot uw Azure Stack Hub-exemplaar via SSH verbinding met het nieuwe besturingsvlakknooppunt met behulp van een client zoals PuTTY of MobaXterm.

  4. Gebruik voor de SSH-gebruikersnaam 'azureuser' en het persoonlijke sleutelbestand van het sleutelpaar dat u hebt opgegeven voor de implementatie van het cluster.

  5. Controleer of de clustereindpunten worden uitgevoerd:

    kubectl cluster-info
    

    De uitvoer moet er als volgt uitzien:

    Kubernetes master is running at https://democluster01.location.domain.com
    CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  6. Controleer vervolgens de status van het knooppunt:

    kubectl get nodes
    

    De uitvoer moet er ongeveer als volgt uitzien:

    k8s-linuxpool-29969128-0   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-1   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-2   Ready      agent    9d    v1.15.5
    k8s-master-29969128-0      Ready      master   9d    v1.15.5
    k8s-master-29969128-1      Ready      master   9d    v1.15.5
    k8s-master-29969128-2      Ready      master   9d    v1.15.5
    

Problemen met clusterimplementatie oplossen

Wanneer er fouten optreden tijdens het implementeren van een Kubernetes-cluster met behulp van de AKS-engine, kunt u het volgende controleren:

  1. Gebruikt u de juiste SPN-referenties (Service Principal)?
  2. Heeft de SPN de rol 'Inzenders' voor het Azure Stack Hub-abonnement?
  3. Hebt u een groot genoeg quotum in uw Azure Stack Hub-abonnement?
  4. Wordt er een patch of upgrade toegepast op het Azure Stack Hub-exemplaar?

Zie het artikel Probleemoplossing in de GitHub-opslagplaats Azure/aks-engine-azurestack voor meer informatie.

Uw service-principalgeheim roteren

Na de implementatie van het Kubernetes-cluster met AKS-engine wordt de service-principal (SPN) gebruikt voor het beheren van interacties met Azure Resource Manager op uw Azure Stack Hub-exemplaar. Op een bepaald moment kan het geheim voor deze service-principal verlopen. Als uw geheim verloopt, kunt u de referenties vernieuwen door:

  • Elk knooppunt bijwerken met het nieuwe geheim van de service-principal.
  • Of werk de API-modelreferenties bij en voer de upgrade uit.

Elk knooppunt handmatig bijwerken

  1. Haal een nieuw geheim op voor uw service-principal van uw cloudoperator. Zie Een app-identiteit gebruiken voor toegang tot Azure Stack Hub-resources voor instructies voor Azure Stack Hub.
  2. Gebruik de nieuwe referenties van uw cloudoperator om /etc/kubernetes/azure.json op elk knooppunt bij te werken. Nadat u de update hebt gemaakt, start u beide kubele en kube-controller-manager.

Het cluster bijwerken met aks-engine-update

U kunt ook de referenties in de apimodel.json vervangen en een upgrade uitvoeren met behulp van het bijgewerkte .json-bestand naar dezelfde of nieuwere Kubernetes-versie. Zie Een Kubernetes-cluster upgraden in Azure Stack Hub voor instructies voor het upgraden van het model

Volgende stappen