Criar um cluster de administrador

Neste documento, mostramos como criar um cluster de administrador para o GKE no VMware. O cluster de administrador executa o plano de controle do Kubernetes para o próprio cluster de administrador e os clusters de usuário associados. É necessário criar um cluster de administrador antes de criar clusters de usuário para executar as cargas de trabalho.

Para mais detalhes sobre o cluster de administrador, consulte a visão geral da instalação.

Visão geral do procedimento

Estas são as principais etapas para criar um cluster de administrador:

  1. Prepare uma estação de trabalho de administrador.
    Esta máquina tem as ferramentas necessárias para criar novos clusters.
  2. Preencher os arquivos de configuração.
    Especifique os detalhes do novo cluster de administrador preenchendo e validando um arquivo de configuração do cluster de administrador, um arquivo de configuração de credenciais e possivelmente um arquivo de bloco de IP.
  3. Importe imagens do SO para o vSphere e envie imagens de contêiner para o registro particular, se aplicável.
    Execute gkectl prepare.
  4. (Opcional) Criar um balanceador de carga Seesaw.
    Se você decidiu usar o balanceador de carga Seesaw, execute gkectl create loadbalancer.
  5. Criar um cluster de administrador.
    Use gkectl para criar um novo cluster de administrador, conforme especificado nos arquivos de configuração concluídos. O onprem-admin-cluster-controller no cluster de inicialização temporário gerencia a criação do cluster de administrador.
  6. Verifique se o cluster de administrador está em execução.
    Use o kubectl para ver os nós do cluster.

No final do procedimento, você terá um cluster de administrador em execução para criar e gerenciar clusters de usuários.

Antes de começar

  • Consulte o documento de planejamento de endereços IP. Verifique se você tem endereços IP suficientes disponíveis e reveja sua decisão sobre como quer que os nós do cluster recebam os endereços IP: DHCP ou estático. Se você decidir usar endereços IP estáticos, preencha um arquivo de blocos de IP que contenha os endereços escolhidos.

  • Consulte a visão geral do balanceamento de carga e reveja sua decisão sobre o tipo de balanceador de carga que você quer usar. Para determinados balanceadores de carga, você precisa configurá-los antes de criar o cluster de administrador.

  • Analise a seção privateRegistry e decida se você quer usar um registro público ou particular para componentes do GKE no VMware.

  • Observe o campo osImageType e decida que tipo de sistema operacional você quer executar nos nós de cluster de administrador.

1. Preparar a estação de trabalho do administrador

Verifique se você configurou e pode fazer login na estação de trabalho do administrador, conforme descrito em Criar uma estação de trabalho de administrador. A estação de trabalho de administrador tem as ferramentas necessárias para criar seu cluster de administrador.

Siga todas as etapas restantes deste tópico na sua estação de trabalho de administrador.

2. Preencher o arquivo de configuração

Quando gkeadm criou a estação de trabalho do administrador, foi gerado um arquivo de configuração chamado admin-cluster.yaml. Esse arquivo de configuração serve para criar seu cluster de administrador.

Para se familiarizar com o arquivo de configuração, leia o documento arquivo de configuração do cluster de administrador. É recomendável manter esse documento aberto em uma guia ou janela separada para fazer referência a ele ao concluir as etapas a seguir.

name

Se você quiser especificar um nome para o cluster de administrador, preencha o campo name.

bundlePath

O pacote é um arquivo compactado que contém componentes de cluster. Ele está incluído na estação de trabalho de administrador. Este campo já foi preenchido para você.

vCenter

A maioria dos campos nesta seção já está preenchida com os valores que você inseriu quando criou sua estação de trabalho de administrador. A exceção é o campo dataDisk, que precisa ser preenchido agora.

network

Decida como você quer que os nós de cluster recebam os endereços IP deles. As opções são:

  • De um servidor DHCP configurado com antecedência. Defina network.ipMode.type como "dhcp".

  • A partir de uma lista de endereços IP estáticos fornecidos. Defina network.ipMode.type como "static" e crie um arquivo de bloco de IPs que forneça os endereços IP estáticos. Para ver um exemplo de arquivo de bloco de IP, consulte Exemplo de arquivos de configuração preenchidos.

