Crie um cluster de administrador para utilização em domínios de topologia

Esta página mostra como criar um cluster de administrador para utilização em domínios de topologia do Google Distributed Cloud. O cluster de administrador faz a gestão dos clusters de utilizadores que executam as suas cargas de trabalho. É necessária a versão 1.31 ou superior do Google Distributed Cloud para usar domínios de topologia.

A configuração de um domínio de topologia requer que ative o cluster avançado. Tenha em atenção as seguintes limitações da pré-visualização avançada de clusters:

  • Só pode ativar o cluster avançado no momento da criação do cluster para novos clusters 1.31.
  • Depois de ativar o cluster avançado, não pode atualizar o cluster para a versão 1.32. Ative o cluster avançado apenas num ambiente de teste.

Esta página destina-se a administradores, arquitetos e operadores que configuram, monitorizam e gerem a infraestrutura técnica. Para saber mais sobre as funções comuns e as tarefas de exemplo a que fazemos referência no Google Cloud conteúdo, consulte o artigo Funções e tarefas comuns de utilizadores do GKE.

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

Vista geral do procedimento

Seguem-se os principais passos envolvidos na criação de um cluster de administração:

  1. Preencha o ficheiro de configuração do administrador
    Especifique os detalhes do novo cluster de administrador preenchendo um ficheiro de configuração do cluster de administrador.
  2. Preencha o ficheiro de configuração da infraestrutura do vSphere
    Especifique os detalhes sobre os seus domínios de topologia num ficheiro de configuração da infraestrutura do vSphere.
  3. Preencha o ficheiro de bloqueio de IPs
    Especifique os endereços IP do gateway, da máscara de rede e dos nós do plano de controlo num ficheiro de bloco de IP.
  4. Obtenha imagens do SO
    Transfira o pacote normal do Google Distributed Cloud. Em seguida, execute gkectl prepare, que importa as imagens do SO para o vSphere e envia imagens de contentores para o registo privado, se aplicável.
  5. Crie um cluster de administrador.
    Use gkectl para criar um novo cluster de administrador, conforme especificado nos ficheiros de configuração concluídos. Quando o Google Distributed Cloud cria um cluster de administrador, implementa um cluster Kubernetes in Docker (kind) para alojar temporariamente os controladores Kubernetes necessários para criar o cluster de administrador. Este cluster transitório é denominado cluster de arranque. Os clusters de utilizadores são criados e atualizados pelo respetivo administrador de gestão sem usar um cluster de arranque.
  6. Verifique se o cluster de administração está em execução.
    Use kubectl para ver os nós do cluster.

No final deste procedimento, terá um cluster de administrador em execução que pode usar para criar e gerir clusters de utilizadores em domínios de topologia.

Antes de começar

Preencha o ficheiro de configuração do cluster de administrador

Se usou o gkeadm para criar a sua estação de trabalho de administrador, este gerou um ficheiro de configuração denominado admin-cluster.yaml.

Se não usou gkeadm para criar a estação de trabalho de administrador, gere o ficheiro admin-cluster.yaml executando este comando na estação de trabalho de administrador:

gkectl create-config admin

Este ficheiro de configuração destina-se à criação do cluster de administrador.

Familiarize-se com o ficheiro de configuração analisando o documento ficheiro de configuração do cluster de administrador. Recomendamos que mantenha este documento aberto num separador ou numa janela separada, porque vai consultá-lo à medida que conclui os passos seguintes.

name

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

bundlePath

O pacote é um ficheiro comprimido que contém componentes de cluster. Está incluído na estação de trabalho de administrador. Este campo já está preenchido.

enableAdvancedCluster

Definir enableAdvancedCluster para true. Isto ativa os clusters avançados, o que é necessário para configurar domínios de topologia.

infraConfigFilePath

Adicione o caminho completo para o ficheiro de configuração da infraestrutura do vSphere no campo infraConfigFilePath.

vCenter

Remova esta secção inteira. Em alternativa, configure as informações do vCenter Server no ficheiro de configuração da infraestrutura do vSphere.

