Nasazení clusteru Kubernetes s modulem AKS v centru Azure Stack

Cluster Kubernetes můžete v Azure Stack hub nasadit z virtuálního počítače klienta, na kterém běží modul AKS. V tomto článku se podíváme na zápis specifikace clusteru, nasazení clusteru se apimodel.json souborem a kontrolu clusteru nasazením MySQL pomocí Helm.

Definování specifikace clusteru

Specifikaci clusteru můžete zadat v souboru dokumentu pomocí formátu JSON, který se nazývá model rozhraní API. Modul AKS používá k vytvoření clusteru specifikaci clusteru v modelu rozhraní API.

Můžete najít příklady modelu rozhraní API pro číslo verze vašeho operačního systému a modulu AKS pro poslední verze v modulu AKS a odpovídající mapování obrázků.

  1. V tabulce Najděte číslo verze modulu AKS, v.0.63.0 například.
  2. V tabulce ukázek modelů rozhraní APIvyberte a otevřete odkaz pro váš operační systém.
  3. Vyberte raw. Adresu URL můžete použít v následujících pokynech.

Adresa URL modelu rozhraní API může vypadat takto:

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

Pro každou z následujících ukázek nahraďte <URL for the API Model> adresu URL.

Aktualizace modelu rozhraní API

V této části se podíváme na vytvoření modelu rozhraní API pro váš cluster.

  1. Začněte použitím souboru modelu rozhraní API centra Azure Stack pro Linux nebo Windows. Z počítače jste nainstalovali modul AKS, spusťte:

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

    Poznámka

    Pokud se odpojíte, můžete soubor stáhnout a ručně ho zkopírovat do odpojeného počítače, kde ho chcete upravit. Soubor můžete zkopírovat do počítače se systémem Linux pomocí nástrojů, jako jsou například výstupy nebo WinSCP.

  2. Pokud chcete model rozhraní API v editoru otevřít, můžete použít nano:

    nano ./kubernetes-azurestack.json
    

    Poznámka

    Pokud nemáte nainstalovaný nano, můžete nainstalovat nano na Ubuntu: sudo apt-get install nano .

  3. V souboru Kubernetes-azurestack. JSON Najděte orchestratorRelease a orchestratorVersion. Vyberte jednu z podporovaných verzí Kubernetes. tabulku verzí můžete najít v poznámkách k verzi. orchestratorReleaseZadejte jako x. XX a orchestratorVersion jako x. xx. x. Seznam aktuálních verzí najdete v tématu podporované verze modulu AKS .

  4. Vyhledejte customCloudProfile adresu URL portálu tenanta a poskytněte ji. Například, https://portal.local.azurestack.external.

  5. Přidejte "identitySystem":"adfs" , pokud používáte AD FS. Třeba

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

    Poznámka

    Pokud pro svůj systém identit používáte Azure AD, nemusíte přidávat pole identitySystem .

  6. V masterProfile nástroji nastavte následující pole:

    Pole Description
    Pole dnsprefix Zadejte jedinečný řetězec, který bude sloužit k identifikaci názvu hostitele virtuálních počítačů. Například název založený na názvu skupiny prostředků.
    count Zadejte počet hlavních serverů, které chcete pro nasazení nasadit. Minimální pro nasazení HA je 3, ale 1 je povolená pro nasazení bez vysoké dostupnosti.
    vmSize Zadejte velikost podporovanou Azure Stack hub, například .
    distribuce Zadejte aks-ubuntu-16.04 nebo aks-ubuntu-18.04 .
  7. V agentPoolProfiles nástroji Update:

    Pole Description
    count Zadejte počet agentů, které chcete pro nasazení. Maximální počet uzlů, které se mají použít na předplatné, je 50. Pokud nasazujete více než jeden cluster na předplatné, zajistěte, aby celkový počet agentů nepřesahuje 50. Ujistěte se, že jste používali položky konfigurace zadané v ukázkovém souboru JSON modelu rozhraní API.
    vmSize Zadejte velikost podporovanou Azure Stack hub, například .
    distribuce aks-ubuntu-18.04Zadejte aks-ubuntu-16.04 nebo Windows .
    Použijte Windows pro agenty, kteří se budou spouštět na Windows. Příklad naleznete v tématu Kubernetes-Windows. JSON.
  8. V linuxProfile nástroji Update:

    Pole Description
    adminUsername Zadejte uživatelské jméno správce virtuálního počítače.
    protokoly Zadejte veřejný klíč, který se bude používat pro ověřování SSH s virtuálními počítači. Použijte ssh-rsa a pak klíč. Pokyny k vytvoření veřejného klíče najdete v tématu vytvoření klíče SSH pro Linux.

    Pokud nasazujete do vlastní virtuální sítě, najdete pokyny k vyhledání a přidání požadovaných klíčů a hodnot do příslušných polí v modelu rozhraní API v tématu nasazení clusteru Kubernetes do vlastní virtuální sítě.

    Poznámka

    Modul AKS pro centrum Azure Stack neumožňuje poskytnout vlastní certifikáty pro vytvoření clusteru.

  9. pokud používáte Windows, v windowsProfile části aktualizujte hodnoty adminUsername: a adminPassword :

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

