Implementar um cluster do Kubernetes com o motor AKS no Azure Stack Hub
Pode implementar um cluster do Kubernetes no Azure Stack Hub a partir de uma VM cliente com motor AKS. Neste artigo, vamos analisar a escrita de uma especificação de cluster, a implementação de um cluster com o ficheiro apimodel.json e a verificação do cluster ao implementar o MySQL com o Helm.
Definir uma especificação de cluster
Pode especificar uma especificação de cluster num ficheiro de documento com o formato JSON denominado modelo de API. O motor do AKS utiliza uma especificação de cluster no modelo de API para criar o cluster.
Pode encontrar exemplos do modelo de API para o seu SO e o número da versão do motor do AKS para versões recentes no motor do AKS e mapeamento de imagens correspondente.
- Localize o número da versão do motor do AKS, por exemplo,
v.0.63.0
, na tabela. - Na tabela Exemplos de Modelos de API, selecione e abra a ligação para o SO.
- Selecione Não processado. Pode utilizar o URL nas seguintes instruções.
Um URL para o modelo de API pode ter o seguinte aspeto:
https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json
Para cada um dos exemplos seguintes, substitua <URL for the API Model>
pelo URL.
Atualizar a API de modelo
Esta secção analisa a criação de um modelo de API para o cluster.
Comece por utilizar um ficheiro de Modelo de API do Azure Stack Hub para Linux ou Windows. A partir do computador, instalou o motor AKS, execute:
curl -o kubernetes-azurestack.json <URL for the API Model>
Nota
Se estiver desligado, pode transferir o ficheiro e copiá-lo manualmente para o computador desligado onde planeia editá-lo. Pode copiar o ficheiro para o seu computador Linux com ferramentas como PuTTY ou WinSCP.
Para abrir o modelo de API num editor, pode utilizar nano:
nano ./kubernetes-azurestack.json
Nota
Se não tiver o nano instalado, pode instalar o nano no Ubuntu:
sudo apt-get install nano
.No ficheiro kubernetes-azurestack.json , localize orchestratorRelease e orchestratorVersion. Selecione uma das versões suportadas do Kubernetes; pode encontrar a tabela de versões nas notas de versão. Especifique x.xx
orchestratorRelease
e orchestratorVersion como x.xx.x. Para obter uma lista das versões atuais, veja Versões suportadas do motor do AKSLocalize
customCloudProfile
e forneça o URL ao portal do inquilino. Por exemplo,https://portal.local.azurestack.external
.Adicione
"identitySystem":"adfs"
se estiver a utilizar o AD FS. Por exemplo,"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },
Nota
Se estiver a utilizar Microsoft Entra ID para o seu sistema de identidade, não precisa de adicionar o campo identitySystem.
Em
masterProfile
, defina os seguintes campos:Campo Descrição dnsPrefix Introduza uma cadeia exclusiva que servirá para identificar o nome do anfitrião das VMs. Por exemplo, um nome baseado no nome do grupo de recursos. count Introduza o número de modelos globais que pretende para a sua implementação. O mínimo para uma implementação ha é 3, mas 1 é permitido para implementações não HA. vmSize Introduza um tamanho suportado pelo Azure Stack Hub, por exemplo Standard_D2_v2
.distribuição Introduza aks-ubuntu-18.04
ouaks-ubuntu-20.04
.Em
agentPoolProfiles
atualização:Campo Descrição count Introduza o número de agentes que pretende para a sua implementação. A contagem máxima de nós a utilizar por subscrição é de 50. Se estiver a implementar mais de um cluster por subscrição, certifique-se de que a contagem total de agentes não ultrapassa os 50. Certifique-se de que utiliza os itens de configuração especificados no ficheiro JSON do modelo de API de exemplo. vmSize Introduza um tamanho suportado pelo Azure Stack Hub, por exemplo Standard_D2_v2
.distribuição Introduza aks-ubuntu-18.04
,aks-ubuntu-20.04
ouWindows
.
UtilizeWindows
para agentes que serão executados no Windows. Por exemplo, consulte kubernetes-windows.jsonEm
linuxProfile
atualização:Campo Descrição adminUsername Introduza o nome de utilizador administrador da VM. ssh Introduza a chave pública que será utilizada para autenticação SSH com VMs. Utilize ssh-rsa
e, em seguida, a chave. Para obter instruções sobre como criar uma chave pública, veja Criar uma chave SSH para Linux.Se estiver a implementar numa rede virtual personalizada, pode encontrar instruções sobre como localizar e adicionar a chave e os valores necessários às matrizes adequadas no Modelo de API em Implementar um cluster do Kubernetes numa rede virtual personalizada.
Nota
O motor do AKS para o Azure Stack Hub não lhe permite fornecer os seus próprios certificados para a criação do cluster.
Se estiver a utilizar o Windows, em
windowsProfile
atualizar os valores deadminUsername:
eadminPassword
:"windowsProfile": { "adminUsername": "azureuser", "adminPassword": "", "sshEnabled": true }
Mais informações sobre o modelo de API
- Para obter uma referência completa de todas as opções disponíveis no modelo de API, veja as definições de Cluster.
- Para obter destaques sobre opções específicas para o Azure Stack Hub, veja as especificações da definição do cluster do Azure Stack Hub.
Adicionar certificado ao utilizar o ASDK
Se estiver a implementar um cluster no Azure Stack Development Kit (ASDK) e a utilizar o Linux, terá de adicionar o certificado de raiz ao arquivo de certificados fidedigno da VM cliente com o motor AKS.
- Localize o certificado de raiz na VM neste diretório:
/var/lib/waagent/Certificates.pem.
- Copie o ficheiro de certificado:
sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt sudo update-ca-certificates
Implementar um cluster do Kubernetes
Depois de recolher todos os valores necessários no modelo de API, pode criar o cluster. Neste momento, deve:
Peça ao operador do Azure Stack Hub para:
- Verifique o estado de funcionamento do sistema, sugira a execução
Test-AzureStack
e a ferramenta de monitorização de hardware do fornecedor do OEM. - Verifique a capacidade do sistema, incluindo recursos como memória, armazenamento e IPs públicos.
- Forneça detalhes sobre a quota associada à sua subscrição para que possa verificar se ainda existe espaço suficiente para o número de VMs que planeia utilizar.
Continue a implementar um cluster:
Reveja os parâmetros disponíveis para o motor AKS nos sinalizadores da CLI do Azure Stack Hub.
Parâmetro Exemplo Descrição azure-env AzureStackCloud Para indicar ao motor do AKS que a plataforma de destino é a utilização AzureStackCloud
do Azure Stack Hub.identity-system adfs Opcional. Especifique a sua solução de gestão de identidades se estiver a utilizar os Serviços Federados do Active Directory (AD FS). localização local O nome da região do Azure Stack Hub. Para o ASDK, a região está definida como local
.resource-group kube-rg Introduza o nome de um novo grupo de recursos ou selecione um grupo de recursos existente. O nome do recurso tem de ser alfanumérico e em minúsculas. modelo de api ./kubernetes-azurestack.json Caminho para o ficheiro de configuração do cluster ou modelo de API. output-directory kube-rg Introduza o nome do diretório para conter o ficheiro de saída apimodel.json e outros ficheiros gerados. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Introduza o GUID do principal de serviço. O ID de Cliente identificado como o ID da Aplicação quando o administrador do Azure Stack Hub criou o principal de serviço. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Introduza o segredo do principal de serviço. Configure o segredo do cliente ao criar o seu serviço. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Introduza o seu ID de Subscrição. Tem de fornecer uma subscrição para o inquilino. A implementação na subscrição administrativa não é suportada. Para obter mais informações, consulte Subscrever uma oferta Segue-se um exemplo:
Nota
Para a versão 0.75.3 e superior do AKSe, o comando para implementar um cluster de motor do AKS é
aks-engine-azurestack deploy
.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
Se, por algum motivo, a execução falhar após a criação do diretório de saída, pode corrigir o problema e voltar a executar o comando. Se estiver a executar novamente a implementação e já tiver utilizado o mesmo diretório de saída, o motor do AKS devolverá um erro a indicar que o diretório já existe. Pode substituir o diretório existente com o sinalizador :
--force-overwrite
.Guarde a configuração do cluster do motor AKS numa localização segura e encriptada.
Localize o ficheiro apimodel.json. Guarde-o numa localização segura. Este ficheiro será utilizado como entrada em todas as outras operações do motor AKS.
O ficheiro apimodel.json gerado contém o principal de serviço, o segredo e a chave pública SSH que utiliza no modelo de API de entrada. O ficheiro também tem todos os outros metadados necessários para o motor do AKS efetuar todas as outras operações. Se perder o ficheiro, o motor do AKS não conseguirá configurar o cluster.
Os segredos não estão encriptados. Mantenha o ficheiro num local encriptado e seguro.
Verificar o cluster
Verifique o cluster ao ligar a kubectl
, obter as informações e, em seguida, obter os estados dos nós.
Obtenha o
kubeconfig
ficheiro para ligar ao plano de controlo.- Se já tiver
kubectl
instalado, verifique o ficheiro dokubeconfig
cluster recém-criado neste caminho/kubeconfig/kubeconfig.json
de diretório . Pode adicionar o/kubeconfig.json
ao.kube
diretório para aceder ao seu novo cluster.
Se não tiver instaladokubectl
o , visite Instalar Ferramentas para instalar a ferramenta de linha de comandos do Kubernetes. Caso contrário, siga as instruções abaixo para aceder ao cluster a partir de um dos nós do plano de controlo.
- Se já tiver
Obtenha o endereço IP público de um dos nós do plano de controlo com o portal do Azure Stack Hub.
A partir de um computador com acesso à sua instância do Azure Stack Hub, ligue-se através de SSH ao novo nó do plano de controlo com um cliente, como PuTTY ou MobaXterm.
Para o nome de utilizador SSH, utilize "azureuser" e o ficheiro de chave privada do par de chaves que forneceu para a implementação do cluster.
Verifique se os pontos finais do cluster estão em execução:
kubectl cluster-info
O resultado deve ter um aspeto semelhante ao seguinte:
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
Em seguida, reveja os estados dos nós:
kubectl get nodes
O resultado deve ser semelhante ao seguinte:
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
Resolver problemas de implementação do cluster
Ao encontrar erros ao implementar um cluster do Kubernetes com o motor do AKS, pode verificar:
- Está a utilizar as credenciais corretas do Principal de Serviço (SPN)?
- O SPN tem uma função de "Contribuidores" para a subscrição do Azure Stack Hub?
- Tem uma quota suficientemente grande no seu plano do Azure Stack Hub?
- A instância do Azure Stack Hub está a ter um patch ou uma atualização a ser aplicada?
Para obter mais informações, veja o artigo Resolução de problemas no repositório do GitHub Azure/aks-engine-azurestack .
Rodar o segredo do principal de serviço
Após a implementação do cluster do Kubernetes com o motor AKS, o principal de serviço (SPN) é utilizado para gerir interações com o Azure Resource Manager na instância do Azure Stack Hub. Em algum momento, o segredo deste principal de serviço pode expirar. Se o segredo expirar, pode atualizar as credenciais ao:
- Atualizar cada nó com o novo segredo do principal de serviço.
- Ou atualizar as credenciais do modelo de API e executar a atualização.
Atualizar cada nó manualmente
- Obtenha um novo segredo para o principal de serviço do seu operador de cloud. Para obter instruções sobre o Azure Stack Hub, veja Utilizar uma identidade de aplicação para aceder aos recursos do Azure Stack Hub.
- Utilize as novas credenciais fornecidas pelo operador da cloud para atualizar /etc/kubernetes/azure.json em cada nó. Depois de efetuar a atualização, reinicie e
kubele
kube-controller-manager
.
Atualizar o cluster com a atualização do motor aks
Em alternativa, pode substituir as credenciais no apimodel.json e executar a atualização com o ficheiro .json atualizado para a mesma ou mais recente versão do Kubernetes. Para obter instruções sobre como atualizar o modelo, veja Atualizar um cluster do Kubernetes no Azure Stack Hub
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