Implantar um cluster do Kubernetes com o mecanismo do AKS no Azure Stack Hub
Você pode implantar um cluster do Kubernetes no Azure Stack Hub de uma VM cliente que executa o mecanismo do AKS. Neste artigo, analisamos a gravação de uma especificação de cluster, a implantação de um cluster com o arquivo apimodel.json e a verificação do cluster implantando o MySQL com o Helm.
Definir uma especificação de cluster
Você pode especificar uma especificação de cluster em um arquivo de documento usando o formato JSON chamado modelo de API. O mecanismo do AKS usa uma especificação de cluster no modelo de API para criar seu cluster.
Você pode encontrar exemplos do modelo de API para o número de versão do sistema operacional e do mecanismo do AKS para versões recentes no mecanismo do AKS e no mapeamento de imagem correspondente.
- Localize o número de versão do mecanismo do AKS, por exemplo,
v.0.63.0
, na tabela. - Na tabela Exemplos de Modelo de API, selecione e abra o link para o sistema operacional.
- Selecione a opção Bruto. Você pode usar a URL nas instruções a seguir.
Uma URL para o modelo de API pode ser semelhante a:
https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json
Para cada um dos exemplos a seguir, substitua <URL for the API Model>
pela URL.
Atualizar o modelo de API
Esta seção analisa a criação de um modelo de API para o cluster.
Comece usando um arquivo de Modelo de API do Azure Stack Hub para Linux ou Windows. No computador, você instalou o mecanismo do AKS, execute:
curl -o kubernetes-azurestack.json <URL for the API Model>
Observação
Se você estiver desconectado, poderá baixar o arquivo e copiá-lo manualmente para o computador desconectado em que planeja editá-lo. Você pode copiar o arquivo para seu computador Linux usando ferramentas como PuTTY ou WinSCP.
Para abrir o modelo de API em um editor, você pode usar nano:
nano ./kubernetes-azurestack.json
Observação
Se você não tiver o Nano instalado, poderá instalar o Nano no Ubuntu:
sudo apt-get install nano
.No arquivo kubernetes-azurestack.json , localize orchestratorRelease e orchestratorVersion. Selecione uma das versões do Kubernetes com suporte; você pode encontrar a tabela de versão nas notas sobre a versão. Especifique o
orchestratorRelease
como x.xx e orchestratorVersion como x.xx.x. Para obter uma lista das versões atuais, consulte Versões do mecanismo do AKS com suporteLocalize
customCloudProfile
e forneça a URL para o portal do locatário. Por exemplo,https://portal.local.azurestack.external
.Adicione
"identitySystem":"adfs"
se você estiver usando o AD FS. Por exemplo,"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },
Observação
Se você estiver usando Microsoft Entra ID para seu sistema de identidade, não precisará adicionar o campo identitySystem.
Em
masterProfile
, defina os seguintes campos:Campo Descrição dnsPrefix Insira uma cadeia de caracteres exclusiva que servirá para identificar o nome do host das VMs. Por exemplo, um nome baseado no nome do grupo de recursos. count Insira o número de mestres desejados para sua implantação. O mínimo para uma implantação de HA é 3, mas 1 é permitido para implantações que não são de HA. vmSize Insira um tamanho compatível com o Azure Stack Hub, exemplo Standard_D2_v2
.distro Insere aks-ubuntu-18.04
ouaks-ubuntu-20.04
.Na
agentPoolProfiles
atualização:Campo Descrição count Insira o número de agentes desejados para sua implantação. A contagem máxima de nós a serem usados por assinatura é 50. Se você estiver implantando mais de um cluster por assinatura, verifique se a contagem total de agentes não ultrapassa 50. Use os itens de configuração especificados no arquivo JSON do modelo de API de exemplo. vmSize Insira um tamanho compatível com o Azure Stack Hub, exemplo Standard_D2_v2
.distro Insira aks-ubuntu-18.04
ouaks-ubuntu-20.04
Windows
.
UseWindows
para agentes que serão executados no Windows. Por exemplo, consulte kubernetes-windows.jsonNa
linuxProfile
atualização:Campo Descrição adminUsername Insira o nome de usuário administrador da VM. ssh Insira a chave pública que será usada para autenticação SSH com VMs. Use ssh-rsa
e, em seguida, a chave. Para obter instruções sobre como criar uma chave pública, consulte Criar uma chave SSH para Linux.Se você estiver implantando em uma rede virtual personalizada, poderá encontrar instruções sobre como localizar e adicionar a chave e os valores necessários às matrizes apropriadas no Modelo de API em Implantar um cluster do Kubernetes em uma rede virtual personalizada.
Observação
O mecanismo do AKS para o Azure Stack Hub não permite que você forneça seus próprios certificados para a criação do cluster.
Se você estiver usando o Windows, atualize
windowsProfile
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, consulte as definições de cluster.
- Para obter destaques sobre opções específicas para o Azure Stack Hub, consulte as especificações de definição de cluster do Azure Stack Hub.
Adicionar certificado ao usar o ASDK
Se você estiver implantando um cluster no ASDK (Azure Stack Development Kit) e usando o Linux, precisará adicionar o certificado raiz ao repositório de certificados confiável da VM cliente que executa o mecanismo aks.
- Localize o certificado raiz na VM neste diretório:
/var/lib/waagent/Certificates.pem.
- Copie o arquivo de certificado:
sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt sudo update-ca-certificates
Implantar um cluster do Kubernetes
Depois de coletar todos os valores necessários em seu modelo de API, você poderá criar seu cluster. Neste ponto, você deve:
Peça ao operador do Azure Stack Hub para:
- Verifique a integridade do sistema, sugira a execução
Test-AzureStack
e a ferramenta de monitoramento de hardware do fornecedor OEM. - Verifique a capacidade do sistema, incluindo recursos como memória, armazenamento e IPs públicos.
- Forneça detalhes da cota associada à sua assinatura para que você possa verificar se ainda há espaço suficiente para o número de VMs que você planeja usar.
Prossiga para implantar um cluster:
Examine os parâmetros disponíveis para o mecanismo do AKS nos sinalizadores da CLI do Azure Stack Hub.
Parâmetro Exemplo Descrição azure-env AzureStackCloud Para indicar ao mecanismo do AKS que sua plataforma de destino é o Azure Stack Hub, use AzureStackCloud
.identity-system adfs Opcional. Especifique sua solução de gerenciamento de identidades se você estiver usando o AD FS (Serviços Federados do Active Directory). local local O nome da região do Azure Stack Hub. Para o ASDK, a região é definida como local
.resource-group kube-rg Insira o nome de um novo grupo de recursos ou selecione um grupo de recursos existente. O nome do recurso precisa ser alfanumérico e minúsculo. api-model ./kubernetes-azurestack.json Caminho para o arquivo de configuração de cluster ou modelo de API. output-directory kube-rg Insira o nome do diretório para conter o arquivo de saída apimodel.json e outros arquivos gerados. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Insira o GUID da entidade de serviço. A ID do cliente identificada como a ID do Aplicativo quando o administrador do Azure Stack Hub criou a entidade de serviço. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Insira o segredo da entidade de serviço. Configure o segredo do cliente ao criar seu serviço. id da assinatura xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Insira sua ID da Assinatura. Você deve fornecer uma assinatura para o locatário. Não há suporte para a implantação na assinatura administrativa. Para obter mais informações, consulte Assinar uma oferta Veja um exemplo:
Observação
Para o AKSe versão 0.75.3 e superior, o comando para implantar um cluster do mecanismo 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, você poderá corrigir o problema e executar novamente o comando. Se você estiver executando novamente a implantação e tiver usado o mesmo diretório de saída antes, o mecanismo do AKS retornará um erro informando que o diretório já existe. Você pode substituir o diretório existente usando o sinalizador :
--force-overwrite
.Salve a configuração do cluster do mecanismo do AKS em um local seguro e criptografado.
Localize o arquivo apimodel.json. Salve-o em um local seguro. Esse arquivo será usado como entrada em todas as outras operações do mecanismo do AKS.
O arquivo apimodel.json gerado contém a entidade de serviço, o segredo e a chave pública SSH que você usa no modelo de API de entrada. O arquivo também tem todos os outros metadados necessários pelo mecanismo do AKS para executar todas as outras operações. Se você perder o arquivo, o mecanismo do AKS não poderá configurar o cluster.
Os segredos não são criptografados. Mantenha o arquivo em um local criptografado e seguro.
Verificar o cluster
Verifique o cluster conectando-se ao kubectl
, obtendo as informações e, em seguida, obtendo os estados dos nós.
Obtenha o
kubeconfig
arquivo para se conectar ao painel de controle.- Se você já tiver
kubectl
instalado, marcar okubeconfig
arquivo para o cluster recém-criado neste caminho/kubeconfig/kubeconfig.json
de diretório . Você pode adicionar o/kubeconfig.json
ao.kube
diretório para acessar o novo cluster.
Se você não tiver instaladokubectl
o , visite Instalar Ferramentas para instalar a ferramenta de linha de comando do Kubernetes. Caso contrário, siga as instruções abaixo para acessar o cluster de um dos nós do painel de controle.
- Se você já tiver
Obtenha o endereço IP público de um dos nós do painel de controle usando o portal do Azure Stack Hub.
Em um computador com acesso à instância do Azure Stack Hub, conecte-se via SSH ao novo nó do painel de controle usando um cliente como PuTTY ou MobaXterm.
Para o nome de usuário SSH, use "azureuser" e o arquivo de chave privada do par de chaves que você forneceu para a implantação do cluster.
Verifique se os pontos de extremidade do cluster estão em execução:
kubectl cluster-info
O resultado deve ser 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, examine os estados do nó:
kubectl get nodes
A saída 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
Solucionar problemas de implantação de cluster
Ao encontrar erros ao implantar um cluster do Kubernetes usando o mecanismo do AKS, você pode marcar:
- Você está usando as credenciais corretas da Entidade de Serviço (SPN)?
- O SPN tem uma função de "Colaboradores" para a assinatura do Azure Stack Hub?
- Você tem uma cota grande o suficiente em seu plano do Azure Stack Hub?
- A instância do Azure Stack Hub está com um patch ou uma atualização sendo aplicado?
Para obter mais informações, consulte o artigo Solução de problemas no repositório do GitHub Azure/aks-engine-azurestack .
Girar o segredo do princípio de serviço
Após a implantação do cluster do Kubernetes com o mecanismo do AKS, a entidade de serviço (SPN) é usada para gerenciar interações com o Resource Manager do Azure em sua instância do Azure Stack Hub. Em algum momento, o segredo para isso a entidade de serviço pode expirar. Se o segredo expirar, você poderá atualizar as credenciais:
- Atualizando cada nó com o novo segredo da entidade 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 sua entidade de serviço do operador de nuvem. Para obter instruções sobre o Azure Stack Hub, consulte Usar uma identidade de aplicativo para acessar recursos do Azure Stack Hub.
- Use as novas credenciais fornecidas pelo operador de nuvem para atualizar /etc/kubernetes/azure.json em cada nó. Depois de fazer a atualização, reinicie e
kubele
kube-controller-manager
.
Atualizar o cluster com a atualização do aks-engine
Como alternativa, você pode substituir as credenciais no apimodel.json e executar a atualização usando o arquivo .json atualizado para a mesma versão do Kubernetes ou mais recente. Para obter instruções sobre como atualizar o modelo, consulte Atualizar um cluster do Kubernetes no Azure Stack Hub
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de