Início Rápido: implementar um cluster do Kubernetes com um modelo de Resource Manager do Azure
Aplica-se a: Azure Stack HCI, versão 23H2
Este início rápido mostra como implementar um cluster do Kubernetes no AKS Arc com um modelo de Resource Manager do Azure. O Azure Arc expande as capacidades de gestão do Azure para clusters do Kubernetes em qualquer lugar, proporcionando uma abordagem unificada para gerir diferentes ambientes.
Antes de começar
Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes.
Para implementar um modelo de Resource Manager, precisa de acesso de escrita nos recursos que está a implementar e acesso a todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implementar uma máquina virtual, precisa de permissões Microsoft.Compute/virtualMachines/write e Microsoft.Resources/deployments/* . Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa.
- Um cluster do Azure Stack HCI 23H2.
- A versão mais recente da CLI do Azure.
Passo 1: preparar a sua conta do Azure
Inicie sessão no Azure: abra o terminal ou a linha de comandos e inicie sessão na sua conta do Azure com a CLI do Azure:
az login
Defina a sua subscrição: substitua
<your-subscription-id>
pelo seu ID de subscrição:az account set --subscription "<your-subscription-id>"
Passo 2: criar um par de chaves SSH com a CLI do Azure
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
ou crie um par de chaves SSH com ssh-keygen:
ssh-keygen -t rsa -b 4096
Para implementar o modelo, tem de fornecer a chave pública do par SSH. Para obter a chave pública, utilize o az sshkey show
comando:
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
Por predefinição, os ficheiros de chave SSH são criados no diretório ~/.ssh . Execute o az sshkey create
comando ou ssh-keygen
para substituir qualquer par de teclas SSH existente com o mesmo nome.
Para obter mais informações sobre como criar chaves SSH, veja Criar e gerir chaves SSH para autenticação no Azure.
Passo 3: rever o modelo
O modelo utilizado neste início rápido é do repositório Modelos de Início Rápido do 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"
}
}
]
}
Passo 4: Implementar o modelo
Para implementar o modelo, execute o seguinte comando para implementar o cluster do 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..."
A criação do cluster demora alguns minutos. Aguarde que o cluster seja implementado com êxito antes de avançar para o passo seguinte.
Passo 5: Verificar a implementação
Assim que a implementação estiver concluída, utilize o seguinte comando para verificar se o cluster do Kubernetes está em execução:
az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table
Passo 6: Ligar ao cluster
Para ligar ao cluster, execute o
az connectedk8s proxy
comando . O comando transfere e executa um binário de proxy no computador cliente e obtém um ficheiro kubeconfig associado ao cluster:az connectedk8s proxy --name <cluster name> -g <resource group>
Em alternativa, utilize o cliente de linha de comandos kubernetes kubectl. Se utilizar o Azure Cloud Shell, o kubectl já está instalado. Para instalar e executar o kubectl localmente, execute o
az aksarc install-cli
comando .Configure o kubectl para ligar ao cluster do Kubernetes com o
az aksarc get-credentials
comando . Este comando transfere as credenciais e configura a CLI do Kubernetes para as utilizar:az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
Verifique a ligação ao cluster com o
kubectl get
comando . Este comando devolve uma lista dos nós de cluster:kubectl get nodes -A --kubeconfig .\<path to kubecofig>
O resultado de exemplo seguinte mostra os três nós criados nos passos anteriores. Certifique-se de que o estado do nó está Pronto:
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
Recursos do modelo
connectedClusters
Nome | Descrição | Valor |
---|---|---|
type |
O tipo de recurso. | Microsoft.Kubernetes/ConnectedClusters |
apiVersion |
A versão da API de recurso. | 2024-01-01 |
name |
O nome do recurso. | Cadeia (obrigatório) Limite de carateres: 1-63 Carateres válidos: Alfanuméricos, carateres de sublinhado e hífenes. Comece e termine com alfanumérico. |
location |
A localização geográfica na qual o recurso se encontra. | Cadeia (obrigatório). |
tags |
Etiquetas de recursos. | Dicionário de nomes e valores de etiquetas. Veja Etiquetas em modelos. |
extendedLocation |
A localização expandida da máquina virtual. | ExtendedLocation |
identity |
A identidade do cluster ligado, se configurado. | |
properties |
Propriedades de um cluster ligado. |
ProvisionedClusterInstances
Nome | Descrição | Valor |
---|---|---|
type |
O tipo de recurso | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
A versão da API de recurso | 2024-01-01 |
name |
O nome do recurso | Cadeia (obrigatório). Não altere esta opção por predefinição. |
properties |
Propriedades de um cluster ligado. | |
extendedLocation |
A localização expandida do cluster. | ExtendedLocation |
ExtendedLocation
Nome | Descrição | Valor |
---|---|---|
name |
O ID da localização expandida. | string |
type |
O tipo de localização expandida. | CustomLocation |
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários