Delen via


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

U kunt een Kubernetes-cluster implementeren op Azure Stack Hub vanaf een client-VM waarop een AKS-engine wordt uitgevoerd. In dit artikel kijken we naar het schrijven van een clusterspecificatie, het implementeren van een cluster met het bestand apimodel.json 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.

Voorbeelden van het API-model voor het versienummer van uw besturingssysteem en AKS-engine voor recente releases vindt u in de AKS-engine en de bijbehorende toewijzing van installatiekopieën.

  1. Zoek het versienummer van uw AKS-engine, v.0.63.0bijvoorbeeld , in de tabel.
  2. Selecteer en open de koppeling voor uw besturingssysteem in de tabel 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 door <URL for the API Model> de URL.

Het API-model bijwerken

In deze sectie wordt beschreven hoe u een API-model voor uw cluster maakt.

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

    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 naar uw Linux-computer kopiëren 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 nano niet hebt geïnstalleerd, kunt u nano installeren op Ubuntu: sudo apt-get install nano.

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

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

  5. Voeg toe "identitySystem":"adfs" als u AD FS gebruikt. Bijvoorbeeld:

        "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 masterProfilein de volgende velden in:

    Veld Description
    dnsPrefix Voer een unieke tekenreeks in waarmee de hostnaam van vm's kan worden geïdentificeerd. Bijvoorbeeld een naam op basis van de naam van de resourcegroep.
    count Voer het aantal masters in dat u voor uw implementatie wilt gebruiken. Het minimum voor een implementatie met hoge beschikbaarheid is 3, maar 1 is toegestaan voor implementaties zonder hoge beschikbaarheid.
    vmSize Voer een grootte in die wordt ondersteund door Azure Stack Hub, bijvoorbeeld Standard_D2_v2.
    Distro Voer of aks-ubuntu-20.04inaks-ubuntu-18.04.
  7. In agentPoolProfiles update:

    Veld Description
    count Voer het aantal agents in dat u voor uw implementatie wilt gebruiken. Het maximumaantal knooppunten dat per abonnement moet worden gebruikt, is 50. Als u meer dan één cluster per abonnement implementeert, moet u ervoor zorgen dat het totale aantal agents niet hoger is dan 50. Zorg ervoor dat u de configuratie-items gebruikt die zijn opgegeven in het JSON-voorbeeld-API-modelbestand.
    vmSize Voer een grootte in die wordt ondersteund door Azure Stack Hub, bijvoorbeeld Standard_D2_v2.
    Distro Voer , aks-ubuntu-20.04 of Windowsinaks-ubuntu-18.04.
    Te gebruiken Windows voor agents die worden uitgevoerd in Windows. Zie bijvoorbeeld kubernetes-windows.json
  8. In linuxProfile update:

    Veld Description
    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 naar 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 niet uw eigen certificaten opgeven voor het maken van het cluster.

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

    "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 in de VM 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 punt moet u het volgende doen:

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

  • Controleer de status van het systeem, stel voor om uit te voeren Test-AzureStack en het hulpprogramma voor hardwarecontrole 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 voldoende ruimte is voor het aantal VM's dat u wilt gebruiken.

Ga verder met het implementeren van een cluster:

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

    Parameter Voorbeeld Beschrijving
    azure-env AzureStackCloud Gebruik om aan de AKS-engine aan te geven dat uw doelplatform Azure Stack Hub AzureStackCloudis.
    identity-system Adfs Optioneel. Geef uw oplossing voor identiteitsbeheer op als u Active Directory Federated Services (AD FS) gebruikt.
    location 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 alfanumeriek 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 moet bevatten.
    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.
    clientgeheim 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 naar het beheerabonnement wordt niet ondersteund. Zie Abonneren op een aanbieding voor meer informatie

    Hier volgt 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 de 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 hebt gebruikt, retourneert de AKS-engine een foutbericht dat de map al bestaat. U kunt de bestaande map overschrijven met behulp van de vlag: --force-overwrite.

  3. Sla de clusterconfiguratie van de AKS-engine op een veilige, versleutelde locatie op.

    Zoek het bestand apimodel.json. Sla het 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 gebruikt in het invoer-API-model. 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 status van uw knooppunten op te halen.

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

    • Als u 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 toevoegen aan de .kube map voor toegang tot uw nieuwe cluster.
      Als u nog 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 service-principalreferenties (SPN)?
  2. Heeft de SPN de rol 'Inzenders' voor het Azure Stack Hub-abonnement?
  3. Hebt u een voldoende 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.

Het geheim van uw service-principal roteren

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

  • Elk knooppunt bijwerken met het nieuwe service-principalgeheim.
  • Of het bijwerken van de API-modelreferenties en het uitvoeren van de upgrade.

Elk knooppunt handmatig bijwerken

  1. Haal een nieuw geheim voor uw service-principal op bij 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 uitgevoerd, start u zowel als kubelekube-controller-manager.

Het cluster bijwerken met aks-engine update

U kunt ook de referenties in apimodel.json vervangen en de 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 over het upgraden van het model

Volgende stappen