Nasazení clusteru Kubernetes s modulem AKS ve službě Azure Stack Hub

Cluster Kubernetes můžete nasadit ve službě Azure Stack Hub z klientského virtuálního počítače s modulem AKS. V tomto článku se podíváme na napsání specifikace clusteru, nasazení clusteru pomocí souboru apimodel.json a kontrolu clusteru nasazením MySQL s helmem.

Definování specifikace clusteru

Specifikaci clusteru v souboru dokumentu můžete zadat ve formátu JSON označovaného jako model rozhraní API. Modul AKS používá k vytvoření clusteru specifikaci clusteru v modelu rozhraní API.

Příklady modelu rozhraní API pro váš operační systém a číslo verze modulu AKS pro poslední verze najdete v modulu AKS a odpovídající mapování obrázků.

  1. V tabulce vyhledejte číslo verze modulu AKS, v.0.63.0například .
  2. V tabulce ukázek modelu rozhraní API vyberte a otevřete odkaz pro váš operační systém.
  3. Vyberte Nezpracované. 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-azurestack/master/examples/azure-stack/kubernetes-azurestack.json

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

Aktualizace modelu rozhraní API

Tato část se zabývá vytvořením modelu rozhraní API pro váš cluster.

  1. Začněte pomocí souboru modelu rozhraní API služby Azure Stack Hub pro Linux nebo Windows. Z počítače jste nainstalovali modul AKS a spusťte:

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

    Poznámka

    Pokud jste odpojeni, můžete si soubor stáhnout a ručně zkopírovat do odpojeného počítače, kde ho chcete upravit. Soubor můžete zkopírovat do počítače s Linuxem pomocí nástrojů, jako je PuTTY nebo WinSCP.

  2. K otevření modelu rozhraní API v editoru můžete použít nano:

    nano ./kubernetes-azurestack.json
    

    Poznámka

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

  3. V souboru kubernetes-azurestack.json vyhledejte orchestratorRelease a orchestratorVersion. Vyberte jednu z podporovaných verzí Kubernetes. tabulku verzí najdete v poznámkách k verzi. orchestratorRelease Zadejte 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 zadejte ji. Například, https://portal.local.azurestack.external.

  5. Pokud používáte SLUŽBU AD FS, přidejte "identitySystem":"adfs" ji. Třeba

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

    Poznámka

    Pokud pro systém identit používáte ID Microsoft Entra, nemusíte přidávat pole identitySystem.

  6. V masterProfilesouboru nastavte následující pole:

    Pole Description
    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í použít. Minimum pro nasazení vysoké dostupnosti je 3, ale 1 je povolený pro nasazení bez vysoké dostupnosti.
    vmSize Zadejte velikost podporovanou službou Azure Stack Hub, například Standard_D2_v2.
    Distro Zadejte aks-ubuntu-18.04 nebo aks-ubuntu-20.04.
  7. V agentPoolProfiles aktualizaci:

    Pole Description
    count Zadejte požadovaný počet agentů pro vaše 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é, ujistěte se, že celkový počet agentů nepřekračuje 50. Nezapomeňte použít položky konfigurace uvedené v ukázkovém souboru JSON modelu rozhraní API.
    vmSize Zadejte velikost podporovanou službou Azure Stack Hub, například Standard_D2_v2.
    Distro Zadejte aks-ubuntu-18.04, aks-ubuntu-20.04 nebo Windows.
    Používá se Windows pro agenty, kteří poběží ve Windows. Viz například kubernetes-windows.json.
  8. V linuxProfile aktualizaci:

    Pole Description
    adminUsername Zadejte uživatelské jméno správce virtuálního počítače.
    Ssh Zadejte veřejný klíč, který se použije k ověřování SSH u virtuálních počítačů. 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 Azure Stack Hub neumožňuje poskytovat vlastní certifikáty pro vytvoření clusteru.

  9. Pokud používáte Windows, windowsProfile aktualizujte v souboru adminUsername: hodnoty a adminPassword:

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

Další informace o modelu rozhraní API

Přidání certifikátu při použití ASDK

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

  1. Vyhledejte kořenový certifikát ve 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 cluster. V tomto okamžiku byste měli:

Požádejte operátora služby Azure Stack Hub, aby:

  • Ověřte stav systému a navrhněte spuštění Test-AzureStack nástroje 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.
  • Zadejte podrobnosti o kvótě přidružené k vašemu předplatnému, abyste mohli ověřit, že je stále dostatek místa pro počet virtuálních počítačů, které chcete použít.

