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:
- 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.
- 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.
- 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.
- 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.
- Crie um cluster de administrador.
- Use
gkectlpara 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.
- Verifique se o cluster de administração está em execução.
- Use
kubectlpara 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
Certifique-se de que configurou e consegue iniciar sessão na sua estação de trabalho de administrador, conforme descrito no artigo Crie uma estação de trabalho de administrador. A estação de trabalho do administrador tem as ferramentas necessárias para criar o cluster de administrador. Execute todos os passos neste documento na sua estação de trabalho de administração.
Reveja o documento de planeamento de endereços IP. Certifique-se de que tem endereços IP suficientes disponíveis para os três nós do plano de controlo e um VIP do plano de controlo.
Configure o balanceador de carga para o balanceamento de carga manual. O balanceador de carga tem de ser configurado antes de criar o cluster de administrador.
Consulte a secção
privateRegistrye decida se quer usar um registo público ou privado para os componentes do Google Distributed Cloud.Analise o campo osImageType e decida que tipo de sistema operativo quer executar nos nós do cluster de administração.
Se a sua organização exigir que o tráfego de saída passe por um servidor proxy, certifique-se de que adiciona à lista de autorizações as APIs necessárias e o endereço do Artifact Registry.
Reúna as informações de que precisa para aceder a cada instância do vCenter Server. Precisa destas informações para preencher a secção
Secrete a secçãoVSphereInfraConfig.credentials.vCentersno ficheiro de configuração da infraestrutura do vSphere. Veja as seguintes informações para saber como obter as informações necessárias:
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.
- Toda a secção
Defina
network.ipMode.ipBlockFilePathpara o caminho do ficheiro de bloqueio de IP.Definir
network.ipMode.typeparastatic.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.kindcomo"ManualLB"e remova a secçãomanualLB.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
cpusememoryMBna secçãoadminMaster.Os clusters de administrador têm de ter três nós do plano de controlo. Defina o campo
replicasna secçãoadminMastercomo3.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 emvSphereInfraConfig.defaultTopologyDomainno 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.enabledcomofalse. Se não quiser inscrever nenhum cluster no projeto, desativegkeonprem.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.projectIDtem de ser igual ao ID emgkeConnect.projectIDecloudAuditLogging.projectID.A Google Cloud região definida em
stackdriver.clusterLocationtem de ser igual à região definida emcloudAuditLogging.clusterLocationegkeConnect.location. Além disso, segkeOnPremAPI.enabledfortrue, tem de definir a mesma região emgkeOnPremAPI.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
enableAdvancedClusterestá definido comotrue, tem de especificar o mesmo caminho emcloudAuditLogging.serviceAccountKeyPathestackdriver.serviceAccountKeyPath.O ID em
cloudAuditLogging.projectIDtem de ser igual ao ID emgkeConnect.projectIDestackdriver.projectID.A Google Cloud região definida em
cloudAuditLogging.clusterLocationtem de ser igual à região definida emstackdriver.clusterLocationegkeConnect.location(se o campo estiver incluído no seu ficheiro de configuração). Além disso, segkeOnPremAPI.enabledfortrue, tem de definir a mesma região emgkeOnPremAPI.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
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
VERSIONpela 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.
Execute
gkectl preparepara inicializar o seu ambiente vSphere:gkectl prepare --config ADMIN_CLUSTER_CONFIG
Substitua
ADMIN_CLUSTER_CONFIGpelo caminho da configuração do cluster de administrador.O comando
gkectl prepareexecuta 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 --configADMIN_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 --kubeconfigADMIN_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