Další informace o modelu rozhraní API

Přidat certifikát při použití ASDK

Pokud nasazujete cluster na Azure Stack Development Kit (ASDK) a používáte Linux, budete muset přidat kořenový certifikát do úložiště důvěryhodných certifikátů virtuálního počítače klienta, na kterém běží modul AKS.

  1. Vyhledejte kořenový certifikát na virtuálním počítači v tomto adresáři: /var/lib/waagent/Certificates.pem.
  2. Zkopírujte soubor certifikátu:
    sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt
    sudo update-ca-certificates
    

Nasazení clusteru Kubernetes

Po shromáždění všech požadovaných hodnot v modelu rozhraní API můžete vytvořit svůj cluster. V tomto okamžiku byste měli:

Požádejte svého operátora centra Azure Stack:

  • Ověřte stav systému, navrhněte spuštění Test-AzureStack a nástroj pro monitorování hardwaru od dodavatele OEM.
  • Ověřte kapacitu systému včetně prostředků, jako jsou paměť, úložiště a veřejné IP adresy.
  • Poskytněte podrobnosti o kvótě přidružené k vašemu předplatnému, abyste mohli ověřit, jestli je pro počet virtuálních počítačů, které chcete používat, dost místa.

Pokračujte v nasazení clusteru:

  1. Přečtěte si dostupné parametry pro modul AKS v části Azure Stack centra CLI.

    Parametr Příklad Description
    Azure – ENV AzureStackCloud K indikaci AKS Engine, že vaše cílová platforma je Azure Stack použití AzureStackCloud centra.
    Identita – systém službou Nepovinný parametr. Pokud používáte službu ACTIVE Directory Federated Services (AD FS), zadejte své řešení správy identit.
    location local Název vaší oblasti Azure Stack Hub. Pro ASDK je oblast nastavená na local.
    resource-group kube-rg Zadejte název nové skupiny prostředků nebo vyberte existující skupinu prostředků. Název prostředku musí být alfanumerický a malými písmeny.
    api-model ./kubernetes-azurestack.json Cesta ke konfiguračnímu souboru clusteru nebo modelu rozhraní API.
    výstupní adresář kube-rg Zadejte název adresáře, který bude obsahovat výstupní soubor a apimodel.json další vygenerované soubory.
    ID klienta xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte identifikátor GUID objektu služby. ID klienta identifikované jako ID aplikace, když Azure Stack Hub správce vytvořil objekt služby.
    tajný klíč klienta xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte tajný kód objektu služby. Tajný kód klienta nastavíte při vytváření služby.
    ID předplatného xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte ID předplatného. Musíte zadat předplatné pro tenent. Nasazení do předplatného pro správu se nepodporuje. Další informace najdete v tématu Přihlášení k odběru nabídky.

    Zde naleznete příklad:

    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. Pokud se spuštění z nějakého důvodu po vytvoření výstupního adresáře nezdaří, můžete problém opravit a spustit příkaz znovu. Pokud nasazení znovu sloužíte a dříve jste použili stejný výstupní adresář, modul AKS vrátí chybu s dotazem, že adresář již existuje. Existující adresář můžete přepsat pomocí příznaku : --force-overwrite.

  3. Uložte konfiguraci clusteru modulu AKS v zabezpečeném a šifrovaném umístění.

    Vyhledejte soubor apimodel.json. Uložte ho do zabezpečeného umístění. Tento soubor se použije jako vstup ve všech ostatních operacích modulu AKS.

    Vygenerovaný objekt apimodel.json obsahuje instanční objekt, tajný klíč a veřejný klíč SSH, které použijete ve vstupním modelu rozhraní API. Obsahuje také všechna další metadata, která modul AKS potřebuje k provádění všech ostatních operací. Pokud ho ztratíte, modul AKS nebude moct cluster nakonfigurovat.

    Tajné kódy jsou nešifrované. Soubor držte na šifrovaném a zabezpečeném místě.

