Udostępnij za pośrednictwem


Szybki start: wdrażanie hosta kontenera systemu Linux platformy Azure dla klastra usługi AKS przy użyciu szablonu usługi ARM

Rozpocznij pracę z hostem kontenera systemu Linux platformy Azure przy użyciu szablonu usługi Azure Resource Manager (ARM) w celu wdrożenia klastra hostów kontenerów systemu Linux platformy Azure. Po zainstalowaniu wymagań wstępnych utworzysz parę kluczy SSH, przejrzyj szablon, wdróż szablon i zweryfikuj go, a następnie wdrożysz aplikację.

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Wymagania wstępne

Tworzenie pary kluczy SSH

Aby uzyskać dostęp do węzłów usługi AKS, należy nawiązać połączenie przy użyciu pary kluczy SSH (publicznej i prywatnej), która jest generowana przy użyciu ssh-keygen polecenia . Domyślnie te pliki są tworzone w katalogu ~/.ssh . ssh-keygen Uruchomienie polecenia zastępuje dowolną parę kluczy SSH o tej samej nazwie już istniejącej w danej lokalizacji.

  1. Przejdź do witryny , https://shell.azure.com aby otworzyć usługę Cloud Shell w przeglądarce.

  2. Uruchom polecenie ssh-keygen. Poniższy przykład tworzy parę kluczy SSH przy użyciu szyfrowania RSA i długości bitu 4096:

    ssh-keygen -t rsa -b 4096
    

Aby uzyskać więcej informacji na temat tworzenia kluczy SSH, zobacz Tworzenie kluczy SSH i zarządzanie nimi na potrzeby uwierzytelniania na platformie Azure.

Przegląd szablonu

Poniższe wdrożenie korzysta z szablonu usługi ARM z szablonów szybkiego startu platformy Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "parameters": {
    "clusterName": {
      "type": "string",
      "defaultValue": "azurelinuxakscluster",
      "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,
      "minValue": 0,
      "maxValue": 1023,
      "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,
      "minValue": 1,
      "maxValue": 50,
      "metadata": {
        "description": "The number of nodes for the cluster."
      }
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "Standard_DS2_v2",
      "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'"
      }
    },
    "osType": {
      "type": "string",
      "defaultValue": "Linux",
      "allowedValues": [
        "Linux"
      ],
      "metadata": {
        "description": "The type of operating system."
      }
    },
    "osSKU": {
      "type": "string",
      "defaultValue": "AzureLinux",
      "allowedValues": [
        "AzureLinux",
        "Ubuntu"
      ],
      "metadata": {
        "description": "The Linux SKU to use."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2021-03-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "mode": "System",
            "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
            "count": "[parameters('agentCount')]",
            "vmSize": "[parameters('agentVMSize')]",
            "osType": "[parameters('osType')]",
            "osSKU": "[parameters('osSKU')]",
            "storageProfile": "ManagedDisks"
          }
        ],
        "linuxProfile": {
          "adminUsername": "[parameters('linuxAdminUsername')]",
          "ssh": {
            "publicKeys": [
              {
                "keyData": "[parameters('sshRSAPublicKey')]"
              }
            ]
          }
        }
      },
      "identity": {
          "type": "SystemAssigned"
      }
    }
  ],
  "outputs": {
    "controlPlaneFQDN": {
      "type": "string",
      "value": "[reference(parameters('clusterName')).fqdn]"
    }
  }
}

Aby dodać system Azure Linux do istniejącego szablonu usługi ARM, musisz dodać "osSKU": "AzureLinux" interfejs agentPoolProfiles "mode": "System" APIVersion do wersji 2021-03-01 lub nowszej ("apiVersion": "2021-03-01").

