Een Kubernetes-cluster implementeren met de AKS-engine in Azure Stack Hub
U kunt een Kubernetes-cluster in Azure Stack Hub implementeren vanaf een client-VM waarop de AKS-engine wordt uitgevoerd. In dit artikel kijken we naar het schrijven van een clusterspecificatie, het implementeren van een cluster met het bestand en het apimodel.json 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, het API-model genoemd. De AKS-engine gebruikt een clusterspecificatie in het API-model om uw cluster te maken.
U vindt voorbeelden van het API-model voor het versienummer van uw besturingssysteem en de AKS-engine voor recente releases bij de AKS-engine en de bijbehorende toewijzing van installatiekopieën.
- Zoek het versienummer van uw AKS-engine, bijvoorbeeld,
v.0.63.0in de tabel. - Selecteer en open de koppeling voor uw besturingssysteem in de tabel met voorbeelden van API-modellen.
- Selecteer Raw. 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/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.
Startmenu met behulp 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 het handmatig kopiëren naar de niet-verbonden computer waarop u het wilt bewerken. U kunt het bestand kopiëren naar uw Linux-computer met behulp van hulpprogramma's zoals PuTTY of WinSCP.
Als u het API-model in een editor wilt openen, kunt u nano gebruiken:
nano ./kubernetes-azurestack.jsonNotitie
Als u nano niet hebt geïnstalleerd, kunt u nano installeren op Ubuntu:
sudo apt-get install nano.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
orchestratorReleasewaarde x.xx en orchestratorVersion op als x.xx.x. Zie Ondersteunde AKS-engineversies voor een lijst met huidige versiesZoek
customCloudProfileen geef de URL op naar de tenantportal. Bijvoorbeeldhttps://portal.local.azurestack.external.Toevoegen
"identitySystem":"adfs"als u AD FS gebruikt. Bijvoorbeeld:"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },Notitie
Als u Azure AD gebruikt voor uw identiteitssysteem, hoeft u het veld identitySystem niet toe te voegen.
Stel de volgende velden in
masterProfile:Veld Description 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. count 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.Distro Enter aks-ubuntu-16.04ofaks-ubuntu-18.04.In
agentPoolProfilesupdate:Veld Description count Voer het gewenste aantal agents in voor uw implementatie. Het maximumaantal 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-bestand met het voorbeeld-API-model. vmSize Voer een grootte in die wordt ondersteund door Azure Stack Hub, bijvoorbeeld Standard_D2_v2.Distro Voer , aks-ubuntu-16.04aks-ubuntu-18.04ofWindows.
GebruikenWindowsvoor agents die worden uitgevoerd op Windows. Zie bijvoorbeeld kubernetes-windows.jsonIn
linuxProfileupdate: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-rsaen 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.
Als u Windows gebruikt,
windowsProfilewerkt u de waarden vanadminUsername:enadminPassword:"windowsProfile": { "adminUsername": "azureuser", "adminPassword": "", "sshEnabled": true }
Meer informatie over het API-model
- Raadpleeg de clusterdefinities voor een volledig overzicht van alle beschikbare opties in het API-model.
- Raadpleeg de azure Stack Hub-clusterdefinities voor hoogtepunten over specifieke opties voor Azure Stack Hub.
Certificaat toevoegen wanneer u ASDK gebruikt
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.
- Zoek het basiscertificaat op de VIRTUELE machine in deze map:
/var/lib/waagent/Certificates.pem. - 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:
- Controleer de status van het systeem, stel voor dat het wordt uitgevoerd
Test-AzureStacken 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 voldoende ruimte is voor het aantal VM's dat u wilt gebruiken.
Ga door met het implementeren van een cluster:
Bekijk de beschikbare parameters voor de AKS-engine op 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. 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 alfanumerieke en kleine letters zijn. api-model ./kubernetes-azurestack.json Pad naar het clusterconfiguratiebestand of HET API-model. uitvoermap kube-rg Voer de naam in van de map die het uitvoerbestand apimodel.jsonen 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. 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 opgeven voor de tenent. Implementatie in het beheerabonnement wordt niet ondersteund. Zie Abonneren op een aanbieding voor meer informatie Hier volgt een voorbeeld:
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 FSAls 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 foutmelding waarin wordt aangegeven dat de map al bestaat. U kunt de bestaande map overschrijven met behulp van de vlag:
--force-overwrite.Sla de configuratie van het AKS-enginecluster 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.De gegenereerde
apimodel.jsonbevat de service-principal, het geheim en de openbare SSH-sleutel die u in het invoer-API-model gebruikt. Het bevat ook alle andere metagegevens die de AKS-engine nodig heeft om alle andere bewerkingen uit te voeren. Als u dit 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 kubectl, de informatie op te halen en vervolgens de statussen van uw knooppunten op te halen.
Haal het
kubeconfigbestand op om verbinding te maken met het besturingsvlak.- Als u het bestand al hebt
kubectlgeïnstalleerd, controleert u hetkubeconfigbestand op het zojuist gemaakte cluster in dit mappad/kubeconfig/kubeconfig.json. U kunt de/kubeconfig.jsonmap toevoegen om.kubetoegang te krijgen tot uw nieuwe cluster.
Als u niet hebt geïnstalleerdkubectl, 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.
- Als u het bestand al hebt
Haal het openbare IP-adres van een van uw besturingsvlakknooppunten op met behulp van de Azure Stack Hub-portal.
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.
Voor de SSH-gebruikersnaam gebruikt u 'azureuser' en het persoonlijke sleutelbestand van het sleutelpaar dat u hebt opgegeven voor de implementatie van het cluster.
Controleer of de clustereindpunten worden uitgevoerd:
kubectl cluster-infoDe 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:/proxyControleer vervolgens de status van het knooppunt:
kubectl get nodesDe 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:
- Gebruikt u de juiste SPN-referenties (Service Principal Credentials)?
- Heeft de SPN de rol 'Inzenders' voor het Azure Stack Hub-abonnement?
- Hebt u een groot genoeg quotum in uw Azure Stack Hub-abonnement?
- Wordt er een patch of upgrade toegepast op het Azure Stack Hub-exemplaar?
Zie het artikel Probleemoplossing in de Azure/aks-engine GitHub opslagplaats voor meer informatie.
Uw serviceprincipegeheim 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 in 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 referenties van het API-model bij en voer de upgrade uit.
Elk knooppunt handmatig bijwerken
- 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.
- Gebruik de nieuwe referenties van uw cloudoperator om bij te werken
/etc/kubernetes/azure.jsonop elk knooppunt. Nadat u de update hebt uitgevoerd, start u zowel kubelet als kube-controller-manager opnieuw.
Het cluster bijwerken met een update van de aks-engine
U kunt ook de referenties in de apimodel.json upgrade vervangen en een upgrade uitvoeren met behulp van de bijgewerkte json naar dezelfde of nieuwere Kubernetes-versie. Zie Een Kubernetes-cluster upgraden in Azure Stack Hub voor instructies over het upgraden van het model