network

  • Remova o seguinte do ficheiro de configuração:

    • Toda a secção network.hostConfig. Estas informações são configuradas no ficheiro de configuração da infraestrutura do vSphere por domínio de topologia.
    • O campo network.vCenter.networkName. Este campo é configurado no ficheiro de configuração da infraestrutura do vSphere por domínio de topologia.
    • Toda a secção network.controlPlaneIPBlock. Os endereços IP da gateway, da máscara de rede e dos nós do plano de controlo são configurados num ficheiro de bloco de IP.
  • Defina network.ipMode.ipBlockFilePath para o caminho do ficheiro de bloqueio de IP.

  • Definir network.ipMode.type para static.

  • Os campos network.podCIDR e network.serviceCIDR têm valores pré-preenchidos que pode deixar inalterados, a menos que entrem em conflito com endereços já usados na sua rede. O Kubernetes usa estes intervalos para atribuir endereços IP a pods e serviços no seu cluster.

loadBalancer

  • Defina loadBalancer.kind como "ManualLB" e remova a secção manualLB.

  • Reserve um IP virtual para o servidor da API Kubernetes do cluster de administrador. Indique o seu VIP como o valor de loadBalancer.vips.controlPlaneVIP

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

antiAffinityGroups

Definir antiAffinityGroups.enabled para false. As regras de antiafinidade do Distributed Resource Scheduler (DRS) não são suportadas com domínios de topologia.

adminMaster

  • Se quiser especificar a CPU e a memória para os nós do plano de controlo do cluster de administrador, preencha os campos cpus e memoryMB na secção adminMaster.

  • Os clusters de administrador têm de ter três nós do plano de controlo. Defina o campo replicas na secção adminMaster como 3.

  • Se quiser especificar um domínio de topologia específico para os nós do plano de controlo usarem, adicione o nome do domínio de topologia ao campo adminMaster.topologyDomains. Se não especificar um nome aqui, tem de definir um nome em vSphereInfraConfig.defaultTopologyDomain no ficheiro de configuração da infraestrutura do vSphere.

proxy

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

privateRegistry

Decida onde quer manter as imagens de contentores para os componentes do Google Distributed Cloud. As opções são as seguintes:

  • Artifact Registry

  • O seu próprio registo Docker privado.

    Se quiser usar o seu próprio registo privado, preencha a secção privateRegistry.

componentAccessServiceAccountKeyPath

O Google Distributed Cloud usa a sua conta de serviço de acesso aos componentes para transferir componentes do cluster do Artifact Registry. Este campo contém o caminho de um ficheiro de chave JSON para a sua conta de serviço de acesso a componentes.

Este campo já está preenchido.

gkeConnect

Registe o cluster de administrador numa Google Cloud frota preenchendo a secção gkeConnect. O ID em gkeConnect.projectID tem de ser o mesmo que o ID definido em stackdriver.projectID e cloudAuditLogging.projectID. Se os IDs dos projetos não forem iguais, a criação do cluster falha.

Opcionalmente, pode especificar uma região onde a frota e os serviços do Connect são executados em gkeConnect.location. Se não incluir este campo, o cluster usa as instâncias globais destes serviços.

Se incluir gkeConnect.location, a região especificada tem de ser igual à região configurada em cloudAuditLogging.clusterLocation, stackdriver.clusterLocation e gkeOnPremAPI.location. Se as regiões não forem iguais, a criação do cluster falha.

gkeOnPremAPI

Esta secção descreve como os clusters são inscritos na API GKE On-Prem.

A ferramenta de linha de comandos gkectl é a única ferramenta de gestão do ciclo de vida do cluster disponível para clusters que usam domínios de topologia. Embora a Google Cloud consola, a CLI do Google Cloud e o Terraform não sejam suportados para clusters que usam domínios de topologia, pode inscrever opcionalmente o cluster na API GKE On-Prem quando é criado.

Se a API GKE On-Prem estiver ativada no seu Google Cloud projeto, todos os clusters no projeto são inscritos automaticamente na API GKE On-Prem na região configurada em stackdriver.clusterLocation. A região gkeOnPremAPI.location tem de ser igual à região especificada em cloudAuditLogging.clusterLocation, gkeConnect.location e stackdriver.clusterLocation. Se as regiões não forem iguais, a criação do cluster falha.

  • Se quiser inscrever todos os clusters no projeto na API GKE On-Prem, certifique-se de que executa os passos em Antes de começar para ativar e usar a API GKE On-Prem no projeto.

  • Se não quiser inscrever o cluster na API GKE On-Prem, inclua esta secção e defina gkeOnPremAPI.enabled como false. Se não quiser inscrever nenhum cluster no projeto, desative gkeonprem.googleapis.com (o nome do serviço para a API GKE On-Prem) no projeto. Para ver instruções, consulte o artigo Desativar serviços.