Pokračujte nasazením clusteru:

  1. Projděte si dostupné parametry modulu AKS v příznakech rozhraní příkazového řádku služby Azure Stack Hub.

    Parametr Příklad Description
    azure-env AzureStackCloud Pokud chcete modulu AKS označit, že vaší cílovou platformou je Azure Stack Hub, použijte AzureStackCloud.
    identity-system Adfs Nepovinný parametr. Pokud používáte službu Active Directory Federated Services (AD FS), zadejte řešení správy identit.
    location local Název oblasti pro službu Azure Stack Hub. U sady 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
    output-directory kube-rg Zadejte název adresáře, který bude obsahovat výstupní soubor apimodel.json a další vygenerované soubory.
    client-ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte identifikátor GUID instančního objektu. ID klienta identifikované jako ID aplikace, když správce služby Azure Stack Hub vytvořil instanční objekt.
    tajný klíč klienta xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte tajný kód instančního objektu. Tajný klíč klienta nastavíte při vytváření služby.
    ID předplatného xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Zadejte ID předplatného. Pro tenanta musíte zadat předplatné. 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:

    Poznámka

    Pro AKSe verze 0.75.3 a vyšší je aks-engine-azurestack deploypříkaz pro nasazení clusteru modulu AKS .

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

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

    Vyhledejte soubor apimodel.json. Uložte ho na bezpečné místo. Tento soubor se použije jako vstup ve všech ostatních operacích modulu AKS.

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

    Tajné kódy nejsou zašifrované. Uchovávejte soubor na zašifrovaném a zabezpečeném místě.

Ověření clusteru

Zkontrolujte cluster připojením k kubectl, získáním informací a následným získáním stavů uzlů.

  1. kubeconfig Získejte soubor pro připojení k řídicí rovině.

    • Pokud jste již nainstalovali kubectl , zkontrolujte kubeconfig soubor nově vytvořeného clusteru v této cestě /kubeconfig/kubeconfig.jsonadresáře . Pokud chcete získat přístup k novému clusteru, můžete ho /kubeconfig.json.kube přidat do adresáře.
      Pokud jste nástroj příkazového řádku Kubernetes nenainstalovali kubectl, přejděte na stránku Instalace nástrojů . V opačném případě postupujte podle následujících pokynů pro přístup ke clusteru z jednoho z uzlů řídicí roviny.
  2. Pomocí portálu Azure Stack Hub získejte veřejnou IP adresu jednoho z uzlů řídicí roviny.

  3. Z počítače s přístupem k instanci služby Azure Stack Hub se připojte přes SSH k novému uzlu řídicí roviny pomocí klienta, jako je PuTTY nebo MobaXterm.

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

  5. Zkontrolujte, jestli 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
    
  6. Pak zkontrolujte stavy uzlů:

    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

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 instančního objektu (SPN)?
  2. Má hlavní název služby roli Přispěvatelé předplatného služby Azure Stack Hub?
  3. Máte v plánu služby Azure Stack Hub dostatečně velkou kvótu?
  4. Používá se u instance služby Azure Stack Hub oprava nebo upgrade?

Další informace najdete v článku Řešení potíží v úložišti GitHub Azure/aks-engine-azurestack .

Obměna tajného klíče objektu služby

Po nasazení clusteru Kubernetes s modulem AKS se instanční objekt (SPN) používá ke správě interakcí s azure Resource Manager ve vaší instanci služby Azure Stack Hub. V určitém okamžiku může dojít k vypršení platnosti tajného klíče instančního objektu. Pokud platnost tajného kódu vyprší, můžete přihlašovací údaje aktualizovat pomocí:

  • Aktualizuje se každý uzel pomocí nového tajného klíče instančního objektu.
  • Nebo aktualizace 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 instanční objekt od operátora cloudu. Pokyny ke službě Azure Stack Hub najdete v tématu Použití identity aplikace pro přístup k prostředkům služby Azure Stack Hub.
  2. Pomocí nových přihlašovacích údajů od operátora cloudu aktualizujte /etc/kubernetes/azure.json na každém uzlu. Po provedení aktualizace restartujte obě verze kubele a kube-controller-manager.

Aktualizace clusteru pomocí aktualizace aks-engine

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

Další kroky