Wdrażanie szablonu

  1. Wybierz poniższy przycisk, aby zalogować się na platformie Azure i otworzyć szablon.

    Przycisk wdrażania szablonu usługi Resource Manager na platformie Azure.

  2. Wybierz lub wprowadź następujące wartości.

    W tym przewodniku Szybki start pozostaw wartości domyślne rozmiaru dysku systemu operacyjnego GB, liczba agentów, rozmiar maszyny wirtualnej agenta, typ systemu operacyjnego i wersję platformy Kubernetes. Podaj własne wartości dla następujących parametrów szablonu:

    • Subskrypcja: wybierz subskrypcję platformy Azure.
    • Grupa zasobów: wybierz pozycję Utwórz nową. Wprowadź unikatową nazwę grupy zasobów, taką jak testAzureLinuxResourceGroup, a następnie wybierz przycisk OK.
    • Lokalizacja: wybierz lokalizację, na przykład Wschodnie stany USA.
    • Nazwa klastra: wprowadź unikatową nazwę klastra usługi AKS, taką jak testAzureLinuxCluster.
    • Prefiks DNS: wprowadź unikatowy prefiks DNS dla klastra, taki jak myAzureLinuxCluster.
    • Nazwa użytkownika administratora systemu Linux: wprowadź nazwę użytkownika, aby nawiązać połączenie przy użyciu protokołu SSH, takiego jak azureUser.
    • Klucz publiczny SSH RSA: skopiuj i wklej publiczną część pary kluczy SSH (domyślnie zawartość pliku ~/.ssh/id_rsa.pub).

    Zrzut ekranu przedstawiający szablon usługi Resource Manager umożliwiający utworzenie klastra usługi Azure Kubernetes Service w portalu.

  3. Wybierz pozycję Przejrzyj i utwórz.

Utworzenie klastra hostów kontenerów systemu Linux platformy Azure zajmuje kilka minut. Przed przejściem do następnego kroku poczekaj na pomyślne wdrożenie klastra.

Weryfikowanie wdrożenia

Łączenie z klastrem

Aby zarządzać klastrem Kubernetes, użyj klienta wiersza polecenia kubernetes kubectl.

  1. Zainstaluj kubectl lokalnie przy użyciu az aks install-cli polecenia :

    az aks install-cli
    
  2. Skonfiguruj kubectl , aby nawiązać połączenie z klastrem az aks get-credentials Kubernetes przy użyciu polecenia . To polecenie powoduje pobranie poświadczeń i zastosowanie ich w konfiguracji interfejsu wiersza polecenia Kubernetes.

    az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
    
  3. Sprawdź połączenie z klastrem kubectl get przy użyciu polecenia . To polecenie zwraca listę węzłów klastra.

    kubectl get nodes
    

    Poniższy przykład danych wyjściowych przedstawia trzy węzły utworzone w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:

    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
    

Wdrażanie aplikacji

Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia.

W tym przewodniku Szybki start utworzysz wszystkie obiekty potrzebne do uruchomienia aplikacji Azure Vote za pomocą manifestu. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes:

  • Przykładowe aplikacje azure Vote Python.
  • Wystąpienie usługi Redis.

Tworzone są również dwie usługi Kubernetes:

  • Wewnętrzna usługa dla wystąpienia usługi Redis.
  • Usługa zewnętrzna w celu uzyskania dostępu do aplikacji Azure Vote z Internetu.
  1. Utwórz plik o nazwie azure-vote.yaml.

    • Jeśli używasz usługi Azure Cloud Shell, ten plik można utworzyć przy użyciu metody code, vilub nano tak, jakby działał w systemie wirtualnym lub fizycznym
  2. Skopiuj następującą definicję 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
    

    Aby uzyskać podział plików manifestu YAML, zobacz Wdrożenia i manifesty YAML.

  3. Wdróż aplikację przy użyciu polecenia kubectl apply i podaj nazwę manifestu YAML:

    kubectl apply -f azure-vote.yaml
    

    Poniższy przykład przypomina dane wyjściowe przedstawiające pomyślnie utworzone wdrożenia i usługi:

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

Testowanie aplikacji

Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.

Monitoruj postęp przy użyciu polecenia kubectl get service za pomocą argumentu --watch .

kubectl get service azure-vote-front --watch

Dane wyjściowe EXTERNAL-IP dla azure-vote-front usługi będą początkowo wyświetlane jako oczekujące.

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

Gdy adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj polecenia CTRL-C , aby zatrzymać proces obserwacjikubectl. Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:

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

Aby wyświetlić działającą aplikację Azure Vote, otwórz zewnętrzny adres IP usługi w przeglądarce internetowej.

Zrzut ekranu przedstawiający przechodzenie do przykładowej aplikacji Azure Vote.

Usuwanie klastra

Jeśli nie zamierzasz kontynuować pracy z poniższymi samouczkami, aby uniknąć naliczania opłat za korzystanie z platformy Azure, wyczyść niepotrzebne zasoby. az group delete Użyj polecenia , aby usunąć grupę zasobów i wszystkie powiązane zasoby.

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

Następne kroki

W tym przewodniku Szybki start wdrożono klaster hostów kontenerów systemu Linux platformy Azure. Aby dowiedzieć się więcej na temat hosta kontenera systemu Linux platformy Azure i zapoznać się z kompletnym przykładem wdrażania klastra i zarządzania nim, przejdź do samouczka Azure Linux Container Host.