stackdriver

Preencha a secção stackdriver para ativar o Cloud Logging e o Cloud Monitoring para o seu cluster.

Tenha em atenção os seguintes requisitos:

  • O ID em stackdriver.projectID tem de ser igual ao ID em gkeConnect.projectID e cloudAuditLogging.projectID.

  • A Google Cloud região definida em stackdriver.clusterLocation tem de ser igual à região definida em cloudAuditLogging.clusterLocation e gkeConnect.location. Além disso, se gkeOnPremAPI.enabled for true, tem de definir a mesma região em gkeOnPremAPI.location.

Se os IDs dos projetos e as regiões não forem os mesmos, a criação do cluster falha.

cloudAuditLogging

Se quiser integrar os registos de auditoria do servidor da API Kubernetes do seu cluster com os registos de auditoria na nuvem, preencha a secção cloudAuditLogging.

Tenha em atenção os seguintes requisitos para novos clusters:

  • Como enableAdvancedCluster está definido como true, tem de especificar o mesmo caminho em cloudAuditLogging.serviceAccountKeyPath e stackdriver.serviceAccountKeyPath.

  • O ID em cloudAuditLogging.projectID tem de ser igual ao ID em gkeConnect.projectID e stackdriver.projectID.

  • A Google Cloud região definida em cloudAuditLogging.clusterLocation tem de ser igual à região definida em stackdriver.clusterLocation e gkeConnect.location (se o campo estiver incluído no seu ficheiro de configuração). Além disso, se gkeOnPremAPI.enabled for true, tem de definir a mesma região em gkeOnPremAPI.location.

Se os IDs dos projetos e as regiões não forem os mesmos, a criação do cluster falha.

clusterBackup

Remova esta secção. A criação de uma cópia de segurança do cluster de administrador, num arquivo de dados do vSphere não é suportada.

autoRepair

Se quiser ativar a reparação automática de nós para o seu cluster de administrador, defina autoRepair.enabled como true.

secretsEncryption

Como enableAdvancedCluster está definido como true, remova esta secção.

osImageType

Defina o osImageType. a ubuntu_cgroupv2 ou ubuntu_containerd.

preparedSecrets

Remova o campo preparedSecrets. As credenciais preparadas não são suportadas quando os domínios de topologia estão ativados.

Exemplo de ficheiros de configuração preenchidos

Segue-se um exemplo de um ficheiro de configuração do cluster de administrador preenchido. A configuração ativa algumas das funcionalidades disponíveis, mas não todas.

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.1-full.tgz"
enableAdvancedCluster: true
infraConfigFilePath: "/my-config-folder/vsphere-infrastructure-config.yaml"
network:
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  ipMode:
    type: "static"
    ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
  kind: "ManualLB"
antiAffinityGroups:
  enabled: false
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
  topologyDomains: "admin-cluster-domain"
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
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

Preencha o ficheiro de configuração da infraestrutura do vSphere

Copie o modelo do ficheiro de configuração da infraestrutura do vSphere para o ficheiro no diretório que especificou no campo infraConfigFilePath no ficheiro de configuração do cluster de administrador. Existe apenas um ficheiro de configuração da infraestrutura do vSphere para o cluster de administrador e todos os clusters de utilizadores geridos.

Secret

Preencha a secção Secret no ficheiro de configuração da infraestrutura do vSphere. Esta secção descreve o segredo das credenciais do vSphere que armazena as credenciais de cada vCenter Server.

VSphereInfraConfig.name

Preencha o campo VSphereInfraConfig,name.

VSphereInfraConfig.credentials.vCenters

Para cada Secret, adicione uma secção VSphereInfraConfig.credentials.vCenters correspondente.

VSphereInfraConfig,topologyDomains

Preencha a secção VSphereInfraConfig.topologyDomains para definir os domínios de topologia.

Preencha o ficheiro de bloqueio de IPs

