Implantar um cluster do Kubernetes com o mecanismo do AKS no Azure Stack Hub

Você pode implantar um cluster kubernetes no Hub Azure Stack de uma VM cliente que executa o mecanismo AKS. Neste artigo, examinamos a criação de uma especificação de cluster, a implantação de um cluster com o arquivo e a apimodel.json verificação do cluster implantando o MySQL com 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 de modelo de API. O mecanismo 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 seu sistema operacional e o número de versão do mecanismo AKS para versões recentes no mecanismo AKs e o mapeamento de imagem correspondente.

  1. Localize o número de versão do mecanismo do AKS, por exemplo v.0.63.0 , na tabela.
  2. Na tabela amostras de modelo de API, selecione e abra o link para seu sistema operacional.
  3. 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/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 examina a criação de um modelo de API para o cluster.

  1. Comece usando um arquivo de modelo de API de Hub Azure Stack 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 onde você planeja editá-lo. Você pode copiar o arquivo para seu computador Linux usando ferramentas como ou WinSCP.

  2. Para abrir o modelo de API em um editor, você pode usar o 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 .

  3. No arquivo kubernetes-azurestack. JSON, localize orchestratorRelease e orchestratorVersion. Selecione uma das versões de kubernetes com suporte; você pode encontrar a tabela de versões nas notas de versão. Especifique o orchestratorRelease como x. XX e orchestratorVersion como x. XX. x. Para obter uma lista de versões atuais, consulte versões do mecanismo AKs com suporte

  4. Localize customCloudProfile e forneça a URL para o portal de locatário. Por exemplo, https://portal.local.azurestack.external.

  5. Adicione "identitySystem":"adfs" se você estiver usando AD FS. Por exemplo,

        "customCloudProfile": {
            "portalURL": "https://portal.local.azurestack.external",
            "identitySystem": "adfs"
        },
    

    Observação

    Se você estiver usando o Azure AD para seu sistema de identidade, não precisará adicionar o campo identitySystem .

  6. No 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 com base 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 são de alta disponibilidade.
    vmSize Insira um tamanho com suporte pelo Hub Azure Stack, exemplo .
    distribuição Insere aks-ubuntu-16.04 ou aks-ubuntu-18.04.
  7. Em 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 vai além de 50. Certifique-se de usar os itens de configuração especificados no arquivo JSON de modelo de API de exemplo.
    vmSize Insira um tamanho com suporte pelo Hub Azure Stack, exemplo .
    distribuição aks-ubuntu-18.04Insira aks-ubuntu-16.04 ou Windows .
    Use Windows para agentes que serão executados em Windows. Por exemplo, consulte kubernetes-Windows. JSON
  8. Em linuxProfile atualização:

    Campo Descrição
    adminUsername Insira o nome de usuário do 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 estiver implantando em uma rede virtual personalizada, você 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 kubernetes em uma rede virtual personalizada.

    Observação

    O mecanismo AKS para o Hub Azure Stack não permite que você forneça seus próprios certificados para a criação do cluster.

  9. se você estiver usando Windows, em windowsProfile atualizar os valores de adminUsername: e adminPassword :

    "windowsProfile": {
    "adminUsername": "azureuser",
    "adminPassword": "",
    "sshEnabled": true
    }
    

Mais informações sobre o modelo de API

Adicionar certificado ao usar ASDK

Se você estiver implantando um cluster no Kit de Desenvolvimento do Azure Stack (ASDK) e usando o Linux, será necessário adicionar o certificado raiz ao repositório de certificados confiáveis da VM do cliente que executa o mecanismo do AKS.

  1. Localize o certificado raiz na VM neste diretório: /var/lib/waagent/Certificates.pem.
  2. 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 o cluster. Neste ponto, você deve:

Peça ao operador de Hub de Azure Stack para:

  • Verifique a integridade do sistema, sugira a execução Test-AzureStack e a ferramenta de monitoramento de hardware do fornecedor do 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.

Vá para implantar um cluster:

  1. Examine os parâmetros disponíveis para o mecanismo AKS em Azure Stack sinalizadores da CLIdo Hub.

    Parâmetro Exemplo Descrição
    Azure-env AzureStackCloud Para indicar ao mecanismo AKS que sua plataforma de destino é Azure Stack uso AzureStackCloud do Hub.
    sistema de identidade adfs Opcional. Especifique sua solução de gerenciamento de identidade se você estiver usando serviços federados do Active Directory (AD FS).
    local local O nome da região para sua 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.
    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 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 sua ID de assinatura. Você deve fornecer uma assinatura para o usuário. Não há suporte para a implantação na assinatura administrativa. Para obter mais informações, consulte Assinar uma oferta

    Veja um exemplo:

    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
    
  2. 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 o comando de novo. Se você estiver rerurindo a implantação e tiver usado o mesmo diretório de saída antes, o mecanismo do AKS retornará um erro dizendo que o diretório já existe. Você pode substituir o diretório existente usando o sinalizador : --force-overwrite.

  3. Salve a configuração de 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 gerado apimodel.json contém a entidade de serviço, o segredo e a chave pública SSH que você usa no modelo de API de entrada. Ele também tem todos os outros metadados necessários para que o mecanismo do AKS execute todas as outras operações. Se você o perder, 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, obter as informações e, em seguida, os estados de seus nós.

  1. Obter o endereço IP público de um de seus nós mestres usando o portal de Azure Stack Hub.

  2. Em um computador com acesso à sua Azure Stack Hub, conecte-se via SSH ao novo nó mestre usando um cliente como PuTTY ou MobaXterm.

  3. 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.

  4. 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
    
  5. 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 kubernetes usando o mecanismo do AKS, você pode verificar:

  1. Você está usando as spn (credenciais de entidade de serviço) corretas?
  2. O SPN tem uma função "Colaboradores" para a assinatura Azure Stack Hub serviço?
  3. Você tem uma cota grande o suficiente em seu Azure Stack Hub de dados?
  4. A instância Azure Stack Hub está sendo aplicada a um patch ou atualização?

Para obter mais informações, consulte o artigo Solução de problemas no GitHub Azure/aks-engine.

Girar o segredo do princípio do serviço

Após a implantação do cluster kubernetes com o mecanismo do AKS, a SPN (entidade de serviço) é usada para gerenciar interações com o Azure Resource Manager em sua instância Azure Stack Hub serviço. 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 atualizando as credenciais do modelo de API e executando a atualização.

Atualizar cada nó manualmente

  1. Obter um novo segredo para sua entidade de serviço do operador de nuvem. Para obter instruções sobre Azure Stack Hub, consulte Usar uma identidade de aplicativo para acessar Azure Stack Hub recursos.
  2. 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 kubelet e kube-controller-manager.

Atualizar o cluster com aks-engine update

Como alternativa, você pode substituir as apimodel.json credenciais no e executar a atualização usando o 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 kubernetes no Azure Stack Hub

Próximas etapas