Preencha o restante dos campos na seção de rede do arquivo de configuração conforme necessário:

  • Se você decidiu usar endereços IP estáticos para os nós do cluster, o campo network.ipMode.ipBlockFilePath e a seção network.hostconfig são obrigatórios. A seção network.hostconfig contém informações sobre os servidores NTP, servidores DNS e domínios de pesquisa DNS usados pelos nós do cluster.

  • Se você estiver usando um cluster de administrador de alta disponibilidade ou o balanceador de carga do Seesaw, a seção network.hostconfig será necessária, independente do uso de DHCP ou IPs estáticos para os nós do cluster.

  • O network.podCIDR e o network.serviceCIDR têm valores pré-preenchidos que não podem ser alterados, a menos que entrem em conflito com endereços que já estão em uso na sua rede. O Kubernetes usa esses intervalos para atribuir endereços IP a pods e serviços no cluster.

Independentemente de você depender de um servidor DHCP ou especificar uma lista de endereços IP estáticos, é necessário ter endereços IP suficientes disponíveis para os nós do cluster de administrador. Isso inclui os nós no cluster de administrador que executam os planos de controle para qualquer cluster de usuário associado. Para uma explicação de quantos endereços IP você precisa, consulte Planejar seus endereços IP.

Cluster de administrador de alta disponibilidade

Se você quiser criar um cluster de administrador de alta disponibilidade (HA, na sigla em inglês), preencha as seções network.controlPlaneIPBlock e network.hostConfig. Defina também adminMaster.replicas como 3.

Um cluster de administrador de alta disponibilidade tem três nós que executam componentes do plano de controle.

Os clusters de administrador de alta disponibilidade têm estes requisitos e limitações:

  • Um cluster de usuário gerenciado por um cluster de administrador de alta disponibilidade precisa ativar o Controlplane V2.

  • Não é possível usar o balanceador de carga Seesaw para um cluster de administrador de alta disponibilidade. Além disso, não é possível usar o balanceador de carga Seesaw para um cluster de usuário gerenciado por um cluster de administrador de alta disponibilidade.

loadBalancer

Separe um VIP para o servidor da API do Kubernetes do cluster de administrador. Reserve outro VIP para o servidor de complementos. Forneça seus VIPs como valores para loadBalancer.vips.controlPlaneVIP e loadBalancer.vips.addonsVIP.

Para mais informações, consulte VIPs na sub-rede do cluster de administrador.

Decida qual tipo de balanceamento de carga você quer usar. As opções são:

  • Balanceamento de carga em pacote MetalLB. Defina loadBalancer.kind como "MetalLB".

  • Segue o balanceamento de carga em pacote. Defina loadBalancer.kind como "Seesaw" e preencha a seção loadBalancer.seesaw.

  • Balanceamento de carga integrado com a F5 BIG-IP. Defina loadBalancer.kind como "F5BigIP" e preencha a seção f5BigIP.

  • Balanceamento de carga manual. Defina loadBalancer.kind como "ManualLB" e preencha a seção manualLB.

Para mais informações, consulte Visão geral do balanceamento de carga.

antiAffinityGroups

Defina antiAffinityGroups.enabled como true ou false de acordo com sua preferência.

Use este campo para especificar se você quer que o GKE no VMware crie regras de antiafinidade do Distributed Resource Scheduler (DRS) da VMware para os nós do cluster de administrador, fazendo com que eles sejam distribuídos por pelo menos três hosts físicos no data center.

adminMaster

Se você quiser especificar a CPU e a memória para os nós do plano de controle do cluster de administrador, preencha os campos cpus e memoryMB no adminMaster.

Visualização: se você quiser criar um cluster de administrador de alta disponibilidade, defina o campo replicas na seção adminMaster como 3. Caso contrário, defina como 1.

addonNode

Defina addonNode.autoResize.enabled como true ou false de acordo com sua preferência.

proxy

Se a rede que terá os nós do cluster de administrador estiver atrás de um servidor proxy, preencha a seção proxy.

privateRegistry

Decida onde você quer manter as imagens de contêiner para os componentes do GKE no VMware. As opções são:

  • Container Registry

  • Seu próprio registro particular do Docker.

Se você quiser usar seu próprio registro particular, preencha a seção privateRegistry.

componentAccessServiceAccountKeyPath

O GKE no VMware usa sua conta de serviço de acesso a componentes para fazer o download de componentes do cluster do Container Registry. Esse campo contém o caminho de um arquivo de chave JSON para sua conta de serviço de acesso a componentes.

Este campo já foi preenchido para você.

gkeConnect

Registre seu cluster de administrador em uma frota do Google Cloud preenchendo a seção gkeConnect.

