No Google Distributed Cloud, as suas cargas de trabalho são executadas num ou mais clusters de utilizadores. Esta página mostra como criar um cluster de utilizadores para utilização em domínios de topologia do Google Distributed Cloud. É 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 do utilizador do GKE.
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 de administrador tem as ferramentas necessárias para criar o cluster de utilizadores. Execute todos os passos neste documento na sua estação de trabalho de administração.
Se ainda não o fez, configure os seus Google Cloud recursos conforme descrito nestes documentos:
Antes de criar um cluster de utilizadores, tem de ter um cluster de administrador para gerir o cluster de utilizadores. Se ainda não o fez, crie uma estação de trabalho de administrador e um cluster de administrador para utilização com domínios de topologia.
Determine a versão do cluster de utilizadores que quer instalar. Quando cria um cluster de utilizadores, normalmente instala a versão que corresponde à versão do cluster de administrador. Se quiser instalar uma versão diferente num cluster de utilizadores, consulte as Regras de versão.
Reveja o documento de planeamento de endereços IP e certifique-se de que tem endereços IP suficientes disponíveis.
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 utilizadores.
Pense em quantos conjuntos de nós precisa e em que sistema operativo quer executar em cada um dos seus conjuntos.
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
Secret
e a secçãoVSphereInfraConfig.credentials.vCenters
no ficheiro de configuração da infraestrutura do vSphere. Veja as seguintes informações para saber como obter as informações necessárias:
Vista geral do procedimento
Os seguintes passos principais estão envolvidos na utilização da gkectl
para criar um cluster de utilizadores:
- Preencha o ficheiro de configuração do cluster de utilizadores
- Especifique os detalhes do novo cluster no ficheiro de configuração do cluster de utilizadores.
- Preencha o ficheiro de bloqueio de IPs
- Especifique os endereços IP para o gateway, a máscara de rede, os nós do plano de controlo e, opcionalmente, os nós de trabalho num ficheiro de bloco IP.
- Crie um cluster de utilizadores
- Execute
gkectl create cluster
para criar um cluster conforme especificado nos seus ficheiros de configuração.
- Verifique se o cluster de utilizadores está em execução
- Use
kubectl
para ver os nós do cluster.
No final deste procedimento, tem um cluster de utilizadores em execução onde pode implementar as suas cargas de trabalho.
Preencha o ficheiro de configuração do cluster de utilizadores
Se usou gkeadm
para criar a sua estação de trabalho de administrador, gkeadm
gerou um modelo para o ficheiro de configuração do cluster de utilizadores denominado user-cluster.yaml
.
Além disso, o gkeadm
preencheu alguns dos campos por si.
Se não usou o gkeadm
para criar a estação de trabalho de administrador, pode usar o gkectl
para gerar um modelo para o ficheiro de configuração do cluster de utilizadores.
Para gerar um modelo para o ficheiro de configuração do cluster de utilizadores:
gkectl create-config cluster --config=OUTPUT_FILENAME --gke-on-prem-version=VERSION
Substitua o seguinte:
OUTPUT_FILENAME
: um caminho à sua escolha para o modelo gerado. Se omitir esta flag, gkectl
atribui o nome
user-cluster.yaml
ao ficheiro e coloca-o no diretório atual.
VERSION
: o número da versão pretendida. Por exemplo:
gkectl create-config cluster --gke-on-prem-version=1.33.100-gke.89
.
Familiarize-se com o ficheiro de configuração analisando o documento ficheiro de configuração do cluster de utilizadores. Recomendamos que mantenha este documento aberto num separador ou numa janela separada, porque vai consultá-lo à medida que conclui os passos seguintes.
name
Defina o campo
name
para um nome à sua escolha para o cluster de utilizadores.
gkeOnPremVersion
Este campo já está preenchido. Especifica a versão do Google Distributed Cloud. Por exemplo, 1.33.100-gke.89
.
enableAdvancedCluster
Definir enableAdvancedCluster
para true
.
enableControlplaneV2
O plano de controlo V2 é obrigatório para todos os clusters de utilizadores 1.30 e superiores. Definir
enableControlplaneV2
para true
.
Quando o Controlplane V2 está ativado, o plano de controlo do cluster de utilizador é executado em nós no próprio cluster de utilizador.
enableDataplaneV2
Defina enableDataplaneV2 como true
.
vCenter
Remova esta secção inteira. Em alternativa, configure as informações do vCenter no ficheiro de configuração da infraestrutura do vSphere por domínio de topologia.
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 do 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.ipBlockFilePath
para o caminho do ficheiro de bloqueio de IPs.Decida como quer que os nós de trabalho obtenham os respetivos endereços IP. As opções são:
A partir de um servidor DHCP que configurou antecipadamente. Defina
network.ipMode.type
como"dhcp"
.A partir de uma lista de endereços IP estáticos que fornece no ficheiro de bloqueio de IP. Defina
network.ipMode.type
como"static"
.
Os nós do plano de controlo do cluster de utilizadores têm de obter os respetivos endereços IP a partir de uma lista de endereços estáticos que fornece no ficheiro de bloco de IP. Isto aplica-se mesmo que os nós de trabalho obtenham os respetivos endereços a partir de um servidor DHCP.
Independentemente de usar um servidor DHCP ou especificar uma lista de endereços IP estáticos, tem de ter endereços IP suficientes disponíveis para o seu cluster de utilizadores. Para uma explicação de quantos endereços IP precisa, consulte o artigo Planeie os seus endereços IP.
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
Reserve um IP virtual para o servidor da API Kubernetes do cluster de utilizador. Indique o seu VIP como o valor de
loadBalancer.vips.controlPlaneVIP
Reserve outro VIP para o serviço de entrada do cluster de utilizadores. Indique o seu VIP como o valor de
loadBalancer.vips.ingressVIP
.Defina
loadBalancer.kind
como"ManualLB"
e preencha a secçãomanualLB
. Para mais informações, consulte o artigo Equilíbrio de carga manual.
advancedNetworking
Se planeia criar um
gateway de NAT de saída, defina
advancedNetworking
como true
.
multipleNetworkInterfaces
Defina
multipleNetworkInterfaces
como false
. As várias interfaces de rede para pods não são suportadas com domínios de topologia.
storage
Defina
storage.vSphereCSIDisabled
como true
para desativar a implementação de componentes do vSphere CSI.
masterNode
Se quiser especificar a CPU e a memória para os nós do plano de controlo do cluster de utilizadores, preencha os campos
cpus
ememoryMB
na secçãomasterNode
.Apenas são suportados clusters de alta disponibilidade (HA). Defina o campo
replicas
como3
para especificar que o cluster vai ter três nós do plano de controlo.Para ativar a alteração automática do tamanho dos nós do plano de controlo, defina
autoResize.enabled
comotrue
.Remover toda a secção
masterNode.vsphere
.Preencha o campo
masterNode.topologyDomains
com o nome do domínio de topologia no qual quer que os nós do plano de controlo estejam.
nodePools
Um conjunto de nós é um grupo de nós de trabalho num cluster que têm todos a mesma configuração. Por exemplo, pode querer configurar um domínio de topologia separado para cada conjunto de nós. Tem de especificar, pelo menos, um conjunto de nós preenchendo a secção nodePools
.
Para cada conjunto de nós que especificar:
Preencha o campo
nodePools[i].topologyDomains
com o nome do domínio de topologia no qual quer que o conjunto de nós esteja.Remova todos os campos na secção
nodePools[i].vsphere
, excetonodePools[i].vsphere.tags
. Especifica estas informações no ficheiro de configuração da infraestrutura do vSphere por domínio de topologia.Defina
nodePools[i].osImageType
comoubuntu_cgroupv2
ouubuntu_containerd
.
Para informações mais gerais sobre conjuntos de nós, consulte os artigos Conjuntos de nós e Criar e gerir conjuntos de nós.
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.
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 emgkeConnect.projectID
ecloudAuditLogging.projectID
.A Google Cloud região definida em
stackdriver.clusterLocation
tem de ser igual à região definida emcloudAuditLogging.clusterLocation
egkeConnect.location
. Além disso, segkeOnPremAPI.enabled
fortrue
, 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.
gkeConnect
O seu cluster de utilizadores tem de estar registado numa Google Cloud frota.
Preencha a secção
gkeConnect
para especificar um
projeto anfitrião da frota
e uma conta de serviço associada. O ID em gkeConnect.projectID
tem de ser igual ao 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 os serviços de frota e
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
no ficheiro de configuração, 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 as mesmas, a criação de clusters 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 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
comofalse
. 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.
cloudAuditLogging
Se quiser integrar os registos de auditoria do servidor da API Kubernetes do seu cluster com os registos de auditoria da nuvem, preencha a secção cloudAuditLogging
.
Tenha em atenção os seguintes requisitos:
# advanced-cluster-change #
Defina cloudAuditLogging.serviceAccountKeyPath
para o mesmo caminho que
stackdriver.serviceAccountKeyPath
.
O ID em
cloudAuditLogging.projectID
tem de ser igual ao ID emgkeConnect.projectID
estackdriver.projectID
.A região em
cloudAuditLogging.clusterLocation
tem de ser igual à região definida emgkeConnect.location
(se o campo estiver incluído no ficheiro de configuração) estackdriver.clusterLocation
. Além disso, segkeOnPremAPI.enabled
fortrue
, 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.
preparedSecrets
Remova o campo preparedSecrets
.
As credenciais preparadas não são suportadas quando os domínios de topologia estão ativados.
schedulerConfiguration
Se quiser configurar configurações adicionais que vão ser transmitidas para
kube-scheduler
, adicione a secção
schedulerConfiguration
ao ficheiro de configuração.
Exemplo de ficheiros de configuração preenchidos
Segue-se um exemplo de um ficheiro de bloqueio de IP e um ficheiro de configuração de cluster de utilizadores:
user-ipblock.yaml
blocks: - netmask: 255.255.255.0 gateway: 172.16.21.1 ips: - ip: 172.16.21.2 hostname: worker-vm-1 - ip: 172.16.21.3 hostname: worker-vm-2 - ip: 172.16.21.4 hostname: worker-vm-3 - ip: 172.16.21.5 hostname: worker-vm-4 - netmask: 255.255.255.0 gateway: 100.115.223.254 ips: - ip: 100.115.222.205 hostname: cp-1 isControlPlane: true - ip: 100.115.222.206 hostname: cp-2 isControlPlane: true - ip: 100.115.222.207 hostname: cp-3 isControlPlane: true
user-cluster.yaml
cat user-cluster.yaml apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.33.100-gke.89 enableAdvancedCluster: true enableControlplaneV2: true enableDataplaneV2: true network: ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "100.115.222.200" ingressVIP: "172.16.21.30" kind: "ManualLB" manualLB: ingressHTTPNodePort: 32527 ingressHTTPSNodePort: 30139 controlPlaneNodePort: 30968 masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-node-pool1" cpus: 4 memoryMB: 8192 replicas: 3 topologyDomains: - "domain1" antiAffinityGroups: enabled: false gkeConnect: projectID: "my-project-123" location: "us-central1" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" autoRepair: enabled: true
Seguem-se os pontos importantes a compreender no exemplo anterior:
O campo
nodePools.replicas
está definido como3
, o que significa que existem três nós de trabalho em"worker-node-pool"
. Todos os nós de trabalho usam endereços IP estáticos porquenetwork.ipMode.type
está definido como"static"
.Os endereços IP dos nós do plano de controlo e dos nós de trabalho são especificados num ficheiro de bloco de IP. O ficheiro de bloqueio de IP tem quatro endereços para nós de trabalho, embora existam apenas três nós de trabalho. O endereço IP do nó de trabalho adicional é necessário durante a atualização, a atualização e a reparação automática do cluster. Os endereços IP dos nós do plano de controlo têm a flag
isControlPlane: true
.Os clusters avançados, o Controlplane V2 e o Dataplane V2 estão ativados.
O campo
masterNode.replicas
está definido como3
, pelo que o cluster tem um plano de controlo de alta disponibilidade.O VIP do plano de controlo está na mesma VLAN que os nós do plano de controlo e o VIP de entrada está na mesma VLAN que os nós de trabalho
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 utilizadores. Crie ficheiros de bloqueio de IPs separados para o cluster de administrador e para cada cluster de utilizador.
Adicione os endereços IP do gateway, da máscara de rede e dos nós do plano de controlo ao ficheiro de bloco de IP. Para cada endereço IP do nó do plano de controlo, adicione
isControlPlane: true
, conforme mostrado no exemplo anterior. Se quiser um cluster de utilizadores de alta disponibilidade (HA), especifique três endereços IP. Caso contrário,
especifique um endereço IP. O número de endereços IP que especificar para os nós do plano de controlo tem de corresponder ao número no campo masterNode.replicas
no ficheiro de configuração do cluster de utilizadores.
Se network.ipMode.type
estiver definido como "static"
, adicione os endereços IP dos nós de trabalho ao ficheiro de bloqueio de IP. Certifique-se de que especifica um endereço IP adicional para utilização durante a atualização, a atualização e a reparação automática do cluster.
Cada endereço de gateway no ficheiro de bloco de IP tem de corresponder ao endereço especificado num campo topologyDomains[i].network.gateway
no ficheiro de configuração da infraestrutura do vSphere. Para mais informações, consulte o
exemplo para domínios de topologia.
Crie um cluster de utilizadores
Execute o seguinte comando para criar um cluster de utilizadores:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Localize o ficheiro kubeconfig do cluster de utilizadores
O comando gkectl create cluster
cria um ficheiro kubeconfig denominado
USER_CLUSTER_NAME-kubeconfig
no diretório atual. Vai precisar deste ficheiro kubeconfig mais tarde para interagir com o cluster de utilizadores.
O ficheiro kubeconfig contém o nome do cluster de utilizadores. Para ver o nome do cluster, pode executar o seguinte comando:
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
O resultado mostra o nome do cluster. Por exemplo:
NAME my-user-cluster
Se quiser, pode alterar o nome e a localização do ficheiro kubeconfig.
Verifique se o cluster de utilizadores está em execução
Verifique se o cluster de utilizadores está em execução:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
Substitua USER_CLUSTER_KUBECONFIG pelo caminho do ficheiro kubeconfig do cluster de utilizadores.
O resultado mostra os nós do cluster de utilizadores. Por exemplo:
cp-vm-1 Ready control-plane,master 18m cp-vm-2 Ready control-plane,master 18m cp-vm-3 Ready control-plane,master 18m worker-vm-1 Ready 6m7s worker-vm-2 Ready 6m6s worker-vm-3 Ready 6m14s
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.
Resolução de problemas
Consulte o artigo Resolução de problemas de criação e atualização de clusters.