Copie o modelo do ficheiro de blocos de IP para o ficheiro no diretório que especificou no campo network.ipMode.ipBlockFilePath no ficheiro de configuração do cluster de administrador. Adicione os endereços IP do gateway, da máscara de rede e dos três nós do plano de controlo. Para cada endereço IP do nó do plano de controlo, adicione isControlPlane: true, conforme mostrado no exemplo para domínios de topologia.

Obtenha imagens do SO

  1. Transfira o pacote normal do Google Distributed Cloud para a estação de trabalho do administrador:

    gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz /var/lib/gke/bundles/gke-onprem-vsphere-VERSION.tgz
    

    Substitua VERSION pela versão do Google Distributed Cloud que quer instalar.

    Este comando transfere o pacote normal. Não transfira o pacote completo, uma vez que não é suportado com clusters avançados.

  2. Execute gkectl prepare para inicializar o seu ambiente vSphere:

    gkectl prepare --config ADMIN_CLUSTER_CONFIG
    

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

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

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

    • Se estiver a usar um registo Docker privado, envia as imagens de contentores para o seu registo.

    • Opcionalmente, valida as atestações de compilação das imagens de contentores, verificando assim que as imagens foram criadas e assinadas pela Google e estão prontas para implementação.

Crie o cluster de administrador

Crie o cluster de administrador:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

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

Se a criação do cluster de administrador falhar ou for cancelada, pode executar novamente o comando create:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Localize o ficheiro kubeconfig do cluster de administrador

O comando gkectl create admin cria um ficheiro kubeconfig denominado kubeconfig no diretório atual. Vai precisar deste ficheiro kubeconfig mais tarde para interagir com o cluster de administrador.

O ficheiro kubeconfig contém o nome do cluster de administrador. Para ver o nome do cluster, pode executar o seguinte comando:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

O resultado mostra o nome do cluster. Por exemplo:

NAME
gke-admin-tqk8x

Se quiser, pode alterar o nome e a localização do ficheiro kubeconfig.

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

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

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

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

O resultado mostra os nós do cluster de administração. Por exemplo:

admin-cp-vm-1   Ready    control-plane,master   ...
admin-cp-vm-2   Ready    control-plane,master   ...
admin-cp-vm-3   Ready    control-plane,master   ...

Configure o seu PodTemplate

A etiqueta de topologia é preenchida para etiquetas de nós no domínio de topologia. A menos que a configuração do domínio de topologia tenha usado a restrição predefinida, "topology.kubernetes.io/zone" como chave de topologia, tem de configurar a chave de topologia no modelo de pod da sua implementação, StatefulSet ou ReplicaSet, conforme aplicável.

Por exemplo, suponhamos que definiu a chave na etiqueta de topologia como "topology.examplepetstore.com/zone". Em PodTemplate, especifica a chave como o valor do campo topologySpreadConstraints.topologyKey. Isto permite que o programador do Kubernetes distribua os pods pelo domínio da topologia para garantir a elevada disponibilidade e evitar a concentração excessiva numa única área em caso de falha.

Para mais informações sobre a configuração de topologySpreadConstraints, consulte Restrições de dispersão da topologia de pods na documentação do Kubernetes.

Faça uma cópia de segurança dos ficheiros

Recomendamos que faça uma cópia de segurança do ficheiro kubeconfig do cluster de administrador. Ou seja, copie o ficheiro kubeconfig da estação de trabalho do administrador para outra localização. Em seguida, se perder o acesso à estação de trabalho de administrador ou se o ficheiro kubeconfig na estação de trabalho de administrador for eliminado acidentalmente, continua a ter acesso ao cluster de administrador.

Também recomendamos que faça uma cópia de segurança da chave SSH privada do cluster de administrador. Em seguida, se perder o acesso ao cluster de administrador, pode continuar a usar o SSH para se ligar aos nós do cluster de administrador. Isto permite-lhe resolver problemas e investigar problemas de conetividade com o cluster de administrador.

Extraia a chave SSH do cluster de administrador para um ficheiro com o nome 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, pode fazer uma cópia de segurança do admin-cluster-ssh-key noutra localização à sua escolha.

Resolução de problemas

Consulte o artigo Resolução de problemas de criação e atualização de clusters.

O que se segue?

Crie um cluster de utilizadores para utilização no domínio de topologia