Se você incluir as seções stackdriver e cloudAuditLogging no arquivo de configuração, o ID em gkeConnect.projectID precisará ser o mesmo definido em stackdriver.projectID e cloudAuditLogging.projectID. de dois minutos. Se os IDs do projeto não forem iguais, a criação do cluster falhará.

gkeOnPremAPI

Na versão 1.16 e mais recentes, se a API GKE On-Prem estiver ativada no projeto do Google Cloud, todos os clusters no projeto serão registrados na API GKE On-Prem automaticamente na região configurada em stackdriver.clusterLocation.

  • Se você quiser registrar todos os clusters no projeto na API GKE On-Prem, siga as etapas em Antes de começar para ativar e usar a API GKE On-Prem no projeto.

  • Se você não quiser registrar o cluster na API GKE On-Prem, inclua esta seção e defina gkeOnPremAPI.enabled como false. Se você não quiser registrar nenhum cluster no projeto, desative gkeonprem.googleapis.com (o nome do serviço da API GKE On-Prem) no projeto. Para instruções, consulte Como desativar serviços.

stackdriver

Se você quiser ativar o Cloud Logging e o Cloud Monitoring para o cluster, preencha a seção stackdriver.

Esta seção é obrigatória por padrão. Ou seja, se você não preencher essa seção, inclua a sinalização --skip-validation-stackdriver ao executar gkectl create admin.

Observe os seguintes requisitos para novos clusters:

  • O ID em stackdriver.projectID precisa ser o mesmo que o ID em gkeConnect.projectID e cloudAuditLogging.projectID.

  • A região do Google Cloud definida em stackdriver.clusterLocation precisa ser igual à região definida em cloudAuditLogging.clusterLocation. Além disso, se gkeOnPremAPI.enabled for true, a mesma região precisará ser definida em gkeOnPremAPI.location.

Se os IDs do projeto e as regiões não forem iguais, a criação do cluster vai falhar.

cloudAuditLogging

Se você quiser integrar os registros de auditoria do servidor da API Kubernetes do cluster com os registros de auditoria do Cloud, preencha a seção cloudAuditLogging.

Observe os seguintes requisitos para novos clusters:

  • O ID em cloudAuditLogging.projectID precisa ser o mesmo que o ID em gkeConnect.projectID e stackdriver.projectID.

  • A região do Google Cloud definida em cloudAuditLogging.clusterLocation precisa ser igual à região definida em stackdriver.clusterLocation. Além disso, se gkeOnPremAPI.enabled for true, a mesma região precisará ser definida em gkeOnPremAPI.location.

Se os IDs do projeto e as regiões não forem iguais, a criação do cluster vai falhar.

clusterBackup

Se você quiser ativar o backup do cluster de administrador, defina clusterBackup.datastore como o armazenamento de dados do vSphere em que você quer salvar os backups de cluster.

autoRepair

Se você quiser ativar o reparo automático de nós no cluster de administrador, defina autoRepair.enabled como true.

secretsEncryption

Se você quiser ativar a criptografia de Secrets sempre ativada, preencha a seção secretsEncryption.

osImageType

Decida o tipo de imagem do SO que você quer usar para os nós do cluster de administrador e preencha a seção osImageType conforme necessário.

Exemplo de arquivos de configuração preenchidos

Veja um exemplo de um arquivo de bloco de IP preenchido e um de configuração do cluster de administrador. A configuração ativa alguns, mas não todos, os recursos disponíveis.

vc-01-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5
    - ip: 172.16.20.15
      hostname: admin-host6
    - ip: 172.16.20.16
      hostname: admin-host7
    - ip: 172.16.20.17
      hostname: admin-host8

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.11.0-gke.543-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "vc-01-pool-1"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  dataDisk: "vc01-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "vc-01-ipblock.yaml"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
    addonsVIP: "172.16.20.60"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
componentAccessServiceAccountKeyPath: "sa-key.json"
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
clusterBackup:
  datastore: "vc-01-datastore-bu"
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

Validar o arquivo de configuração

Depois de preencher o arquivo de configuração do cluster de administrador, execute gkectl check-config para verificar se o arquivo é válido:

gkectl check-config --config ADMIN_CLUSTER_CONFIG

Substitua ADMIN_CLUSTER_CONFIG pelo caminho do arquivo de configuração do cluster de administrador.

Se o comando retornar mensagens, corrija os problemas e valide o arquivo novamente.

Se quiser pular as validações mais demoradas, transmita a sinalização --fast. Para pular validações individuais, use as sinalizações --skip-validation-xxx. Para saber mais sobre o comando check-config, consulte Como executar verificações de simulação.

