Rychlý start: Nasazení clusteru Azure Kubernetes Service (AKS) pomocí šablony ARM

Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, která umožňuje rychle nasazovat a spravovat clustery. V tomto rychlém startu:

  • Nasaďte cluster AKS pomocí Azure Resource Manager šablony.
  • Spusťte vícekon kontejnerovou aplikaci s webovým front-endem a instancí Redis v clusteru.

Obrázek přechodu na aplikaci Azure Vote

Šablona Resource ARM je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. V deklarativní syntaxi popíšete zamýšlené nasazení, aniž byste museli psát sekvenci programovacích příkazů pro vytvoření tohoto nasazení.

Tento rychlý start předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Azure Kubernetes Service (AKS).

Pokud vaše prostředí splňuje požadavky a jste obeznámeni s používáním šablon ARM, vyberte tlačítko Nasazení do Azure. Šablona se otevře v prostředí Azure Portal.

Nasazení do Azure

Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.

Požadavky

  • V nástroji použijte prostředí Bash Azure Cloud Shell.

    Spuštění služby Cloud Shell v novém okně

  • Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení jsou popsané v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

  • Tento článek vyžaduje azure CLI verze 2.0.61 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

  • Pokud chcete vytvořit cluster AKS pomocí Resource Manager, zadejte veřejný klíč SSH. Pokud tento prostředek potřebujete, podívejte se do následující části. v opačném případě přejděte do části Kontrola šablony.

Vytvoření páru klíčů SSH

Pokud chcete získat přístup k uzlům AKS, připojte se pomocí páru klíčů SSH (veřejný a privátní), který vygenerujete pomocí ssh-keygen příkazu . Ve výchozím nastavení se tyto soubory vytvoří v adresáři ~/.ssh. Spuštěním příkazu ssh-keygen přepíšete všechny páry klíčů SSH se stejným názvem, který už v daném umístění existuje.

  1. Přejděte na https://shell.azure.com a otevřete Cloud Shell v prohlížeči.

  2. Spusťte příkaz ssh-keygen. Následující příklad vytvoří pár klíčů SSH pomocí šifrování RSA a bitové délky 2048:

    ssh-keygen -t rsa -b 2048
    

Další informace o vytváření klíčů SSH najdete v tématu Vytváření a správa klíčů SSH pro ověřování v Azure.

Kontrola šablony

Šablona použitá v tomto rychlém startu je jednou z šablon pro rychlý start Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.4.412.5873",
      "templateHash": "14640985186631737095"
    }
  },
  "parameters": {
    "clusterName": {
      "type": "string",
      "defaultValue": "aks101cluster",
      "metadata": {
        "description": "The name of the Managed Cluster resource."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the Managed Cluster resource."
      }
    },
    "dnsPrefix": {
      "type": "string",
      "metadata": {
        "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
      }
    },
    "osDiskSizeGB": {
      "type": "int",
      "defaultValue": 0,
      "maxValue": 1023,
      "minValue": 0,
      "metadata": {
        "description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
      }
    },
    "agentCount": {
      "type": "int",
      "defaultValue": 3,
      "maxValue": 50,
      "minValue": 1,
      "metadata": {
        "description": "The number of nodes for the cluster."
      }
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "Standard_D2s_v3",
      "metadata": {
        "description": "The size of the Virtual Machine."
      }
    },
    "linuxAdminUsername": {
      "type": "string",
      "metadata": {
        "description": "User name for the Linux Virtual Machines."
      }
    },
    "sshRSAPublicKey": {
      "type": "string",
      "metadata": {
        "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
      }
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2020-09-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
            "count": "[parameters('agentCount')]",
            "vmSize": "[parameters('agentVMSize')]",
            "osType": "Linux",
            "mode": "System"
          }
        ],
        "linuxProfile": {
          "adminUsername": "[parameters('linuxAdminUsername')]",
          "ssh": {
            "publicKeys": [
              {
                "keyData": "[parameters('sshRSAPublicKey')]"
              }
            ]
          }
        }
      }
    }
  ],
  "outputs": {
    "controlPlaneFQDN": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))).fqdn]"
    }
  }
}

Další ukázky AKS najdete na webu šablon pro rychlý start pro AKS.