Ověření clusteru

Zkontrolujte cluster tak, že se připojíte k kubectl, najdete informace a stavy uzlů.

  1. Získejte veřejnou IP adresu jednoho z vašich hlavních uzlů pomocí Azure Stack Hub Portal.

  2. Z počítače s přístupem k vaší instanci Azure Stack Hub připojte se přes SSH k novému hlavnímu uzlu pomocí klienta, jako je PuTTY nebo MobaXterm.

  3. Jako uživatelské jméno SSH použijete azureuser a soubor privátního klíče páru klíčů, který jste poskytli pro nasazení clusteru.

  4. Zkontrolujte, že jsou spuštěné koncové body clusteru:

    kubectl cluster-info
    

    Výstup by měl vypadat nějak takto:

    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
    
  5. Pak zkontrolujte stavy uzlu:

    kubectl get nodes
    

    Výstup by měl vypadat přibližně takto:

    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
    

Řešení potíží s nasazením clusteru

Pokud při nasazování clusteru Kubernetes pomocí modulu AKS dochází k chybám, můžete zkontrolovat:

  1. Používáte správné přihlašovací údaje k hlavnímu názvu služby (SPN)?
  2. Má hlavní název služby roli Přispěvatelé předplatného Azure Stack Hub předplatného?
  3. Máte ve svém plánu Azure Stack Hub dostatečně velkou kvótu?
  4. Používá Azure Stack Hub instance opravu nebo upgrade?

Další informace najdete v článku o řešení potíží v azure/aks-engine GitHub úložiště.

Obměně tajného klíče vašeho principu služby

Po nasazení clusteru Kubernetes s strojem AKS se tento hlavní název služby (SPN) použije ke správě interakcí s Azure Resource Manager ve vaší Azure Stack Hub instanci. V nějakém okamžiku může vypršet platnost tajného klíče pro tento objekt služby. Pokud platnost tajného klíče vyprší, můžete přihlašovací údaje aktualizovat pomocí:

  • Aktualizace každého uzlu novým tajným kódem objektu služby
  • Nebo aktualizaci přihlašovacích údajů modelu rozhraní API a spuštění upgradu.

Ruční aktualizace jednotlivých uzlů

  1. Získejte nový tajný kód pro váš objekt služby od operátora cloudu. Pokyny pro Azure Stack Hub najdete v tématu Použití identity aplikace pro přístup k Azure Stack Hub prostředkům.
  2. K aktualizaci na jednotlivých uzlech použijte nové přihlašovací údaje poskytnuté vaším operátorem /etc/kubernetes/azure.json cloudu. Po provedení aktualizace restartujte kubelet i kube-controller-manager.

Aktualizace clusteru pomocí aktualizace aks-engine

Případně můžete přihlašovací údaje v souboru nahradit apimodel.json a spustit upgrade pomocí aktualizovaného json na stejnou nebo novější verzi Kubernetes. Pokyny k upgradu modelu najdete v tématu Upgrade clusteru Kubernetes na Azure Stack Hub

Další kroky