3. Instalar imagens do SO

Execute gkectl prepare para inicializar o ambiente do vSphere:

gkectl prepare --config ADMIN_CLUSTER_CONFIG

O comando gkectl prepare executa as seguintes tarefas preparatórias:

  • Importa as imagens do SO para o vSphere e as marca como modelos de VM.

  • Se você estiver usando um registro particular do Docker, as imagens do contêiner serão enviadas para seu registro.

  • Como alternativa, valide os atestados de build das imagens do contêiner, verificando se as imagens foram criadas e assinadas pelo Google e estão prontas para implantação.

4. (Opcional) Criar um balanceador de carga Seesaw

Você tem várias opções de balanceamento de carga para o cluster de administrador: Metal LB, Seesaw, F5 BIG-IP ou manual.

Se você escolheu usar o balanceador de carga do Seesaw, siga as etapas nesta seção. Caso contrário, pule esta seção.

Crie e configure a VM para o balanceador de carga do Seesaw:

gkectl create loadbalancer --config ADMIN_CLUSTER_CONFIG

5. Crie o cluster de administrador

Crie o cluster de administrador:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Retomar a criação do cluster de administrador após uma falha

Se a criação do cluster de administrador falhar ou for cancelada, será possível executar o comando create novamente:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Localizar o arquivo kubeconfig do cluster de administrador

O comando gkectl create admin cria um arquivo kubeconfig chamado kubeconfig no diretório atual. Você precisará desse arquivo kubeconfig mais tarde para interagir com o cluster de administrador.

O arquivo kubeconfig contém o nome do cluster de administrador. Para acessar o nome do cluster, execute o seguinte:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

A saída mostra o nome do cluster. Exemplo:

NAME
gke-admin-tqk8x

Se preferir, é possível alterar o nome e o local do arquivo kubeconfig.

Gerenciar o arquivo checkpoint.yaml

Quando você executou o comando gkectl create admin para criar o cluster de administrador, ele criou um arquivo de ponto de controle na mesma pasta do armazenamento de dados do disco de dados do cluster de administrador. Por padrão, esse arquivo tem o nome DATA_DISK_NAME‑checkpoint.yaml. Se o comprimento de DATA_DISK_NAME for maior ou igual a 245 caracteres, devido ao limite de vSphere no tamanho do nome de arquivo, o nome será DATA_DISK_NAME.yaml.

Esse arquivo contém o estado e as credenciais do cluster de administrador e é usado para upgrades futuros. Não exclua esse arquivo, a menos que você esteja seguindo o processo de exclusão de um cluster de administrador.

Se você tiver ativado a criptografia de VM na instância do vCenter Server, precisará ter o privilégio Operações criptográficas.Acesso direto antes de criar ou fazer upgrade do cluster de administrador. Caso contrário, o checkpoint não será enviado. Se você não conseguir esse privilégio, desative o upload do arquivo de checkpoint usando a sinalização oculta --disable-checkpoint ao executar um comando relevante.

O arquivo checkpoint.yaml é atualizado automaticamente quando você executa o comando gkectl upgrade admin ou um comando gkectl update que afeta o cluster de administrador.

6. Verifique se o cluster de administrador está em execução

Verifique se o cluster de administrador está em execução:

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Substitua ADMIN_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de administrador.

A saída mostra os nós do cluster de administrador. Exemplo:

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

7. Fazer backup de arquivos

Recomendamos que você faça backup do arquivo kubeconfig do cluster de administrador. Ou seja, copie o arquivo kubeconfig da estação de trabalho do administrador para outro local. Se você perder o acesso à estação de trabalho do administrador ou se o arquivo kubeconfig na estação de trabalho de administrador for excluído acidentalmente, você ainda terá acesso ao cluster de administrador.

Também recomendamos que você faça backup da chave SSH privada do cluster de administrador. Em seguida, se você perder o acesso ao cluster de administrador, ainda vai poder usar o SSH para se conectar aos nós desse cluster. Isso permite resolver e investigar problemas de conectividade com o cluster de administrador.

Extraia a chave SSH do cluster de administrador para um arquivo chamado admin-cluster-ssh-key:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \
    -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key

Agora já é possível fazer backup do admin-cluster-ssh-key em outro local que quiser.

Solução de problemas

Consulte Solução de problemas na criação e no upgrade de clusters.

A seguir

Criar um cluster de usuário