Szybki start: wdrażanie klastra Kubernetes przy użyciu szablonu usługi Azure Resource Manager
Dotyczy: Azure Local, wersja 23H2
W tym przewodniku Szybki start pokazano, jak wdrożyć klaster Kubernetes w usłudze AKS Arc przy użyciu szablonu usługi Azure Resource Manager. Usługa Azure Arc rozszerza możliwości zarządzania platformy Azure na klastry Kubernetes w dowolnym miejscu, zapewniając ujednolicone podejście do zarządzania różnymi środowiskami.
Zanim rozpoczniesz
W tym artykule przyjęto założenie, że podstawowa wiedza na temat pojęć związanych z platformą Kubernetes.
Aby wdrożyć szablon usługi Resource Manager, potrzebujesz dostępu do zapisu w wdrażanych zasobach i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments . Na przykład do wdrożenia maszyny wirtualnej potrzebne są uprawnienia Microsoft.Compute/virtualMachines/write i Microsoft.Resources/deployments/* . Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją.
- Klaster platformy Azure w wersji lokalnej 23H2.
- Najnowsza wersja interfejsu wiersza polecenia platformy Azure.
Krok 1. Przygotowanie konta platformy Azure
Zaloguj się do platformy Azure: otwórz terminal lub wiersz polecenia i zaloguj się do konta platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:
az login
Ustaw subskrypcję: zastąp
<your-subscription-id>
element identyfikatorem subskrypcji:az account set --subscription "<your-subscription-id>"
Krok 2. Tworzenie pary kluczy SSH przy użyciu interfejsu wiersza polecenia platformy Azure
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
lub utwórz parę kluczy SSH przy użyciu narzędzia ssh-keygen:
ssh-keygen -t rsa -b 4096
Aby wdrożyć szablon, należy podać klucz publiczny z pary SSH. Aby pobrać klucz publiczny, użyj az sshkey show
polecenia :
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
Domyślnie pliki kluczy SSH są tworzone w katalogu ~/.ssh . Uruchom polecenie orssh-keygen
, az sshkey create
aby zastąpić dowolną istniejącą parę kluczy SSH o tej samej nazwie.
Aby uzyskać więcej informacji na temat tworzenia kluczy SSH, zobacz Tworzenie kluczy SSH i zarządzanie nimi na potrzeby uwierzytelniania na platformie Azure.
Krok 3. Przeglądanie szablonu
Szablon używany w tym przewodniku Szybki start pochodzi z repozytorium Szablony szybkiego startu platformy Azure:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"provisionedClusterName": {
"type": "string",
"defaultValue": "aksarc-armcluster",
"metadata": {
"description": "The name of the AKS Arc Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "eastus",
"metadata": {
"description": "The location of the AKS Arc Cluster resource."
}
},
"resourceTags": {
"type": "object",
"defaultValue": {}
},
"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 '"
}
},
"enableAHUB": {
"type": "string",
"defaultValue": "NotApplicable",
"metadata": {
"description": "Azure Hybrid Benefit for Windows Server licenses. NotApplicable, True, False."
}
},
"agentName": {
"type": "string",
"defaultValue": "nodepool",
"metadata": {
"description": "The name of the node pool."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_A4_v2",
"metadata": {
"description": "The VM size for node pools."
}
},
"agentCount": {
"type": "int",
"defaultValue": 1,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentOsType": {
"type": "string",
"defaultValue": "Linux",
"metadata": {
"description": "The OS Type for the agent pool. Values are Linux and Windows."
}
},
"loadBalancerCount": {
"type": "int",
"defaultValue": 0,
"metadata": {
"description": "The number of load balancers."
}
},
"kubernetesVersion": {
"type": "string",
"metadata": {
"description": "The version of Kubernetes."
}
},
"controlPlaneNodeCount": {
"type": "int",
"defaultValue": 1,
"minValue": 1,
"maxValue": 5,
"metadata": {
"description": "The number of control plane nodes for the cluster."
}
},
"controlPlaneIp": {
"type": "string",
"defaultValue": "<default_value>",
"metadata": {
"description": "Control plane IP address."
}
},
"controlPlaneVMSize": {
"type": "string",
"defaultValue": "Standard_A4_v2",
"metadata": {
"description": "The VM size for control plane."
}
},
"vnetSubnetIds": {
"type": "array",
"metadata": {
"description": "List of subnet Ids for the AKS cluster."
}
},
"podCidr": {
"type": "string",
"defaultValue": "10.244.0.0/16",
"metadata": {
"description": "The VM size for control plane."
}
},
"networkPolicy": {
"type": "string",
"defaultValue": "calico",
"metadata": {
"description": "Network policy to use for Kubernetes pods. Only options supported is calico."
}
},
"customLocation": {
"type": "string",
"metadata": {
"description": "Fully qualified custom location resource Id."
}
}
},
"resources": [
{
"apiVersion": "2024-01-01",
"type": "Microsoft.Kubernetes/ConnectedClusters",
"kind": "ProvisionedCluster",
"location": "[parameters('location')]",
"name": "[parameters('provisionedClusterName')]",
"tags": "[parameters('resourceTags')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"agentPublicKeyCertificate":"" ,
"aadProfile": {
"enableAzureRBAC": false
}
}
},
{
"apiVersion": "2024-01-01",
"type": "microsoft.hybridcontainerservice/provisionedclusterinstances",
"name": "default",
"scope": "[concat('Microsoft.Kubernetes/ConnectedClusters', '/', parameters('provisionedClusterName'))]",
"dependsOn": [
"[resourceId('Microsoft.Kubernetes/ConnectedClusters', parameters('provisionedClusterName'))]"
],
"properties": {
"agentPoolProfiles": [
{
"count": "[parameters('agentCount')]",
"name":"[parameters('agentName')]",
"osType": "[parameters('agentOsType')]",
"vmSize": "[parameters('agentVMSize')]"
}
],
"cloudProviderProfile": {
"infraNetworkProfile": {
"vnetSubnetIds": "[parameters('vnetSubnetIds')]"
}
},
"controlPlane": {
"count": "[parameters('controlPlaneNodeCount')]",
"controlPlaneEndpoint": {
"hostIP": "[parameters('controlPlaneIp')]"
},
"vmSize": "[parameters('controlPlaneVMSize')]"
},
"licenseProfile": {
"azureHybridBenefit": "[parameters('enableAHUB')]"
},
"kubernetesVersion": "[parameters('kubernetesVersion')]",
"linuxProfile": {
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
},
"networkProfile": {
"loadBalancerProfile": {
"count": "[parameters('loadBalancerCount')]"
},
"networkPolicy": "[parameters('networkPolicy')]",
"podCidr": "[parameters('podCidr')]"
},
"storageProfile": {
"nfsCsiDriver": {
"enabled": false
},
"smbCsiDriver": {
"enabled": false
}
}
},
"extendedLocation": {
"name": "[parameters('customLocation')]",
"type": "CustomLocation"
}
}
]
}
Krok 4. Wdrażanie szablonu
Aby wdrożyć szablon, uruchom następujące polecenie, aby wdrożyć klaster Kubernetes:
az deployment group create \
--name "<deployment-name>" \
--resource-group "<resource-group-name>" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.kubernetes/aks-arc/azuredeploy.json" \
--parameters provisionedClusterName="<cluster-name> location="eastus" sshRSApublicKey="" etc..."
Utworzenie klastra trwa kilka minut. Przed przejściem do następnego kroku poczekaj na pomyślne wdrożenie klastra.
Krok 5. Weryfikowanie wdrożenia
Po zakończeniu wdrażania użyj następującego polecenia, aby sprawdzić, czy klaster Kubernetes jest uruchomiony i działa:
az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table
Krok 6. Nawiązywanie połączenia z klastrem
Aby nawiązać połączenie z klastrem, uruchom
az connectedk8s proxy
polecenie . Polecenie pobiera i uruchamia plik binarny serwera proxy na komputerze klienckim, a następnie pobiera plik kubeconfig skojarzony z klastrem:az connectedk8s proxy --name <cluster name> -g <resource group>
Możesz też użyć klienta wiersza polecenia kubernetes, kubectl. Jeśli używasz usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane. Aby zainstalować i uruchomić narzędzie kubectl lokalnie, uruchom
az aksarc install-cli
polecenie .Skonfiguruj narzędzie kubectl , aby nawiązać połączenie z klastrem
az aksarc get-credentials
Kubernetes przy użyciu polecenia . To polecenie pobiera poświadczenia i konfiguruje interfejs wiersza polecenia platformy Kubernetes do ich używania:az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
Sprawdź połączenie z klastrem
kubectl get
przy użyciu polecenia . To polecenie zwraca listę węzłów klastra:kubectl get nodes -A --kubeconfig .\<path to kubecofig>
W poniższych przykładowych danych wyjściowych przedstawiono trzy węzły utworzone w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:
NAME STATUS ROLES AGE VERSION aks-agentpool-27442051-vmss000000 Ready agent 10m v1.27.7 aks-agentpool-27442051-vmss000001 Ready agent 10m v1.27.7 aks-agentpool-27442051-vmss000002 Ready agent 11m v1.27.7
Zasoby szablonu
connectedClusters
Nazwa/nazwisko | Opis | Wartość |
---|---|---|
type |
Typ zasobu. | Microsoft.Kubernetes/ConnectedClusters |
apiVersion |
Wersja interfejsu API zasobów. | 2024-01-01 |
name |
Nazwa zasobu. | Ciąg (wymagany) Limit znaków: 1–63 Prawidłowe znaki: alfanumeryczne, podkreślenia i łączniki. Rozpocznij i zakończ od alfanumeryczne. |
location |
Lokalizacja geograficzna, w której znajduje się zasób. | Ciąg (wymagany). |
tags |
Tagi zasobów. | Słownik nazw tagów i wartości. Zobacz Tagi w szablonach. |
extendedLocation |
Rozszerzona lokalizacja maszyny wirtualnej. | ExtendedLocation |
identity |
Tożsamość połączonego klastra, jeśli jest skonfigurowana. | |
properties |
Właściwości połączonego klastra. |
ProvisionedClusterInstances
Nazwa/nazwisko | Opis | Wartość |
---|---|---|
type |
Typ zasobu | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
Wersja interfejsu API zasobów | 2024-01-01 |
name |
Nazwa zasobu | Ciąg (wymagany). Nie zmieniaj tego ustawienia domyślnego. |
properties |
Właściwości połączonego klastra. | |
extendedLocation |
Rozszerzona lokalizacja klastra. | ExtendedLocation |
ExtendedLocation
Nazwa/nazwisko | Opis | Wartość |
---|---|---|
name |
Identyfikator lokalizacji rozszerzonej. | string |
type |
Typ lokalizacji rozszerzonej. | CustomLocation |