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, veremos como escrever uma especificação de cluster, implantar um cluster com o arquivo apimodel.json e verificar seu 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 o cluster.
Você pode encontrar exemplos do modelo de API para o número de versão do mecanismo do sistema operacional e 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 de exemplos do Modelo de API, selecione e abra o link para o sistema operacional.
- Selecione a opção Bruto. Você pode usar o URL nas instruções a seguir.
Uma URL para o modelo de API pode ter a seguinte aparência:
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>
pelo 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 em que 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 a máquina desconectada onde planeja editá-lo. Você pode copiar o arquivo para sua máquina 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 suportadas; Você pode encontrar a tabela de versão nas notas de versão. Especifique o como x.xx e orchestratorVersion
orchestratorRelease
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 a ID do Microsoft Entra para seu sistema de identidade, não precisará adicionar o campo identitySystem .
Em
masterProfile
, defina os seguintes campos:Campo Descrição dnsPrefixo 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 que você deseja para sua implantação. O mínimo para uma implantação de HA é 3, mas 1 é permitido para implantações que não sejam 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 que você deseja 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 Digite aks-ubuntu-18.04
,aks-ubuntu-20.04
ouWindows
.
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 depois 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 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 da 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 do 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ê pode 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 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
.sistema de identidade adfs Opcional. Especifique sua solução de gerenciamento de identidades se você estiver usando os Serviços Federados do Active Directory (AD FS). 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. modelo de API ./kubernetes-azurestack.json Caminho para o arquivo de configuração do cluster ou modelo de API. diretório de saída 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. Você configura o segredo do cliente ao criar seu serviço. id da assinatura xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Insira seu ID de 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 Este é um exemplo:
Observação
Para o AKSe versão 0.75.3 e superior, o comando para implantar um cluster de 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 para o mecanismo do AKS 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 seu 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 plano de controle.- Se você já tiver
kubectl
instalado, verifique okubeconfig
arquivo do cluster recém-criado neste caminho/kubeconfig/kubeconfig.json
de diretório . Você pode adicionar o/kubeconfig.json
ao.kube
diretório e renomeá-lo para "config" para acessar seu novo cluster.
Se você não instaloukubectl
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 plano 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 fornecido para a implantação do cluster.
Verifique se os endpoints 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, revise 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 verificar:
- Você está usando as SPN (credenciais de entidade de serviço) corretas?
- O SPN tem uma função "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á tendo um patch ou atualização sendo aplicado?
Para obter mais informações, consulte o artigo Solução de problemas no repositório GitHub Azure /aks-engine-azurestack .
Alternar 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 Azure Resource Manager em sua instância do Azure Stack Hub. Em algum momento, o segredo para isso, a entidade de serviço, pode expirar. Se o seu segredo expirar, você poderá atualizar as credenciais:
- Atualizando cada nó com o novo segredo da entidade de serviço.
- Ou atualizando as credenciais do modelo de API e executando a atualização.
Atualize cada nó manualmente
- Obtenha um novo segredo para sua entidade de serviço de sua operadora 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 o /etc/kubernetes/azure.json em cada nó. Depois de fazer a atualização, reinicie os arquivos
kubele
ekube-controller-manager
.
Atualizar o cluster com aks-engine update
Como alternativa, você pode substituir as credenciais no apimodel.json e executar upgrade usando o arquivo .json atualizado para a mesma versão ou versão mais recente do Kubernetes. Para obter instruções sobre como atualizar o modelo, consulte Atualizar um cluster do Kubernetes no Azure Stack Hub