Nasazení šablony

  1. Výběrem následujícího tlačítka se přihlaste k Azure a otevřete šablonu.

    Nasazení do Azure

  2. Vyberte nebo zadejte následující hodnoty.

    Pro tento rychlý start ponechte výchozí hodnoty pro velikost disku s operačním systémem GB, počet agentů, velikost virtuálního počítače agenta, typ operačního systému a verzi Kubernetes. Zadejte vlastní hodnoty pro následující parametry šablony:

    • Předplatné: Vyberte předplatné Azure.
    • Skupina prostředků: Vyberte Vytvořit novou. Zadejte jedinečný název skupiny prostředků, například myResourceGroup, a pak zvolte OK.
    • Umístění: Vyberte umístění, například USA – východ.
    • Název clusteru: Zadejte jedinečný název clusteru AKS, například myAKSCluster.
    • Předpona DNS: Zadejte jedinečnou předponu DNS pro váš cluster, například myakscluster.
    • Uživatelské jméno správce Linuxu: Zadejte uživatelské jméno pro připojení pomocí SSH, například azureuser.
    • Veřejný klíč SSH RSA: Zkopírujte a vložte veřejnou část páru klíčů SSH (ve výchozím nastavení obsah ~/.ssh/id_rsa.pub).

    Resource Manager k vytvoření clusteru Azure Kubernetes Service na portálu

  3. Vyberte Zkontrolovat a vytvořit.

Vytvoření clusteru AKS bude trvat několik minut. Počkejte, až se cluster úspěšně nasadí, a pak přejděte k dalšímu kroku.

Ověření nasazení

Připojení ke clusteru

Ke správě clusteru Kubernetes použijte klienta příkazového řádku Kubernetes kubectl. kubectl je již nainstalován, pokud používáte Azure Cloud Shell.

  1. Místní kubectl instalace pomocí příkazu az aks install-cli:

    az aks install-cli
    
  2. Pomocí kubectl příkazu az aks get-credentials nakonfigurujte připojení ke clusteru Kubernetes. Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je bylo možné používat.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Ověřte připojení ke clusteru pomocí příkazu kubectl get. Tento příkaz vrátí seznam uzlů clusteru.

    kubectl get nodes
    

    Výstup ukazuje uzly vytvořené v předchozích krocích. Ujistěte se, že stav všech uzlů je Připraveno:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-agentpool-41324942-0   Ready    agent   6m44s   v1.12.6    
    aks-agentpool-41324942-1   Ready    agent   6m46s   v1.12.6
    aks-agentpool-41324942-2   Ready    agent   6m45s   v1.12.6
    

Spuštění aplikace

Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například to, které image kontejneru se mají spustit.

V tomto rychlém startu použijete manifest k vytvoření všech objektů potřebných ke spuštění aplikace Azure Vote. Tento manifest zahrnuje dvě nasazení Kubernetes:

  • Ukázkové aplikace Azure Vote v Pythonu.
  • Instance Redis.

Vytvoří se také dvě služby Kubernetes:

  • Interní služba pro instanci Redis.
  • Externí služba pro přístup k aplikaci Azure Vote z internetu.
  1. Vytvořte soubor s názvem azure-vote.yaml.

    • Pokud použijete následující Azure Cloud Shell, můžete tento soubor vytvořit pomocí příkazu nebo jako při práci na vi nano virtuálním nebo fyzickém systému.
  2. Zkopírujte následující definici YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    
  3. Nasaďte aplikaci pomocí příkazu kubectl apply a zadejte název manifestu YAML:

    kubectl apply -f azure-vote.yaml
    

    Výstup ukazuje úspěšně vytvořená nasazení a služby:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

Testování aplikace

Při spuštění aplikace služba Kubernetes zpřístupní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut.

Průběh můžete monitorovat pomocí příkazu kubectl get service s --watch argumentem .

kubectl get service azure-vote-front --watch

Výstup EXTERNAL-IP pro službu se zpočátku zobrazí azure-vote-front jako čekající.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Jakmile se externí IP adresa změní z čekající na skutečnou veřejnou IP adresu, pomocí CTRL-C zastavte proces kubectl sledování. Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou ke službě:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Pokud chcete vidět aplikaci Azure Vote v akci, otevřete webový prohlížeč s externí IP adresou vaší služby.

Obrázek přechodu na aplikaci Azure Vote

Vyčištění prostředků

Pokud se chcete vyhnout poplatkům za Azure, vyčistěte nepotřebné prostředky. Pomocí příkazu az group delete odeberete skupinu prostředků, službu kontejneru a všechny související prostředky.

az group delete --name myResourceGroup --yes --no-wait

Poznámka

Při odstranění clusteru se neodebere instanční objekt služby Azure Active Directory používaný clusterem AKS. Postup odebrání instančního objektu najdete v tématu věnovaném aspektům instančního objektu AKS a jeho odstranění.

Pokud jste použili spravovanou identitu, je identita spravovaná platformou a nevyžaduje odebrání.

Získání kódu

V tomto rychlém startu se použily už existující image kontejnerů k vytvoření nasazení Kubernetes. Související kód aplikace, soubor Dockerfile a soubor manifestu Kubernetes jsou k dispozici na GitHub.

Další kroky

V tomto rychlém startu jste nasadili cluster Kubernetes a pak jste do něj nasadili více kontejnerovou aplikaci. Přístup k webovému řídicímu panelu Kubernetes pro cluster AKS

Další informace o službě AKS a podrobné vysvětlení kompletního příkladu od kódu až po nasazení najdete v kurzu clusteru Kubernetes.