No Google Distributed Cloud, as suas cargas de trabalho são executadas num ou mais clusters de utilizadores. Este documento mostra como criar um cluster de utilizadores. Se quiser usar domínios de topologia, consulte o artigo Crie um cluster de utilizadores para usar com domínios de topologia.
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 que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud
Na versão 1.33 e superior, todos os novos clusters são criados como clusters avançados. Certifique-se de que revê as diferenças quando executa clusters avançados.
Existem várias ferramentas que pode usar para criar um cluster de utilizadores:
gkectl
- Google Cloud consola
Google Cloud CLI
- Terraform
Três destas ferramentas (a consola, a CLI gcloud e o Terraform) são clientes da API GKE On-Prem.
Para obter orientações sobre a ferramenta que pode querer usar, consulte o artigo Escolha uma ferramenta para gerir o ciclo de vida do cluster.
Antes de começar
Se planeia usar o
gkectl
para criar o cluster de utilizadores, certifique-se de que configurou e consegue iniciar sessão na sua estação de trabalho de administrador, conforme descrito em Crie uma estação de trabalho de administrador.Certifique-se de que a estação de trabalho do administrador tem a versão necessária do
gkectl
. Normalmente, usa a mesma versão dogkectl
que vai ser usada quando criar o cluster. Especifica a versão do cluster no campogkeOnPremVersion
no ficheiro de configuração do cluster. As seguintes regras de versão são aplicadas durante a criação do cluster:A versão secundária
gkectl
não pode ser inferior à versão secundária do cluster. Por exemplo, não é permitido criar um cluster 1.30 com a versão 1.29 dogkectl
. As versões de patch não são importantes. Por exemplo, pode usar a versão 1.29.0-gke.1456 para criar um cluster com uma versão de patch superior, como 1.29.1000-gke.94.gkectl
A versão secundária
gkectl
não pode ser mais de duas versões secundárias superior à versão do cluster. Por exemplo, se estiver a criar um cluster 1.28, a versãogkectl
pode ser 1.29 ou 1.30. No entanto, não pode usar a versão 1.31 dogkectl
porque é três versões secundárias superior à versão do cluster.
Se necessário, consulte Transferir
gkectl
para obter uma versão suportada dogkectl
.Se ainda não o fez, configure os seus Google Cloud recursos conforme descrito nestes documentos:
Ao configurar o projeto anfitrião da frota, tenha em atenção a ferramenta escolhida, porque se tiver escolhido um dos clientes da API GKE On-Prem, existem APIs adicionais que tem de ativar. Para ver a lista de APIs, consulte o artigo Ative APIs no projeto anfitrião da frota.
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.
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.
Se planeia instalar a versão 1.30 ou uma versão superior, o Controlplane V2 é necessário. Mesmo que esteja a instalar a versão 1.29 ou inferior, recomendamos que ative o Controlplane V2. Quando o Controlplane V2 está ativado, o plano de controlo para o cluster de utilizadores é executado num ou mais nós no próprio cluster de utilizadores. A alternativa é criar um cluster de utilizadores que use o kubeception. No caso do kubeception, o plano de controlo do cluster de utilizadores é executado num ou mais nós no cluster de administrador.
Reveja o documento de planeamento de endereços IP e certifique-se de que tem endereços IP suficientes disponíveis.
Reveja a vista geral do balanceamento de carga e reveja a sua decisão sobre o tipo de balanceador de carga que quer usar. Pode usar o equilibrador de carga MetalLB incluído ou configurar manualmente um equilibrador de carga à sua escolha. Para o equilíbrio de carga manual, tem de configurar o equilibrador de carga 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.
Pondere se quer usar clusters do vSphere separados para o cluster de administrador e os clusters de utilizadores, e se quer usar centros de dados separados. Pondere também se quer usar instâncias separadas do vCenter Server.
Na versão 1.29 e superior, as verificações prévias do lado do servidor estão ativadas por predefinição. As verificações prévias do lado do servidor requerem regras de firewall adicionais. Em Regras de firewall para clusters de administrador, pesquise "Verificações prévias" e certifique-se de que todas as regras de firewall necessárias estão configuradas.
Com as verificações prévias do lado do servidor, quando cria um cluster de utilizadores com o comando
gkectl
, as verificações prévias são executadas no cluster de administrador em vez de localmente na estação de trabalho de administrador. As verificações prévias do lado do servidor também são executadas se usar a consola, a CLI Google Cloud ou o Terraform para criar um cluster de utilizadores. Google Cloud
Crie um cluster de utilizadores com a ferramenta que escolher
Esta secção fornece passos para criar um cluster de utilizadores com o gkectl
, a consola, a CLI gcloud e o Terraform.
gkectl
Vista geral do procedimento
Estes são os principais passos envolvidos na utilização da gkectl
para criar um cluster de utilizadores:
- Preencha os ficheiros de configuração
- Especifique os detalhes do novo cluster preenchendo um ficheiro de configuração do cluster de utilizadores, um ficheiro de configuração de credenciais e, possivelmente, um ficheiro de bloco de IPs.
- (Opcional) Importe imagens do SO para o vSphere e envie imagens de contentores para o registo privado, se aplicável.
- Corrida
gkectl prepare
.
- Crie um cluster de utilizadores
- Execute
gkectl create cluster
para criar um cluster conforme especificado no seu ficheiro 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.
Se usar os VPC Service Controls, pode ver erros quando executar alguns comandos gkectl
, como "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Para evitar estes erros, adicione o parâmetro --skip-validation-gcp
aos seus comandos.
Preencha os ficheiros de configuração
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 pretendido. Por exemplo:
gkectl create-config cluster --gke-on-prem-version=1.33.0-gke.799
.
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.0-gke.799
.
enableAdvancedCluster
Na versão 1.31, se quiser ativar a funcionalidade de cluster avançada, defina
enableAdvancedCluster
como true
. Este campo tem de estar definido como true
se o cluster de administrador tiver a funcionalidade de cluster avançada ativada.
Tenha em atenção as seguintes diferenças entre as versões:
Na versão 1.31, a funcionalidade de cluster avançada está em pré-visualização:
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.
Na versão 1.32, a funcionalidade de cluster avançada está em DG.
Por predefinição, os grupos de utilizadores são criados como grupos avançados. Tem de definir explicitamente
enableAdvancedCluster
comofalse
se quiser criar um cluster não avançado.Para clusters com a funcionalidade de clusters avançados ativada, as atualizações de clusters são suportadas.
Na versão 1.33 e superior, todos os clusters são criados como clusters avançados. Se definir
enableAdvancedCluster
comofalse
, a criação do cluster falha.
enableControlplaneV2
Para criar um cluster de utilizadores com o Controlplane V2 ativado, defina
enableControlplaneV2
como true
.
Se ativar o cluster avançado,
tem de definir enableControlplaneV2
como 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. Recomendamos vivamente que ative o Controlplane V2.
kubeception
Se definir este campo como false
, o cluster usa o kubecetption.
Com o kubeception, o plano de controlo do cluster de utilizador é executado em nós no cluster de administrador.
Para um cluster kubeception:
Defina
enableControlplaneV2
comofalse
.Não preencha a secção
controlPlaneIPBlock
.Especifique os endereços IP dos nós do plano de controlo do cluster de utilizadores no ficheiro de bloco de IP do cluster de administrador.
enableDataplaneV2
Defina enableDataplaneV2 como true
.
vCenter
Os valores que define na secção vCenter
do
ficheiro de configuração do cluster de administrador
são globais. Ou seja, aplicam-se ao cluster de administrador e aos respetivos clusters de utilizadores associados.
Para cada cluster de utilizadores que criar, tem a opção de substituir alguns dos valores vCenter
globais.
Para substituir qualquer um dos valores vCenter
globais, preencha os campos relevantes na secção vCenter
do ficheiro de configuração do cluster de utilizadores.
Em particular, pode querer usar clusters vSphere separados para o cluster de administrador e os clusters de utilizadores, e pode querer usar centros de dados separados para o cluster de administrador e os clusters de utilizadores.
Usar um centro de dados e um cluster do vSphere
A opção predefinida é usar um centro de dados e um cluster do vSphere para o cluster de administrador e o cluster de utilizadores. Para esta opção, não defina quaisquer valores vCenter
no ficheiro de configuração do cluster de utilizadores. Os valores vCenter
serão herdados do cluster de administração.
Usar clusters do vSphere separados
Se quiser criar um cluster de utilizadores que esteja no seu próprio cluster do vSphere,
especifique um valor para vCenter.cluster
no ficheiro de configuração do cluster de utilizadores.
Se o cluster de administrador e o cluster de utilizadores estiverem em clusters vSphere separados, podem estar no mesmo centro de dados ou em centros de dados diferentes.
Usar centros de dados do vSphere separados
O cluster de utilizadores e o cluster de administrador podem estar em centros de dados diferentes. Nesse caso, também estão em clusters do vSphere separados.
Se especificar vCenter.datacenter
no ficheiro de configuração do cluster de utilizadores, também tem de especificar:
vCenter.networkName
vCenter.datastore
ouvCenter.storagePolicyName
vCenter.cluster
ouvCenter.resourcePool
Usar contas do vCenter separadas
Um cluster de utilizadores pode usar uma conta do vCenter diferente, com
vCenter.credentials
diferentes, do cluster de administrador. A conta do vCenter para o cluster de administrador precisa de acesso ao centro de dados do cluster de administrador, enquanto a conta do vCenter para o cluster de utilizador só precisa de acesso ao centro de dados do cluster de utilizador.
Usar instâncias separadas do vCenter Server
Em determinadas situações, faz sentido criar um cluster de utilizadores que use a sua própria instância do vCenter Server. Ou seja, o cluster de administrador e um cluster de utilizador associado usam instâncias diferentes do vCenter Server.
Por exemplo, numa localização periférica, pode querer ter uma máquina física a executar o vCenter Server e uma ou mais máquinas físicas a executar o ESXi. Em seguida, pode usar a sua instância local do vCenter Server para criar uma hierarquia de objetos do vSphere, incluindo centros de dados, clusters, pools de recursos, arquivos de dados e pastas.
Preencha toda a secção vCenter
do ficheiro de configuração do cluster de utilizadores. Em particular, especifique um valor
para vCenter.address
que seja diferente do endereço do vCenter Server que
especificou no ficheiro de configuração do cluster de administrador. Por exemplo:
vCenter: address: "vc-edge.example" datacenter: "vc-edge" cluster: "vc-edge-workloads" resourcePool: "vc-edge-pool datastore: "vc-edge-datastore caCertPath: "/usr/local/google/home/me/certs/edge-cacert.pem" credentials: fileRef: path: "credential.yaml" entry: "vCenter-edge" folder: "edge-vm-folder"
Preencha também o campo
network.vCenter.networkName
.
network
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. Defina
network.ipMode.type
como"static"
e crie um ficheiro de bloqueio de IPs que faculte os endereços IP estáticos. Para ver um exemplo de um ficheiro de bloqueio de IPs, consulte Exemplo de ficheiros de configuração preenchidos.
Se decidiu usar endereços IP estáticos para os nós de trabalho, preencha o campo
network.ipMode.ipBlockFilePath
.
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. Isto acontece mesmo que os nós de trabalho obtenham os respetivos endereços a partir de um servidor DHCP. Para especificar endereços IP estáticos para os nós do plano de controlo, preencha a secção network.controlPlaneIPBlock
. Se quiser um cluster de utilizadores de alta disponibilidade (HA), especifique três endereços IP. Caso contrário, especifique um endereço IP.
Especifique os servidores DNS e NTP preenchendo a secção hostConfig
. Estes servidores DNS e NTP destinam-se aos nós do plano de controlo. Se estiver a usar endereços IP estáticos para os nós de trabalho, estes servidores DNS e NTP também se destinam aos nós de trabalho.
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.
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.
loadBalancer
Reserve um IP virtual para o servidor da API Kubernetes do cluster de utilizador. Reserve outro VIP para o serviço de entrada do cluster de utilizadores. Forneça os seus VIPs como valores para loadBalancer.vips.controlPlaneVIP
e loadBalancer.vips.ingressVIP
.
Decida que tipo de equilíbrio de carga quer usar. As opções são as seguintes:
Balanceamento de carga integrado do MetalLB. Definir
loadBalancer.kind
para"MetalLB"
. Preencha também a secçãoloadBalancer.metalLB.addressPools
e definaenableLoadBalancer
comotrue
para, pelo menos, um dos seus grupos de nós. Para mais informações, consulte o artigo Equilíbrio de carga integrado com o MetalLB.Balanceamento de carga manual. Defina
loadBalancer.kind
como"ManualLB"
e preencha a secçãomanualLB
. Para mais informações, consulte o artigo Equilíbrio de carga manual.
Para mais informações sobre as opções de equilíbrio de carga, consulte o artigo Vista geral do equilíbrio de carga.
advancedNetworking
Se planeia criar um
gateway de NAT de saída, defina
advancedNetworking
como true
.
multipleNetworkInterfaces
Decida se quer configurar várias interfaces de rede para pods e defina multipleNetworkInterfaces em conformidade.
storage
Se quiser desativar a implementação de componentes do CSI do vSphere, defina
storage.vSphereCSIDisabled
como true
.
masterNode
Na secção masterNode
, pode especificar quantos nós do plano de controlo quer para o cluster de utilizadores: especifique 3
para um cluster de alta disponibilidade (HA) ou 1
para um cluster sem HA. Também pode especificar um arquivo de dados para os nós do plano de controlo e se quer ativar a alteração automática do tamanho para os nós do plano de controlo.
Se o campo
enableAdvancedCluster
for true
, tem de definir o campo replicas
como 3
. Apenas são suportados clusters de utilizadores de HA em clusters avançados.
Lembre-se de que especificou endereços IP para os nós do plano de controlo na secção
network.controlPlaneIPBlock
.
nodePools
Um conjunto de nós é um grupo de nós num cluster que têm todos a mesma configuração. Por exemplo, os nós num conjunto podem executar o Windows e os nós noutro conjunto podem executar o Linux.
Tem de especificar, pelo menos, um conjunto de nós preenchendo a secção nodePools
.
Se ativar o cluster avançado, defina nodePools[i]osImageType
como ubuntu_cgroupv2
ou ubuntu_containerd
.
Para mais informações, consulte os artigos Pools de nós e Criar e gerir pools de nós.
antiAffinityGroups
Defina
antiAffinityGroups.enabled
como true
ou false
.
Este campo especifica se o Google Distributed Cloud cria regras de antiafinidade do Distributed Resource Scheduler (DRS) para os seus nós de trabalho, o que faz com que sejam distribuídos por, pelo menos, três anfitriões físicos no seu centro de dados.
stackdriver
Se quiser ativar o
Cloud Logging e o Cloud Monitoring
para o seu cluster, preencha a secção
stackdriver
.
Esta secção é obrigatória por predefinição. Ou seja, se não preencher esta secção, tem de incluir a flag --skip-validation-stackdriver
quando executar gkectl create cluster
.
Tenha em atenção os seguintes requisitos para novos clusters:
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.
Na versão 1.28 e posteriores, pode especificar opcionalmente uma região onde os serviços Fleet 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
Na versão 1.16 e posteriores, se a API GKE On-Prem estiver ativada no seu
Google Cloud projeto, todos os clusters no projeto são
inscritos na API GKE On-Prem
automaticamente na região configurada em stackdriver.clusterLocation
.
A região gkeOnPremAPI.location
tem de ser igual à região especificada em cloudAuditLogging.clusterLocation
, gkeConnect.location
(se o campo estiver incluído no ficheiro de configuração) 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:
Se ativar o cluster avançado, defina
cloudAuditLogging.serviceAccountKeyPath
para o mesmo caminho questackdriver.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 a mesma que a região definida emgkeConnect.location
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.
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
user-cluster.yaml
cat user-cluster.yaml apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.33.0-gke.799 enableControlplaneV2: true enableDataplaneV2: true network: hostConfig: dnsServers: - "203.0.113.2" - "198.51.100.2" ntpServers: - "216.239.35.4" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "172.16.21.1" ips: - ip: "172.16.21.6" hostname: "cp-vm-1" - ip: "172.16.21.7" hostname: "cp-vm-2" - ip: "172.16.21.8" hostname: "cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" ingressVIP: "172.16.21.30" kind: MetalLB metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.21.30-172.16.21.39" masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 enableLoadBalancer: true antiAffinityGroups: enabled: true 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 estáticos dos nós de trabalho são especificados num ficheiro de blocos de IP. O ficheiro de bloqueio de IP tem quatro endereços, apesar de existirem apenas três nós de trabalho. O endereço IP adicional é necessário durante a atualização, a atualização e a reparação automática do cluster.
Os servidores DNS e NTP são especificados na secção
hostConfig
. Neste exemplo, estes servidores DNS e NTP destinam-se aos nós do plano de controlo e aos nós de trabalho. Isto deve-se ao facto de os nós de trabalho terem endereços IP estáticos. Se os nós de trabalho obtivessem os respetivos endereços IP de um servidor DHCP, estes servidores DNS e NTP seriam apenas para os nós do plano de controlo.Os endereços IP estáticos para os três nós do plano de controlo são especificados na secção
network.controlPlaneIPBlock
do ficheiro de configuração do cluster de utilizadores. Não é necessário um endereço IP adicional neste bloco.O plano de controlo V2 está ativado.
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 e o VIP de entrada estão ambos na mesma VLAN que os nós de trabalho e os nós do plano de controlo.
Os VIPs reservados para serviços do tipo LoadBalancer são especificados na secção
loadBalancer.metalLB.addressPools
do ficheiro de configuração do cluster de utilizadores. Estes IPs virtuais estão na mesma VLAN que os nós de trabalho e os nós do plano de controlo. O conjunto de VIPs especificados nesta secção tem de incluir o VIP de entrada e não pode incluir o VIP do plano de controlo.O ficheiro de configuração do cluster de utilizadores não inclui uma secção
vCenter
. Assim, o cluster de utilizadores usa os mesmos recursos do vSphere que o cluster de administrador.
Valide o ficheiro de configuração
Depois de preencher o ficheiro de configuração do cluster de utilizadores, execute o comando
gkectl check-config
para verificar se o ficheiro é válido:
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig para o cluster de administrador
USER_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster de utilizadores
Se o comando devolver mensagens de falha, corrija os problemas e valide o ficheiro novamente.
Se quiser ignorar as validações mais demoradas, transmita a flag --fast
.
Para ignorar validações individuais, use as flags --skip-validation-xxx
. Para saber mais acerca do comando check-config
, consulte o artigo Executar verificações pré-publicação.
(Opcional) Importe imagens do SO para o vSphere e envie imagens de contentores para um registo privado
Execute gkectl prepare
se alguma das seguintes afirmações for verdadeira:
O cluster de utilizadores está num centro de dados do vSphere diferente do cluster de administração.
O cluster de utilizadores tem um vCenter Server diferente do cluster de administrador.
O cluster de utilizadores tem uma pasta do vCenter diferente do cluster de administrador.
O seu cluster de utilizadores usa um registo de contentores privado diferente do registo privado usado pelo seu cluster de administrador.
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador
BUNDLE: o caminho do ficheiro do pacote. Este ficheiro está na estação de trabalho do administrador em
/var/lib/gke/bundles/
. Por exemplo:/var/lib/gke/bundles/gke-onprem-vsphere-1.33.0-gke.799-full.tgz
USER_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster de utilizadores
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
Se usar os VPC Service Controls, pode ver erros quando executar alguns comandos gkectl
, como "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Para evitar estes erros, adicione o parâmetro --skip-validation-gcp
aos seus comandos.
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
Consola
Começar
Na Google Cloud consola, aceda à página Criar cluster de VMs.
Selecione o Google Cloud projeto no qual quer criar o cluster. O projeto selecionado é usado como o projeto anfitrião da frota. Tem de ser o mesmo projeto no qual o cluster de administrador está registado. Depois de criar o cluster de utilizadores, este é registado automaticamente na frota do projeto selecionado.
Na secção Escolha o tipo de cluster, selecione Criar um cluster de utilizadores para um cluster de administrador existente.
Noções básicas sobre clusters
Introduza informações básicas sobre o cluster.
Introduza um nome para o cluster de utilizadores.
Em Cluster de administrador, selecione o cluster de administrador na lista. Se não especificou um nome para o cluster de administrador quando o criou, o nome é gerado no formato
gke-admin-[HASH]
. Se não reconhecer o nome do cluster de administrador, execute o seguinte comando na sua estação de trabalho de administrador:KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG kubectl get OnPremAdminCluster -n kube-system -o=jsonpath='{.items[0].metadata.name}'
Se o cluster de administrador que quer usar não for apresentado, consulte a secção de resolução de problemas O cluster de administrador não é apresentado na lista pendente Noções básicas do cluster.
No campo Localização da API GCP, selecione a Google Cloud região na lista. Esta definição especifica a região onde as seguintes APIs e serviços são executados:
- API GKE On-Prem (
gkeonprem.googleapis.com
) - Serviço de frota (
gkehub.googleapis.com
) - Serviço Connect (
gkeconnect.googleapis.com
)
Esta definição também controla a região na qual os seguintes elementos são armazenados:
- Os metadados do cluster de utilizadores de que a API GKE On-Prem precisa para gerir o ciclo de vida do cluster
- Os dados do Cloud Logging e do Cloud Monitoring dos componentes do sistema
- O registo de auditoria do administrador criado pelos registos de auditoria da nuvem
O nome do cluster, o projeto e a localização identificam de forma exclusiva o cluster no Google Cloud.
- API GKE On-Prem (
Selecione a versão do Google Distributed Cloud para o cluster de utilizadores.
Como criador do cluster, recebe privilégios de administrador do cluster para o cluster. Opcionalmente, introduza o endereço de email de outro utilizador que vai administrar o cluster no campo Utilizador administrador do cluster na secção Autorização.
Quando o cluster é criado, a API GKE On-Prem aplica as políticas de controlo de acesso baseado em funções (RBAC) do Kubernetes ao cluster para lhe conceder, bem como a outros utilizadores administradores, a função
clusterrole/cluster-admin
do Kubernetes, que fornece acesso total a todos os recursos no cluster em todos os espaços de nomes.Clique em Seguinte para aceder à secção Plano de controlo.
Plano de controlo
Todos os campos na secção Plano de controlo estão definidos com valores predefinidos. Reveja as predefinições e, opcionalmente, altere-as conforme necessário.
No campo vCPUs do nó do plano de controlo, introduza o número de vCPUs (mínimo de 4) para cada nó do plano de controlo do cluster de utilizadores.
No campo Memória do nó do plano de controlo, introduza o tamanho da memória em MiB (mínimo de 8192 e tem de ser um múltiplo de 4) para cada plano de controlo do seu cluster de utilizadores.
Em Nós do plano de controlo, selecione o número de nós do plano de controlo para o cluster de utilizadores. Por exemplo, pode selecionar 1 nó do plano de controlo para um ambiente de desenvolvimento e 3 nós do plano de controlo para ambientes de produção de alta disponibilidade (HA).
Opcionalmente, selecione Redimensionamento automático de nós. A alteração do tamanho significa que os recursos de vCPU e memória atribuídos a um nó são ajustados automaticamente. Quando ativados, os nós do plano de controlo do cluster de utilizadores são redimensionados de acordo com o número de nós de trabalho no cluster de utilizadores. Assim, à medida que adiciona mais nós de trabalho ao cluster de utilizadores, o tamanho dos nós do plano de controlo aumenta.
Na secção IPs dos nós do plano de controlo, introduza os endereços IP do gateway, da máscara de sub-rede e dos nós do plano de controlo.
Clique em Seguinte para aceder à secção Rede.
Trabalhar em rede
Nesta secção, especifica os endereços IP dos nós, dos pods e dos serviços do cluster. Um cluster de utilizadores tem de ter um endereço IP para cada nó e um endereço IP adicional para um nó temporário necessário durante as atualizações, as atualizações e a reparação automática do cluster. Para mais informações, consulte o artigo De quantos endereços IP precisa um cluster de utilizadores?.
Na secção IPs de nós, selecione o modo de IP para o cluster de utilizadores. Selecione uma das seguintes opções:
DHCP: escolha DHCP se quiser que os nós do cluster recebam o respetivo endereço IP de um servidor DHCP.
Estático: escolha Estático se quiser fornecer endereços IP estáticos para os nós do cluster ou se quiser configurar o equilíbrio de carga manual.
Se selecionou DHCP, avance para o passo seguinte para especificar os CIDRs de serviço e de pod. Para o modo de IP estático, faculte as seguintes informações:
Introduza o endereço IP do gateway para o cluster de utilizadores.
Introduza a máscara de sub-rede para os nós do cluster de utilizadores.
Na secção Endereços IP, introduza os endereços IP e, opcionalmente, os nomes dos anfitriões para os nós no cluster de utilizadores. Pode introduzir um endereço IPv4 individual (como 192.0.2.1) ou um bloco CIDR de endereços IPv4 (como 192.0.2.0/24).
Se introduzir um bloco CIDR, não introduza um nome de anfitrião.
Se introduzir um endereço IP individual, pode introduzir opcionalmente um nome de anfitrião. Se não introduzir um nome de anfitrião, o Google Distributed Cloud usa o nome da VM do vSphere como o nome de anfitrião.
Clique em + Adicionar endereço IP conforme necessário para introduzir mais endereços IP.
Na secção CIDRs de serviços e pods, a consola fornece os seguintes intervalos de endereços para os seus serviços e pods do Kubernetes:
- CIDR de serviço: 10.96.0.0/20
- CIDR do pod: 192.168.0.0/16
Se preferir introduzir os seus próprios intervalos de endereços, consulte o artigo Endereços IP para pods e serviços para ver as práticas recomendadas.
Se selecionou Modo de IP estático ou Ativar plano de controlo v2, especifique as seguintes informações na secção Configuração do anfitrião:
- Introduza os endereços IP dos servidores DNS.
- Introduza os endereços IP dos servidores NTP.
- Opcionalmente, introduza domínios de pesquisa de DNS.
Clique em Seguinte para aceder à secção Equilibrador de carga.
Balanceador de carga
Escolha o equilibrador de carga a configurar para o seu cluster. Consulte a vista geral do equilibrador de carga para mais informações.
Selecione o Tipo de balanceador de carga na lista.
Incluído no MetalLB
Configure o balanceamento de carga integrado com o MetalLB. Pode usar o MetalLB para o cluster de utilizadores apenas se o cluster de administrador estiver a usar o SeeSaw ou o MetalLB. Esta opção requer uma configuração mínima. O MetalLB é executado diretamente nos nós do cluster e não requer VMs adicionais. Para mais informações sobre as vantagens da utilização do MetalLB e como se compara com as outras opções de equilíbrio de carga, consulte o artigo Equilíbrio de carga incluído com o MetalLB.Na secção Conjuntos de endereços, configure, pelo menos, um conjunto de endereços, da seguinte forma:
Introduza um nome para o conjunto de endereços.
Introduza um intervalo de endereços IP que contenha o VIP de entrada na notação CIDR (por exemplo, 192.0.2.0/26) ou notação de intervalo (por exemplo, 192.0.2.64-192.0.2.72). Para especificar um único endereço IP num conjunto, use /32 na notação CIDR (por exemplo, 192.0.2.1/32).
Se os endereços IP dos seus serviços do tipo
LoadBalancer
não estiverem no mesmo intervalo de endereços IP que o VIP de entrada, clique em + Adicionar intervalo de endereços IP e introduza outro intervalo de endereços.Os endereços IP em cada conjunto não podem sobrepor-se e têm de estar na mesma sub-rede que os nós do cluster.
Em Atribuição de endereços IP, selecione uma das seguintes opções:
Automático: escolha esta opção se quiser que o controlador MetalLB atribua automaticamente endereços IP do conjunto de endereços aos serviços do tipo
LoadBalancer
Manual: escolha esta opção se pretender usar endereços do conjunto para especificar manualmente endereços para serviços do tipo
LoadBalancer
Clique em Evitar endereços IP com erros se quiser que o controlador MetalLB não use endereços do conjunto que terminam em .0 ou .255. Isto evita o problema de dispositivos de consumo com erros que eliminam por engano o tráfego enviado para esses endereços IP especiais.
Quando terminar, clique em Concluído.
Se necessário, clique em Adicionar conjunto de endereços.
Na secção IPs virtuais, introduza o seguinte:
VIP do plano de controlo: o endereço IP de destino a usar para o tráfego enviado para o servidor da API Kubernetes do cluster de utilizador. O servidor da API Kubernetes para o cluster de utilizador é executado num nó no cluster de administrador. Este endereço IP tem de estar no mesmo domínio L2 que os nós do cluster de administrador. Não adicione este endereço na secção Conjuntos de endereços.
VIP de entrada: o endereço IP a ser configurado no balanceador de carga para o proxy de entrada. Tem de adicionar este intervalo a um conjunto de endereços na secção Conjuntos de endereços.
Clique em Continuar.
F5 BIG-IP
Pode usar o F5 BIG-IP para o cluster de utilizadores apenas se o cluster de administrador estiver a usar o F5 BIG-IP. Certifique-se de que instala e configura o F5 BIG-IP ADC antes de o integrar com o Google Distributed Cloud.O nome de utilizador e a palavra-passe do F5 são herdados do cluster de administrador.
Na secção IPs virtuais, introduza o seguinte:
VIP do plano de controlo: o endereço IP de destino a usar para o tráfego enviado para o servidor da API Kubernetes.
VIP de entrada: o endereço IP a ser configurado no balanceador de carga para o proxy de entrada.
No campo Endereço, introduza o endereço do seu equilibrador de carga F5 BIG-IP.
No campo Partição, introduza o nome de uma partição do BIG-IP que criou para o seu cluster de utilizadores.
No campo Nome do conjunto de sNAT, introduza o nome do seu conjunto de sNAT, se aplicável.
Clique em Continuar.
Manual
Só pode usar um equilibrador de carga manual para o cluster de utilizadores se o cluster de administrador usar um equilibrador de carga manual. No Google Distributed Cloud, o servidor da API Kubernetes e o proxy de entrada são expostos por um serviço Kubernetes do tipoLoadBalancer
. Escolha os seus próprios valores nodePort
no intervalo de 30000 a 32767 para estes serviços. Para o proxy de entrada, escolha um valor nodePort
para o tráfego HTTP e HTTPS. Consulte o artigo
Ativar o modo de equilíbrio de carga manual
para mais informações.
Na secção IPs virtuais, introduza o seguinte:
VIP do plano de controlo: o endereço IP de destino a usar para o tráfego enviado para o servidor da API Kubernetes.
VIP de entrada: o endereço IP a ser configurado no balanceador de carga para o proxy de entrada.
No campo Porta do nó do plano de controlo, introduza um valor
nodePort
para o servidor da API Kubernetes.No campo Ingress HTTP node port, introduza um valor
nodePort
para o tráfego HTTP para o proxy de entrada.No campo Ingress HTTPS node port, introduza um valor
nodePort
para o tráfego HTTPS para o proxy de entrada.No campo Porta do nó do servidor Konnectivity, introduza um valor
nodePort
para o servidor Konnectivity.Clique em Continuar.
Funcionalidades
Esta secção apresenta as funcionalidades e as operações ativadas no cluster.
As seguintes opções são ativadas automaticamente e não podem ser desativadas:
Cloud Logging de serviços do sistema
Cloud Monitoring dos serviços do sistema
As seguintes opções estão ativadas por predefinição, mas pode desativá-las:
Ative o controlador CSI do vSphere: também denominado plug-in de armazenamento de contentores do vSphere. O controlador da interface de armazenamento de contentores (CSI) é executado num cluster do Kubernetes implementado no vSphere para aprovisionar volumes persistentes no armazenamento do vSphere. Para mais informações, consulte o artigo Usar o controlador da interface de armazenamento de contentores do vSphere.
Ative grupos de antiafinidade: as regras de antiafinidade do VMware Distributed Resource Scheduler (DRS) são criadas automaticamente para os nós do cluster de utilizadores, o que faz com que sejam distribuídos por, pelo menos, 3 anfitriões físicos no seu centro de dados. Certifique-se de que o seu ambiente vSphere cumpre os requisitos.
Clique em Seguinte para configurar um conjunto de nós
Node pools
O cluster é criado com, pelo menos, um conjunto de nós. Um conjunto de nós é um modelo para um grupo de nós de trabalho criados neste cluster. Para mais informações, consulte o artigo Criar e gerir conjuntos de nós .
Na secção Predefinições do conjunto de nós, conclua o seguinte:
- Introduza o Nome do conjunto de nós ou aceite "default-pool" como nome.
- Introduza o número de vCPUs para cada nó no conjunto (mínimo de 4 por worker do cluster de utilizadores).
- Introduza o tamanho da memória em mebibytes (MiB) para cada nó no conjunto (mínimo de 8192 MiB por nó de trabalho do cluster de utilizadores e tem de ser um múltiplo de 4).
- No campo Nodes (Nós), introduza o número de nós no conjunto (mínimo de 3). Se introduziu endereços IP estáticos para os IPs dos nós na secção Rede, certifique-se de que introduziu IPs suficientes para acomodar estes nós do cluster de utilizadores.
- Selecione o tipo de imagem do SO: Ubuntu, Ubuntu Containerd ou COS.
- Introduza o tamanho do disco de arranque em gibibytes (GiB) (mínimo de 40 GiB).
- Se estiver a usar o MetalLB como equilibrador de carga, o MetalLB tem de estar ativado em, pelo menos, um conjunto de nós. Deixe a opção Usar este conjunto de nós para o balanceamento de carga do MetalLB selecionada ou adicione outro conjunto de nós para usar para o MetalLB.
Na secção Metadados do node pool (opcional), se quiser adicionar etiquetas do Kubernetes e restrições, faça o seguinte:
- Clique em + Adicionar etiquetas do Kubernetes. Introduza a Chave e o Valor da etiqueta. Repita estes passos conforme necessário.
- Clique em + Adicionar contaminação. Introduza a Chave, o Valor e o Efeito da contaminação. Repita estes passos conforme necessário.
Clique em Validar e concluir para criar o cluster de utilizadores. A criação do cluster de utilizadores demora 15 minutos ou mais. A consola apresenta mensagens de estado à medida que valida as definições e cria o cluster no seu centro de dados.
Se for encontrado um erro ao validar as definições, a consola apresenta uma mensagem de erro que deve ser suficientemente clara para corrigir o problema de configuração e tentar novamente criar o cluster.
Para mais informações sobre possíveis erros e como os corrigir, consulte o artigo Resolva problemas de criação de clusters de utilizadores na Google Cloud consola.
CLI gcloud
Use o seguinte comando para criar um cluster de utilizadores:
gcloud container vmware clusters create
Depois de criar o cluster, tem de criar, pelo menos, um node pool com o seguinte comando:
gcloud container vmware node-pools create
A maioria das flags para criar o cluster e o node pool corresponde aos campos no ficheiro de configuração do cluster de utilizadores. Para ajudar a começar, pode testar um comando completo na secção exemplos.
Recolha informações
Reúna algumas informações necessárias para criar o cluster.
Obtenha o nome e a localização da associação à frota do cluster de administrador:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
Substitua
FLEET_HOST_PROJECT_ID
pelo ID do projeto no qual o cluster de administrador está registado.O resultado é semelhante ao seguinte:
NAME EXTERNAL_ID LOCATION admin-cluster-1 bb7803b4-8438-4b22-859f-4559b4b29072 global admin-cluster-2 ee16ee2b-6ec0-49fc-9413-3c89cbc70854 global admin-cluster-3 fc2b7ef5-39ff-4b63-b919-04c5adc67be4 us-west1
A localização especifica onde os serviços Fleet e Connect são executados. Os clusters de administrador criados antes da versão 1.28 são geridos pelos serviços globais da frota e do Connect. Na versão 1.28 e superior, pode especificar
global
ou uma região quando cria o cluster de administrador. Google Cloud Especifica a região no comando--admin-cluster-membership-location
no exemplo de comandos que se segue.Obtenha uma lista das versões disponíveis:
gcloud container vmware clusters query-version-config \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION
Substitua o seguinte:
ADMIN_CLUSTER_NAME
: o nome do cluster de administrador.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster de administrador está registado.ADMIN_CLUSTER_REGION
: a região de associação da frota do cluster de administrador. Esta opção é global ou de uma Google Cloud região. Use a localização do cluster de administrador a partir do resultado degcloud container fleet memberships list
.REGION
: a Google Cloud região que vai usar quando criar o cluster de utilizadores. Esta é a região em que a API GKE On-Prem é executada e armazena os respetivos metadados.Se o cluster de administrador estiver inscrito na API GKE On-Prem, use a mesma região que o cluster de administrador. Para saber a região do cluster de administrador, execute o seguinte comando:
gcloud container vmware admin-clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=-
Se o cluster de administrador não estiver inscrito na API GKE On-Prem, especifique
us-west1
ou outra região suportada. Se inscrever posteriormente o cluster de administrador na API GKE On-Prem, use a mesma região em que o cluster de utilizador se encontra.
O resultado do comando
gcloud container vmware clusters query-version-config
é semelhante ao seguinte:versions: - isInstalled: true version: 1.28.800-gke.109 - version: 1.29.0-gke.1456 - version: 1.29.100-gke.248 - version: 1.29.200-gke.245 - version: 1.29.300-gke.184
O comando também produz uma explicação das versões que pode usar para a criação ou a atualização do cluster de utilizadores. As versões permitidas são anotadas com
isInstalled: true
, o que significa que o cluster de administrador tem os componentes específicos da versão de que precisa para gerir clusters de utilizadores dessa versão. Se quiser usar uma versão instalada no cluster de administrador, avance para a secção Exemplos para criar o cluster de utilizador.
Instale uma versão diferente
Um cluster de administrador pode gerir clusters de utilizadores em diferentes versões. O resultado do comando query-version-config
apresenta outras versões que pode usar quando cria o cluster. Se quiser criar um cluster de utilizadores que seja uma versão diferente do cluster de administrador, tem de transferir e implementar os componentes de que o cluster de administrador precisa para gerir clusters de utilizadores dessa versão, da seguinte forma:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --required-platform-version=VERSION
Substitua VERSION
por uma das versões indicadas no resultado do comando query-version-config
.
O comando transfere a versão dos componentes que especificar em
--required-platform-version
para o cluster de administrador e, em seguida, implementa os
componentes. Já pode criar um cluster de utilizadores com a versão especificada.
Se executar novamente o comando gcloud container vmware clusters query-version-config
,
a versão especificada é anotada com isInstalled: true
.
Exemplos
Os exemplos seguintes mostram como criar um cluster de utilizadores com diferentes balanceadores de carga com o Controlplane V2 ativado. Com o Controlplane V2, o plano de controlo para um cluster de utilizadores é executado num ou mais nós no próprio cluster de utilizadores. Recomendamos que ative o Controlplane V2 e, na versão 1.30 e superior, os novos clusters de utilizadores têm de ter o Controlplane V2 ativado. Para obter informações acerca das opções de balanceamento de carga disponíveis, consulte a Vista geral do balanceador de carga.
A maioria dos exemplos usa os valores predefinidos para configurar os nós do plano de controlo. Se quiser alterar alguma das predefinições, inclua as flags descritas na secção Flags do plano de controlo. Se necessário, também pode alterar algumas definições do vSphere.
Antes de executar o comando gcloud
para criar o cluster, pode incluir --validate-only
para validar a configuração especificada nas flags para o comando gcloud
. Quando tiver tudo pronto para criar o cluster,
remova esta flag e execute o comando.
Se receber um erro após a execução do comando gcloud container vmware clusters create
durante cerca de um minuto ou mais, verifique se o cluster foi criado parcialmente executando o seguinte comando:
gcloud container vmware clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=-
Se o cluster não estiver listado no resultado, corrija o erro e volte a executar o comando
gcloud container vmware clusters create
.
Se o cluster estiver listado no resultado, elimine-o através do seguinte comando:
gcloud container vmware clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --force \ --allow-missing
Em seguida, corrija o erro e execute novamente gcloud container vmware clusters create
.
Depois de o cluster estar em execução, tem de adicionar um conjunto de nós antes de implementar cargas de trabalho, conforme descrito na secção Crie um conjunto de nós.
MetalLB e DHCP
Este exemplo mostra como criar um cluster de utilizadores com o balanceador de carga MetalLB incluído e usar o seu servidor DHCP para obter endereços IP para os nós de trabalho do cluster.Só pode usar o MetalLB para o cluster de utilizadores se o cluster de administrador estiver a usar o MetalLB. Esta opção de equilíbrio de carga requer uma configuração mínima. O MetalLB é executado diretamente nos nós do cluster e não requer VMs adicionais. Para mais informações sobre as vantagens da utilização do MetalLB e como se compara com as outras opções de equilíbrio de carga, consulte o artigo Equilíbrio de carga integrado com o MetalLB.
O comando de exemplo cria um cluster de utilizadores com as seguintes características, que pode modificar conforme necessário para o seu ambiente.
Bandeira | Descrição |
---|---|
--admin-users |
Concede-lhe e a outro utilizador direitos administrativos completos no cluster. |
--enable-control-plane-v2 |
Ativa o Controlplane V2, que é recomendado e obrigatório na versão 1.30 e superior. |
--control-plane-ip-block |
Um endereço IP para o nó do plano de controlo. Para criar um cluster de utilizadores de alta disponibilidade (HA), especifique três endereços IP e adicione a flag --replicas=3 . |
--metal-lb-config-address-pools |
Dois conjuntos de endereços para o balanceador de carga MetalLB. Precisa de, pelo menos, um conjunto de endereços e pode especificar mais, se necessário. Para
maior conveniência, o exemplo contém um conjunto de endereços com o nome
"ingress-vip-pool" como lembrete de que o endereço IP do
VIP de entrada tem de estar num dos conjuntos de endereços. Pode especificar
o CIDR para um único endereço IP anexando /32 ao
endereço IP. |
gcloud container vmware clusters create USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION \ --version=VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --admin-users=ANOTHER_EMAIL_ADDRESS \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=AVOID_BUGGY_IPS,manual-assign=MANUAL_ASSIGN,addresses=IP_ADDRESS_RANGE_1' \ --metal-lb-config-address-pools='pool=ingress-vip-pool,avoid-buggy-ips=False,manual-assign=True,addresses=INGRESS_VIP/32' \ --enable-control-plane-v2 \ --dns-servers=DNS_SERVER_1 \ --ntp-servers=NTP_SERVER_1 \ --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \ --control-plane-vip=CONTROL_PLANE_VIP \ --ingress-vip=INGRESS_VIP \ --enable-dhcp
Substitua o seguinte:
-
USER_CLUSTER_NAME
: um nome à sua escolha para o cluster de utilizadores. Não é possível alterar o nome após a criação do cluster. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
-
FLEET_HOST_PROJECT_ID
: o ID do projeto no qual quer criar o cluster. O projeto especificado também é usado como o projeto de anfitrião da frota. Tem de ser o mesmo projeto no qual o cluster de administrador está registado. Após a criação do cluster de utilizadores, este é automaticamente registado na frota do projeto selecionado. Não é possível alterar o projeto anfitrião da frota após a criação do cluster. -
ADMIN_CLUSTER_NAME
: o nome do cluster de administrador que gere o cluster de utilizadores. Na flag--admin-cluster-membership
, pode usar o nome do cluster totalmente especificado, que tem o seguinte formato:projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME
Em alternativa, pode definir
--admin-cluster-membership
para o nome do cluster de administração, como no comando de exemplo. Quando usa apenas o nome do cluster de administrador, defina o ID do projeto do cluster de administrador com--admin-cluster-membership-project
e a localização com--admin-cluster-membership-location
. A localização do cluster de administrador églobal
ou uma região Google Cloud . Se precisar de encontrar a região, executegcloud container fleet memberships list
. -
REGION
: A Google Cloud região na qual a API GKE On-Prem (gkeonprem.googleapis.com
), o serviço Fleet (gkehub.googleapis.com
) e o serviço Connect (gkeconnect.googleapis.com
) são executados. Especifiqueus-west1
ou outra região suportada. Não é possível alterar a região após a criação do cluster. Esta definição especifica a região onde os seguintes elementos são armazenados:- Os metadados do cluster de utilizadores que a API GKE On-Prem precisa para gerir o ciclo de vida do cluster
- Os dados do Cloud Logging e do Cloud Monitoring dos componentes do sistema
- O registo de auditoria do administrador criado pelos registos de auditoria da nuvem
O nome do cluster, o projeto e a localização identificam em conjunto o cluster de forma exclusiva em Google Cloud.
-
VERSION
: a versão do Google Distributed Cloud para o seu cluster de utilizador. -
YOUR_EMAIL_ADDRESS
eANOTHER_EMAIL_ADDRESS
: Se não incluir a flag--admin-users
, como criador do cluster, são-lhe concedidos privilégios de administrador do cluster por predefinição. No entanto, se incluir--admin-users
para designar outro utilizador como administrador, substitui a predefinição e tem de incluir o seu endereço de email e o endereço de email do outro administrador. Por exemplo, para adicionar dois administradores:--admin-users=sara@example.com \ --admin-users=amal@example.com
Quando o cluster é criado, a API GKE On-Prem aplica as políticas de controlo de acesso baseado em funções (RBAC) do Kubernetes ao cluster para lhe conceder a si e a outros utilizadores administradores a função
clusterrole/cluster-admin
do Kubernetes, que fornece acesso total a todos os recursos no cluster em todos os espaços de nomes.
-
SERVICE_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para serviços no seu cluster. Tem de ser, pelo menos, um intervalo /24.Exemplo:
--service-address-cidr-blocks=10.96.0.0/20
-
POD_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para pods no seu cluster. Tem de ser, pelo menos, um intervalo /18.Exemplo:
--pod-address-cidr-blocks=192.168.0.0/16
-
--metal-lb-config-address-pools
: inclua este sinalizador para especificar a configuração dos pools de endereços a serem usados pelo balanceador de carga do MetalLB. O valor da flag tem o seguinte formato:--metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
O valor tem segmentos que começam com as palavras-chave
pool
,avoid-buggy-ip
,manual-assign
eaddresses
. Separe cada segmento com uma vírgula.-
pool
: um nome à sua escolha para o conjunto. -
avoid-buggy-ips
1: Se definir esta opção comoTrue
, o controlador MetalLB não atribui endereços IP que terminem em .0 ou .255 aos serviços. Isto evita o problema de dispositivos de consumo com erros que rejeitam por engano o tráfego enviado para esses endereços IP especiais. Se não for especificado, o fuso horário predefinido éFalse
. -
manual-assign
: se não quiser que o controlador MetalLB atribua automaticamente endereços IP deste conjunto a serviços, defina esta opção comoTrue
. Em seguida, um programador pode criar um serviço do tipoLoadBalancer
e especificar manualmente um dos endereços do conjunto. Se não for especificado,manual-assign
é definido comoFalse
. -
Na lista de
addresses
: cada endereço tem de ser um intervalo na notação CIDR ou no formato de intervalo com hífen. Para especificar um único endereço IP num conjunto (como para o VIP de entrada), use /32 na notação CIDR, por exemplo:192.0.2.1/32
.
Tenha em conta o seguinte:
- Coloque todo o valor entre aspas simples.
- Não são permitidos espaços em branco.
- Separe cada intervalo de endereços IP com um ponto e vírgula.
Por exemplo:
--metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
-
-
CONTROL_PLANE_VIP
: o endereço IP que escolheu para configurar no equilibrador de carga para o servidor da API Kubernetes do cluster de utilizadores.Exemplo:
--control-plane-vip=203.0.113.3
-
INGRESS_VIP
: o endereço IP que escolheu para configurar no balanceador de carga para o proxy de entrada.Exemplo:
--ingress-vip=10.251.134.80
O endereço IP do VIP de entrada tem de estar num dos conjuntos de endereços do MetalLB.
--enable-dhcp
: inclua--enable-dhcp
se quiser que os nós do cluster recebam o respetivo endereço IP de um servidor DHCP que forneça. Não inclua esta flag se quiser fornecer endereços IP estáticos para os nós do cluster ou se quiser configurar o equilíbrio de carga manual.
MetalLB e IPs estáticos
Este exemplo mostra como criar um cluster de utilizadores com o balanceador de carga MetalLB incluído e atribuir endereços IP estáticos aos nós de trabalho do cluster.Só pode usar o MetalLB para o cluster de utilizadores se o cluster de administrador estiver a usar o MetalLB. Esta opção de equilíbrio de carga requer uma configuração mínima. O MetalLB é executado diretamente nos nós do cluster e não requer VMs adicionais. Para mais informações sobre as vantagens da utilização do MetalLB e como se compara com as outras opções de equilíbrio de carga, consulte o artigo Equilíbrio de carga integrado com o MetalLB.
O comando de exemplo cria um cluster de utilizadores com as seguintes características, que pode modificar conforme necessário para o seu ambiente.
Bandeira | Descrição |
---|---|
--admin-users |
Concede-lhe e a outro utilizador direitos administrativos completos no cluster. |
--enable-control-plane-v2 |
Ativa o Controlplane V2, que é recomendado e obrigatório na versão 1.30 e superior. |
--control-plane-ip-block |
Um endereço IP para o nó do plano de controlo. Para criar um cluster de utilizadores de alta disponibilidade (HA), especifique três endereços IP e adicione a flag --replicas=3 . |
--metal-lb-config-address-pools |
Dois conjuntos de endereços para o balanceador de carga MetalLB. Precisa de, pelo menos, um conjunto de endereços e pode especificar mais, se necessário. Para
maior conveniência, o exemplo contém um conjunto de endereços com o nome
"ingress-vip-pool" como lembrete de que o endereço IP do
VIP de entrada tem de estar num dos conjuntos de endereços. Pode especificar
o CIDR para um único endereço IP anexando /32 ao
endereço IP. |
--static-ip-config-ip-blocks |
Quatro endereços IP para os nós de trabalho nos clusters. Isto inclui uma morada para um nó adicional que pode ser usado durante a atualização. Se necessário, pode especificar mais endereços IP. O nome do anfitrião é opcional. |
gcloud container vmware clusters create USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION \ --version=VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --admin-users=ANOTHER_EMAIL_ADDRESS \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=NAME,avoid-buggy-ips=AVOID_BUGGY_IPS,manual-assign=MANUAL_ASSIGN,addresses=IP_ADDRESS_RANGE_1' \ --metal-lb-config-address-pools='pool=ingress-vip-pool,avoid-buggy-ips=False,manual-assign=True,addresses=INGRESS_VIP/32' \ --enable-control-plane-v2 \ --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \ --control-plane-vip=CONTROL_PLANE_VIP \ --ingress-vip=INGRESS_VIP \ --static-ip-config-ip-blocks='gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1 HOST_1;IP_ADDRESS_2 HOST_2;IP_ADDRESS_3 HOST_3;IP_ADDRESS_4 HOST_4' \ --dns-servers=DNS_SERVER_1 \ --ntp-servers=NTP_SERVER_1
Substitua o seguinte:
-
USER_CLUSTER_NAME
: um nome à sua escolha para o cluster de utilizadores. Não é possível alterar o nome após a criação do cluster. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
-
FLEET_HOST_PROJECT_ID
: o ID do projeto no qual quer criar o cluster. O projeto especificado também é usado como o projeto de anfitrião da frota. Tem de ser o mesmo projeto no qual o cluster de administrador está registado. Após a criação do cluster de utilizadores, este é automaticamente registado na frota do projeto selecionado. Não é possível alterar o projeto anfitrião da frota após a criação do cluster. -
ADMIN_CLUSTER_NAME
: o nome do cluster de administrador que gere o cluster de utilizadores. Na flag--admin-cluster-membership
, pode usar o nome do cluster totalmente especificado, que tem o seguinte formato:projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME
Em alternativa, pode definir
--admin-cluster-membership
para o nome do cluster de administração, como no comando de exemplo. Quando usa apenas o nome do cluster de administrador, defina o ID do projeto do cluster de administrador com--admin-cluster-membership-project
e a localização com--admin-cluster-membership-location
. A localização do cluster de administrador églobal
ou uma região Google Cloud . Se precisar de encontrar a região, executegcloud container fleet memberships list
. -
REGION
: A Google Cloud região na qual a API GKE On-Prem (gkeonprem.googleapis.com
), o serviço Fleet (gkehub.googleapis.com
) e o serviço Connect (gkeconnect.googleapis.com
) são executados. Especifiqueus-west1
ou outra região suportada. Não é possível alterar a região após a criação do cluster. Esta definição especifica a região onde os seguintes elementos são armazenados:- Os metadados do cluster de utilizadores que a API GKE On-Prem precisa para gerir o ciclo de vida do cluster
- Os dados do Cloud Logging e do Cloud Monitoring dos componentes do sistema
- O registo de auditoria do administrador criado pelos registos de auditoria da nuvem
O nome do cluster, o projeto e a localização identificam em conjunto o cluster de forma exclusiva em Google Cloud.
-
VERSION
: a versão do Google Distributed Cloud para o seu cluster de utilizador. -
YOUR_EMAIL_ADDRESS
eANOTHER_EMAIL_ADDRESS
: Se não incluir a flag--admin-users
, como criador do cluster, são-lhe concedidos privilégios de administrador do cluster por predefinição. No entanto, se incluir--admin-users
para designar outro utilizador como administrador, substitui a predefinição e tem de incluir o seu endereço de email e o endereço de email do outro administrador. Por exemplo, para adicionar dois administradores:--admin-users=sara@example.com \ --admin-users=amal@example.com
Quando o cluster é criado, a API GKE On-Prem aplica as políticas de controlo de acesso baseado em funções (RBAC) do Kubernetes ao cluster para lhe conceder a si e a outros utilizadores administradores a função
clusterrole/cluster-admin
do Kubernetes, que fornece acesso total a todos os recursos no cluster em todos os espaços de nomes.
-
SERVICE_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para serviços no seu cluster. Tem de ser, pelo menos, um intervalo /24.Exemplo:
--service-address-cidr-blocks=10.96.0.0/20
-
POD_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para pods no seu cluster. Tem de ser, pelo menos, um intervalo /18.Exemplo:
--pod-address-cidr-blocks=192.168.0.0/16
-
--metal-lb-config-address-pools
: inclua este sinalizador para especificar a configuração dos pools de endereços a serem usados pelo balanceador de carga do MetalLB. O valor da flag tem o seguinte formato:--metal-lb-config-address-pool 'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
O valor tem segmentos que começam com as palavras-chave
pool
,avoid-buggy-ip
,manual-assign
eaddresses
. Separe cada segmento com uma vírgula.-
pool
: um nome à sua escolha para o conjunto. -
avoid-buggy-ips
1: Se definir esta opção comoTrue
, o controlador MetalLB não atribui endereços IP que terminem em .0 ou .255 aos serviços. Isto evita o problema de dispositivos de consumo com erros que rejeitam por engano o tráfego enviado para esses endereços IP especiais. Se não for especificado, o fuso horário predefinido éFalse
. -
manual-assign
: se não quiser que o controlador MetalLB atribua automaticamente endereços IP deste conjunto a serviços, defina esta opção comoTrue
. Em seguida, um programador pode criar um serviço do tipoLoadBalancer
e especificar manualmente um dos endereços do conjunto. Se não for especificado,manual-assign
é definido comoFalse
. -
Na lista de
addresses
: cada endereço tem de ser um intervalo na notação CIDR ou no formato de intervalo com hífen. Para especificar um único endereço IP num conjunto (como para o VIP de entrada), use /32 na notação CIDR, por exemplo:192.0.2.1/32
.
Tenha em conta o seguinte:
- Coloque todo o valor entre aspas simples.
- Não são permitidos espaços em branco.
- Separe cada intervalo de endereços IP com um ponto e vírgula.
Por exemplo:
--metal-lb-config-address-pool 'pool=pool1,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.134.80/32;192.168.1.0/26;192.168.1.2-192.168.1.3'
-
-
CONTROL_PLANE_VIP
: o endereço IP que escolheu para configurar no equilibrador de carga para o servidor da API Kubernetes do cluster de utilizadores.Exemplo:
--control-plane-vip=203.0.113.3
-
INGRESS_VIP
: o endereço IP que escolheu para configurar no balanceador de carga para o proxy de entrada.Exemplo:
--ingress-vip=10.251.134.80
O endereço IP do VIP de entrada tem de estar num dos conjuntos de endereços do MetalLB.
-
--static-ip-config-ip-blocks
: especifique o gateway predefinido, a máscara de sub-rede e uma lista dos endereços IP estáticos para os nós de trabalho no cluster de utilizadores. O valor da flag tem o seguinte formato:--static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'
O valor tem segmentos que começam com as palavras-chave
gateway
,netmask
eips
. Separe os segmentos com uma vírgula.Tenha em conta o seguinte:
- Coloque todo o valor entre aspas simples.
- Não são permitidos espaços em branco, exceto entre um endereço IP e um nome de anfitrião.
Na lista de endereços IP:
- Pode especificar um endereço IP individual ou um bloco CIDR de endereços IP.
- Separe cada endereço IP ou bloco CIDR com um ponto e vírgula.
- Para um endereço IP individual, pode especificar opcionalmente um nome de anfitrião após o endereço IP. Separe o endereço IP e o nome do anfitrião com um espaço. Quando não especifica um nome de anfitrião, o Google Distributed Cloud usa o nome da VM do vSphere como o nome de anfitrião.
- Se especificar um bloco CIDR, não especifique um valor para o nome do anfitrião.
Por exemplo:
--static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
-
DNS_SERVER
: Uma lista separada por vírgulas dos endereços IP dos servidores DNS para as VMs. -
DNS_SEARCH_DOMAIN
: Uma lista separada por vírgulas dos domínios de pesquisa DNS que os anfitriões devem usar. Estes domínios são usados como parte de uma lista de pesquisa de domínios.Por exemplo:
--dns-search-domains example.com,examplepetstore.com
-
NTP_SERVER
: Uma lista separada por vírgulas dos endereços IP dos servidores de tempo que as VMs devem usar.
Equilíbrio de carga manual e IPs estáticos
Este exemplo mostra como criar um cluster de utilizadores com um equilibrador de carga manual e atribuir endereços IP estáticos aos nós de trabalho do cluster.Só pode usar um equilibrador de carga manual para o cluster de utilizadores se o cluster de administrador usar um equilibrador de carga manual. No Google Distributed Cloud, o servidor da API Kubernetes, o proxy de entrada e o serviço de suplemento para agregação de registos são expostos por um serviço Kubernetes do tipo LoadBalancer
. Escolha os seus próprios valores nodePort
no intervalo de 30000 a 32767 para estes serviços. Para o proxy de entrada, escolha um valor nodePort
para o tráfego HTTP e HTTPS. Consulte o artigo
Ativar o modo de equilíbrio de carga manual
para mais informações.
O comando de exemplo cria um cluster de utilizadores com as seguintes características, que pode modificar conforme necessário para o seu ambiente.
Bandeira | Descrição |
---|---|
--admin-users |
Concede-lhe e a outro utilizador direitos administrativos completos no cluster. |
--enable-control-plane-v2 |
Ativa o Controlplane V2, que é recomendado e obrigatório na versão 1.30 e superior. |
--control-plane-ip-block |
Um endereço IP para o nó do plano de controlo. Para criar um cluster de utilizadores de alta disponibilidade (HA), especifique três endereços IP e adicione a flag --replicas=3 . |
--static-ip-config-ip-blocks |
Quatro endereços IP para os nós de trabalho nos clusters. Isto inclui uma morada para um nó adicional que pode ser usado durante a atualização. Se necessário, pode especificar mais endereços IP. O nome do anfitrião é opcional. |
gcloud container vmware clusters create USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION \ --version=VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --admin-users=ANOTHER_EMAIL_ADDRESS \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --enable-control-plane-v2 \ --control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1 CP_HOST_1' \ --control-plane-vip=CONTROL_PLANE_VIP \ --ingress-vip=INGRESS_VIP \ --ingress-http-node-port=INGRESS_HTTP_NODE_PORT \ --ingress-https-node-port=INGRESS_HTTPS_NODE_PORT \ --static-ip-config-ip-blocks='gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1 HOST_1;IP_ADDRESS_2 HOST_2;IP_ADDRESS_3 HOST_3;IP_ADDRESS_4 HOST_4' \ --dns-servers=DNS_SERVER_1 \ --ntp-servers=NTP_SERVER_1
Substitua o seguinte:
-
USER_CLUSTER_NAME
: um nome à sua escolha para o cluster de utilizadores. Não é possível alterar o nome após a criação do cluster. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
-
FLEET_HOST_PROJECT_ID
: o ID do projeto no qual quer criar o cluster. O projeto especificado também é usado como o projeto de anfitrião da frota. Tem de ser o mesmo projeto no qual o cluster de administrador está registado. Após a criação do cluster de utilizadores, este é automaticamente registado na frota do projeto selecionado. Não é possível alterar o projeto anfitrião da frota após a criação do cluster. -
ADMIN_CLUSTER_NAME
: o nome do cluster de administrador que gere o cluster de utilizadores. Na flag--admin-cluster-membership
, pode usar o nome do cluster totalmente especificado, que tem o seguinte formato:projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAME
Em alternativa, pode definir
--admin-cluster-membership
para o nome do cluster de administração, como no comando de exemplo. Quando usa apenas o nome do cluster de administrador, defina o ID do projeto do cluster de administrador com--admin-cluster-membership-project
e a localização com--admin-cluster-membership-location
. A localização do cluster de administrador églobal
ou uma região Google Cloud . Se precisar de encontrar a região, executegcloud container fleet memberships list
. -
REGION
: A Google Cloud região na qual a API GKE On-Prem (gkeonprem.googleapis.com
), o serviço Fleet (gkehub.googleapis.com
) e o serviço Connect (gkeconnect.googleapis.com
) são executados. Especifiqueus-west1
ou outra região suportada. Não é possível alterar a região após a criação do cluster. Esta definição especifica a região onde os seguintes elementos são armazenados:- Os metadados do cluster de utilizadores que a API GKE On-Prem precisa para gerir o ciclo de vida do cluster
- Os dados do Cloud Logging e do Cloud Monitoring dos componentes do sistema
- O registo de auditoria do administrador criado pelos registos de auditoria da nuvem
O nome do cluster, o projeto e a localização identificam em conjunto o cluster de forma exclusiva em Google Cloud.
-
VERSION
: a versão do Google Distributed Cloud para o seu cluster de utilizador. -
YOUR_EMAIL_ADDRESS
eANOTHER_EMAIL_ADDRESS
: Se não incluir a flag--admin-users
, como criador do cluster, são-lhe concedidos privilégios de administrador do cluster por predefinição. No entanto, se incluir--admin-users
para designar outro utilizador como administrador, substitui a predefinição e tem de incluir o seu endereço de email e o endereço de email do outro administrador. Por exemplo, para adicionar dois administradores:--admin-users=sara@example.com \ --admin-users=amal@example.com
Quando o cluster é criado, a API GKE On-Prem aplica as políticas de controlo de acesso baseado em funções (RBAC) do Kubernetes ao cluster para lhe conceder a si e a outros utilizadores administradores a função
clusterrole/cluster-admin
do Kubernetes, que fornece acesso total a todos os recursos no cluster em todos os espaços de nomes.
-
SERVICE_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para serviços no seu cluster. Tem de ser, pelo menos, um intervalo /24.Exemplo:
--service-address-cidr-blocks=10.96.0.0/20
-
POD_CIDR_BLOCK
: um intervalo de endereços IP, no formato CIDR, a usar para pods no seu cluster. Tem de ser, pelo menos, um intervalo /18.Exemplo:
--pod-address-cidr-blocks=192.168.0.0/16
CONTROL_PLANE_VIP
: O endereço IP que escolheu para configurar no equilibrador de carga para o servidor da API Kubernetes do cluster de utilizadores.Exemplo:
--control-plane-vip=203.0.113.3
INGRESS_VIP
: o endereço IP que escolheu para configurar no balanceador de carga para o proxy de entrada.Exemplo:
--ingress-vip=203.0.113.4
INGRESS_HTTP_NODE_PORT
: um valornodePort
para o tráfego HTTP para o proxy de entrada (como30243
).INGRESS_HTTPS_NODE_PORT
: um valornodePort
para o tráfego HTTPS para o proxy de entrada (como30879
).
-
--static-ip-config-ip-blocks
: especifique o gateway predefinido, a máscara de sub-rede e uma lista dos endereços IP estáticos para os nós de trabalho no cluster de utilizadores. O valor da flag tem o seguinte formato:--static-ip-config-ip-blocks 'gateway=GATEWAY,netmask=NETMASK,ips=IP_ADDRESS_1;IP_ADDRESS_2 HOST_2;...'
O valor tem segmentos que começam com as palavras-chave
gateway
,netmask
eips
. Separe os segmentos com uma vírgula.Tenha em conta o seguinte:
- Coloque todo o valor entre aspas simples.
- Não são permitidos espaços em branco, exceto entre um endereço IP e um nome de anfitrião.
Na lista de endereços IP:
- Pode especificar um endereço IP individual ou um bloco CIDR de endereços IP.
- Separe cada endereço IP ou bloco CIDR com um ponto e vírgula.
- Para um endereço IP individual, pode especificar opcionalmente um nome de anfitrião após o endereço IP. Separe o endereço IP e o nome do anfitrião com um espaço. Quando não especifica um nome de anfitrião, o Google Distributed Cloud usa o nome da VM do vSphere como o nome de anfitrião.
- Se especificar um bloco CIDR, não especifique um valor para o nome do anfitrião.
Por exemplo:
--static-ip-config-ip-blocks 'gateway=172.16.23.254,netmask=255.255.252.0,ips=172.16.20.10;172.16.20.11 host2;172.16.20.12/30'
-
DNS_SERVER
: Uma lista separada por vírgulas dos endereços IP dos servidores DNS para as VMs. -
DNS_SEARCH_DOMAIN
: Uma lista separada por vírgulas dos domínios de pesquisa DNS que os anfitriões devem usar. Estes domínios são usados como parte de uma lista de pesquisa de domínios.Por exemplo:
--dns-search-domains example.com,examplepetstore.com
-
NTP_SERVER
: Uma lista separada por vírgulas dos endereços IP dos servidores de tempo que as VMs devem usar.
Sinalizadores do plano de controlo
Se quiser usar valores não predefinidos para a configuração do plano de controlo, inclua uma ou mais das seguintes flags:
--cpus=vCPUS
: o número de vCPUs (mínimo de 4) para cada nó do plano de controlo do cluster de utilizadores. Se não for especificado, o valor predefinido é 4 vCPUs.--memory=MEMORY
: o tamanho da memória em mebibytes (MiB) para cada plano de controlo do cluster de utilizadores. O valor mínimo é 8192 e tem de ser um múltiplo de 4. Se não for especificado, o valor predefinido é 8192.--replicas=NODES
: o número de nós do plano de controlo para o cluster de utilizador. Por exemplo, pode selecionar 1 nó do plano de controlo para um ambiente de desenvolvimento e 3 nós do plano de controlo para ambientes de produção de alta disponibilidade (HA).--enable-auto-resize
: se quiser ativar a alteração automática do tamanho dos nós do plano de controlo para o cluster de utilizador, inclua--enable-auto-resize
. O redimensionamento significa que os recursos de vCPU e memória atribuídos a um nó são ajustados automaticamente. Quando ativados, os nós do plano de controlo para o cluster de utilizador são redimensionados de acordo com o número de nós de trabalho no cluster de utilizador. Assim, à medida que adiciona mais nós de trabalho ao cluster de utilizadores, o tamanho dos nós do plano de controlo aumenta.--enable-control-plane-v2
: Para ativar o Controlplane V2, que recomendamos, inclua esta flag. Quando o Controlplane V2 está ativado, o plano de controlo para um cluster de utilizadores é executado num ou mais nós no próprio cluster de utilizadores. Na versão 1.30 e superior, o Controlplane V2 é obrigatório.Quando ativa o Controlplane V2, também tem de especificar as seguintes flags:
--dns-servers=DNS_SERVER_1,...
: Uma lista separada por vírgulas dos endereços IP dos servidores DNS para as VMs.--ntp-servers=NTP_SERVER_1,...
: Uma lista separada por vírgulas dos endereços IP dos servidores de tempo que as VMs devem usar.--control-plane-ip-block
, que tem o seguinte formato:--control-plane-ip-block 'gateway=CP_GATEWAY,netmask=CP_NETMASK,ips=CP_IP_ADDRESS_1;CP_IP_ADDRESS_2 CP_HOST_2'
O valor tem segmentos que começam com as palavras-chave
gateway
,netmask
eips
. Separe os segmentos com uma vírgula.Tenha em conta o seguinte:
- Coloque todo o valor entre aspas simples.
Não são permitidos espaços em branco, exceto entre um endereço IP e um nome de anfitrião.
Na lista de endereços IP:
Pode especificar um endereço IP individual ou um bloco de endereços IP CIDR.
Separe cada endereço IP ou bloco CIDR com um ponto e vírgula.
Para um endereço IP individual, pode especificar opcionalmente um nome de anfitrião após o endereço IP. Separe o endereço IP e o nome do anfitrião com um espaço.
Se especificar um bloco CIDR, não especifique um valor para o nome do anfitrião.
Por exemplo:
--control-plane-ip-block 'gateway=192.168.0.1,netmask=255.0.0.0,ips=192.168.1.1;192.168.1.2 hostname-2;192.168.2.2/28`
Opcional:
--dns-search-domains=DNS_SEARCH_DOMAIN_1,...
: Uma lista separada por vírgulas dos domínios de pesquisa DNS que os anfitriões devem usar. Estes domínios são usados como parte de uma lista de pesquisa de domínios.Por exemplo:
--dns-search-domains example.com,examplepetstore.com
Para ver uma lista completa das flags e das respetivas descrições, consulte a referência da CLI gcloud.
Sinalizações do vSphere
Especifique as seguintes flags opcionais, se necessário:
--disable-aag-config
: se não incluir esta flag, as regras de antiafinidade do VMware Distributed Resource Scheduler (DRS) são criadas automaticamente para os nós do cluster de utilizadores, o que faz com que sejam distribuídos por, pelo menos, 3 anfitriões físicos no seu centro de dados. Certifique-se de que o seu ambiente do vSphere cumpre os requisitos. Se o seu cluster não cumprir os requisitos, inclua esta flag.--disable-vsphere-csi
: se não incluir esta flag, os componentes da interface de armazenamento de contentores (CSI) do vSphere são implementados no cluster de utilizadores. O controlador CSI é executado num cluster Kubernetes nativo implementado no vSphere para aprovisionar volumes persistentes no armazenamento do vSphere. Para mais informações, consulte o artigo Usar o controlador da interface de armazenamento de contentores do vSphere. Se não quiser implementar os componentes da CSI, inclua esta flag.Para ver uma lista completa das flags e respetivas descrições, consulte a referência da CLI gcloud
Monitorize o progresso da criação de clusters
A saída do comando de criação do cluster é semelhante à seguinte:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
No exemplo de saída, a string
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
é oOPERATION_ID
da operação de longa duração. Pode saber o estado da operação com o seguinte comando:gcloud container vmware operations describe OPERATION_ID \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION
Para mais informações, consulte o artigo gcloud container vmware operations.
A criação do cluster de utilizadores demora 15 minutos ou mais. Pode ver o cluster na Google Cloud consola na página Clusters do GKE.
Crie um node pool
Depois de criar o cluster, tem de criar, pelo menos, um conjunto de nós antes de implementar cargas de trabalho.
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES \ --enable-load-balancer
Substitua o seguinte:
NODE_POOL_NAME
: um nome à sua escolha para o node pool. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
USER_CLUSTER_NAME
: o nome do cluster de utilizadores recém-criado.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster está registado.REGION
: a Google Cloud região que especificou quando criou o cluster.IMAGE_TYPE
: o tipo de imagem do SO a executar nas VMs no node pool. Defina uma das seguintes opções:ubuntu_containerd
oucos
.BOOT_DISK_SIZE
: O tamanho do disco de arranque em gibibytes (GiB) para cada nó no conjunto. O mínimo é de 40 GiB.vCPUs
: o número de vCPUs para cada nó no node pool. O mínimo é 4.MEMORY
: o tamanho da memória em mebibytes (MiB) para cada nó no conjunto. O mínimo é de 8192 MiB por nó de trabalho do cluster de utilizadores e o valor tem de ser um múltiplo de 4.NODES
: o número de nós no node pool. O mínimo é 3.Se estiver a usar o MetalLB como o equilibrador de carga, inclua opcionalmente
--enable-load-balancer
se quiser permitir que o altifalante do MetalLB seja executado nos nós no conjunto. O MetalLB tem de estar ativado em, pelo menos, um conjunto de nós. Se não incluir esta flag, tem de criar outro conjunto de nós para usar com o MetalLB.Para obter informações sobre flags opcionais, consulte o artigo Adicione um conjunto de nós e a referência da CLI gcloud.
Exemplos de comandos gcloud
MetalLB e DHCP
gcloud container vmware clusters create user-cluster-1 \ --project=example-project-12345 \ --location=us-west1 \ --admin-cluster-membership=projects/example-project-12345/locations/us-west1/memberships/admin-cluster-1 \ --version=1.32.300-gke.85 \ --admin-users=sara@example.com \ --admin-users=amal@example.com \ --enable-dhcp \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=lb-pool-1,manual-assign=False,avoid-buggy-ips=True,addresses=192.0.2.0/26;pool=lb-ingress-vip-pool,manual-assign=True,addresses=198.51.100.1/32' \ --enable-control-plane-v2 \ --control-plane-vip=203.0.113.1 \ --ingress-vip=198.51.100.1
MetalLB e IPs estáticos
gcloud container vmware clusters create user-cluster-3 \ --project=example-project-12345 \ --location=europe-west1 \ --admin-cluster-membership=projects/example-project-12345/locations/global/memberships/admin-cluster-1 \ --version=1.32.300-gke.85 \ --admin-users=sara@example.com \ --admin-users=amal@example.com \ --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.10 user-vm-1;192.0.2.11 user-vm-2' \ --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.12 user-vm-3;192.0.2.13 extra-vm' \ --dns-servers=203.0.113.1,203.0.113.2 \ --dns-search-domains=example.com,altostrat.com \ --ntp-servers=203.0.113.3,203.0.113.4 \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --enable-control-plane-v2 \ --control-plane-ip-block 'gateway=192.0.2.254,netmask=255.255.255.0,ips=198.51.100.1 cp-vm-1;198.51.100.2 cp-vm-2;198.51.100.3 cp-vm-3' \ --replicas=3 \ --metal-lb-config-address-pools='pool=lb-pool-1,manual-assign=False,avoid-buggy-ips=True,addresses=192.0.2.0/26;lb-ingress-vip-pool,manual-assign=True,addresses=198.51.100.1/32' \ --control-plane-vip=172.16.20.61 \ --ingress-vip=172.16.20.62
Equilíbrio de carga manual e IPs estáticos
gcloud container vmware clusters create user-cluster-4 \ --project=example-project-12345 \ --location=asia-east1 \ --admin-cluster-membership=projects/example-project-12345/locations/asia-east1/memberships/admin-cluster-1 \ --version=1.32.300-gke.85 \ --admin-users=sara@example.com \ --admin-users=amal@example.com \ --static-ip-config-ip-blocks='gateway=192.0.2.254,netmask=255.255.255.0,ips=192.0.2.10 user-vm-1;192.0.2.11 user-vm-2';ips=192.0.2.12 user-vm-3;192.0.2.13 extra-vm'\ --dns-servers=203.0.113.1,203.0.113.2 \ --ntp-servers=203.0.113.3,203.0.113.4 \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --enable-control-plane-v2 \ --control-plane-ip-block 'gateway=192.0.2.254,netmask=255.255.255.0,ips=198.51.100.1 cp-vm-1;198.51.100.2 cp-vm-2;198.51.100.3 cp-vm-3' \ --replicas=3 \ --control-plane-vip=192.0.2.60 \ --ingress-vip=192.0.2.50 \ --ingress-http-node-port=30243 \ --ingress-https-node-port=30879
Terraform
Antes de começar
Obtenha o nome e a localização da associação à frota do cluster de administrador:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
Substitua
FLEET_HOST_PROJECT_ID
pelo ID do projeto no qual o cluster de administrador está registado.O resultado é semelhante ao seguinte:
NAME EXTERNAL_ID LOCATION admin-cluster-1 bb7803b4-8438-4b22-859f-4559b4b29072 global admin-cluster-2 ee16ee2b-6ec0-49fc-9413-3c89cbc70854 global admin-cluster-3 fc2b7ef5-39ff-4b63-b919-04c5adc67be4 us-west1
A localização especifica onde os serviços Fleet e Connect são executados. Os clusters de administrador criados antes da versão 1.28 são geridos pelos serviços globais da frota e do Connect. Na versão 1.28 e posterior, pode especificar
global
ou uma Google Cloud região quando cria o cluster.Obtenha uma lista das versões disponíveis:
gcloud container vmware clusters query-version-config \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION
Substitua o seguinte:
ADMIN_CLUSTER_NAME
: o nome do cluster de administrador.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster de administrador está registado.ADMIN_CLUSTER_REGION
: a região de associação da frota do cluster de administrador. Esta opção é global ou de uma Google Cloud região. Use a localização do cluster de administrador a partir do resultado degcloud container fleet memberships list
.REGION
: A Google Cloud região que vai usar quando criar o cluster. Esta é a região na qual a API GKE On-Prem e os serviços Fleet e Connect são executados. Especifiqueus-west1
ou outra região suportada.
O resultado do comando é semelhante ao seguinte:
versions: - isInstalled: true version: 1.14.3-gke.25 - version: 1.14.4-gke.54 - version: 1.15.0-gke.581
O comando também produz uma explicação das versões que pode usar para a criação ou a atualização do cluster de utilizadores. As versões permitidas são anotadas com
isInstalled: true
, o que significa que o cluster de administrador tem os componentes específicos da versão de que precisa para gerir clusters de utilizadores dessa versão. Se quiser usar uma versão instalada no cluster de administrador, avance para a secção Exemplo para criar o cluster de utilizador.
Instale uma versão diferente
Um cluster de administrador pode gerir clusters de utilizadores em diferentes versões. O resultado do comando query-version-config
apresenta outras versões que pode usar quando cria o cluster. Se quiser criar um cluster de utilizadores que seja uma versão diferente do cluster de administrador, tem de transferir e implementar os componentes de que o cluster de administrador precisa para gerir clusters de utilizadores dessa versão, da seguinte forma:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --required-platform-version=VERSION
Substitua VERSION
por uma das versões indicadas no resultado do comando query-version-config
.
O comando transfere a versão dos componentes que especificar em
--required-platform-version
para o cluster de administrador e, em seguida, implementa os
componentes. Já pode criar um cluster de utilizadores com a versão especificada.
Se executar novamente o comando gcloud container vmware clusters query-version-config
,
a versão especificada é anotada com isInstalled: true
.
Exemplo
Pode usar o seguinte exemplo de configuração básica para criar um cluster de utilizadores com o balanceador de carga MetalLB incluído e um conjunto de nós.
Para mais informações e outros exemplos, consulte a
google_gkeonprem_vmware_cluster
documentação de referência.
Defina variáveis em terraform.tfvars
O exemplo fornece um ficheiro de variáveis de exemplo para transmitir a main.tf
, que mostra como configurar o balanceador de carga MetalLB incluído e permitir que os nós do cluster obtenham os respetivos endereços IP a partir de um servidor DHCP fornecido por si.
Clone o repositório
anthos-samples
e mude para o diretório onde se encontra o exemplo do Terraform:git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-onprem-terraform/avmw_user_cluster_metallb
Crie uma cópia do ficheiro
terraform.tfvars.sample
:cp terraform.tfvars.sample terraform.tfvars
Modifique os valores dos parâmetros em
terraform.tfvars
.A lista seguinte descreve as variáveis:
project_id
: o ID do projeto no qual quer criar o cluster. O projeto especificado também é usado como o projeto anfitrião da frota. Este tem de ser o mesmo projeto no qual o cluster de administrador está registado. Depois de o cluster de utilizadores ser criado, é registado automaticamente na frota do projeto selecionado. Não é possível alterar o projeto anfitrião da frota após a criação do cluster.region
: a região na qual a API GKE On-Prem (gkeonprem.googleapis.com
), o serviço Fleet (gkehub.googleapis.com
) e o serviço Connect (gkeconnect.googleapis.com
) são executados. Google Cloud Especifiqueus-west1
ou outra região suportada.admin_cluster_name
: o nome do cluster de administrador que gere o cluster de utilizadores. O exemplo pressupõe que o cluster de administrador usa global como a região. Se tiver um cluster de administração regional:- Abra
main.tf
num editor de texto. - Pesquise
admin_cluster_membership
, que tem o seguinte aspeto:
admin_cluster_membership = "projects/${var.project_id}/locations/global/memberships/${var.admin_cluster_name}"
- Altere
global
para a região que o cluster de administrador usa e guarde o ficheiro.
- Abra
on_prem_version
: a versão do Google Distributed Cloud para o cluster de utilizadores.admin_user_emails
: uma lista de endereços de email dos utilizadores aos quais vão ser concedidos privilégios administrativos no cluster. Certifique-se de que adiciona o seu endereço de email se pretender administrar o cluster.Quando o cluster é criado, a API GKE On-Prem aplica as políticas de controlo de acesso baseado em funções (RBAC) do Kubernetes ao cluster para conceder aos utilizadores administradores a função do Kubernetes, que fornece acesso total a todos os recursos no cluster em todos os espaços de nomes.
clusterrole/cluster-admin
Isto também permite que os utilizadores iniciem sessão na consola através da respetiva identidade Google.cluster_name
: um nome à sua escolha para o cluster de utilizadores. Não é possível alterar o nome após a criação do cluster. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
control_plane_node_cpus
: o número de vCPUs para cada nó do plano de controlo do cluster de utilizadores. O mínimo é de 4 vCPUs.control_plane_node_memory
: O tamanho da memória em mebibytes (MiB) para cada plano de controlo do cluster de utilizadores. O valor mínimo é 8192 e tem de ser um múltiplo de 4.control_plane_node_replicas
: o número de nós do plano de controlo para o cluster de utilizador. Por exemplo, pode introduzir 1 nó do plano de controlo para um ambiente de desenvolvimento e 3 nós do plano de controlo para ambientes de produção de alta disponibilidade (HA).control_plane_vip
: O endereço IP virtual (VIP) que escolheu para configurar no balanceador de carga para o servidor da API Kubernetes do cluster de utilizador.ingress_vip
: o endereço IP que escolheu para configurar no balanceador de carga para o proxy de entrada.lb_address_pools
: uma lista de mapas que definem os conjuntos de endereços a serem usados pelo equilibrador de carga do MetalLB. O VIP de entrada tem de estar num destes conjuntos. Especifique o seguinte:name
: um nome para o conjunto.addresses
: um intervalo de endereços na notação CIDR ou no formato de intervalo com hífen. Para especificar um único endereço IP num conjunto (como para o VIP de entrada), use /32 na notação CIDR, por exemplo:192.0.2.1/32
.
Substitua os exemplos de endereços IP pelos seus valores e adicione conjuntos de endereços adicionais, se necessário.
Guarde as alterações em
terraform.tfvars
. Se não quiser fazer alterações opcionais amain.tf
, avance para a secção seguinte, Crie o cluster e um conjunto de nós.
Configure o Controlplane V2
Na versão 1.30 e superior, tem de ativar o Controlplane V2. O ficheiro main.tf
no exemplo não ativa o Controlplane V2. Tem de alterar
main.tf
para ativar o Controlplane V2 e adicionar os endereços IP do gateway, da máscara de rede e dos nós do plano de controlo. Antes de fazer alterações, faça uma cópia de segurança de main.tf
:
cp main.tf main.tf.bak
Para configurar o Controlplane V2, faça as seguintes alterações a main.tf
:
Adicione a seguinte linha ao bloco
resource
:enable_control_plane_v2 = "true"
Adicione um mapa
control_plane_v2_config
ao bloconetwork_config
, por exemplo:control_plane_v2_config { control_plane_ip_block { netmask = "255.255.252.0" gateway = "10.250.71.254" ips { ip = "10.250.68.54" hostname = "cpv2-vm1" } ips { ip = "10.250.68.128" hostname = "cpv2-vm2" } ips { ip = "10.250.71.50" hostname = "cpv2-vm3" } } }
Substitua os valores de
netmask
egateway
por endereços IP da sua rede. Substituaip
ehostname
pelos endereços IP dos nós do plano de controlo.
Opcional: ative o cluster avançado
Por predefinição, na versão 1.32 e superior, os clusters de utilizadores criados com o Terraform não têm o cluster avançado ativado. Se quiser ativar o cluster avançado, adicione o seguinte campo de nível superior a main.tf
:
enable_advanced_cluster = true
Certifique-se de que revê as diferenças quando executa clusters avançados antes de ativar o cluster avançado.
Opcional: modo de endereçamento IP do nó de trabalho
Esta secção explica algumas alterações de configuração opcionais que pode
fazer no main.tf
. Antes de fazer alterações, faça uma cópia de segurança do seguinte: main.tf
cp main.tf main.tf.bak
Por predefinição, o main.tf
configura o cluster para usar um servidor DHCP que fornece para atribuir endereços IP aos nós de trabalho do cluster. O DHCP é configurado incluindo o mapa dhcp_config
no bloco network_config
. Se quiser fornecer endereços IP estáticos para os nós de trabalho, faça as seguintes alterações a main.tf
:
Substitua o bloco
network_config
e inclua um blocostatic_ip_config
. Por exemplo:network_config { service_address_cidr_blocks = ["10.96.0.0/12"] pod_address_cidr_blocks = ["192.168.0.0/16"] host_config { dns_servers = ["10.254.41.1"] ntp_servers = ["216.239.35.8"] } static_ip_config { ip_blocks { netmask = "255.255.252.0" gateway = "10.251.31.254" ips { ip = "10.251.30.153" hostname = "vm-1" } ips { ip = "10.251.31.206" hostname = "vm-2" } ips { ip = "10.251.31.193" hostname = "vm-3" } ips { ip = "10.251.30.230" hostname = "vm-4" } } } }
Substitua o seguinte pelos seus valores:
service_address_cidr_blocks
: um intervalo de endereços IP, no formato CIDR, a usar para serviços no seu cluster. Tem de ser, pelo menos, um intervalo /24.pod_address_cidr_blocks
: um intervalo de endereços IP, no formato CIDR, a usar para pods no seu cluster. Tem de ser, pelo menos, um intervalo /18.dns_servers
: Uma lista dos endereços IP dos servidores DNS para as VMs.ntp_servers
: Uma lista dos endereços IP dos servidores de tempo que as VMs vão usar.No bloco
static_ip_config
, substitua os valores denetmask
egateway
pelos endereços da sua rede. Substituaip
ehostname
pelos endereços IP e pelos nomes de anfitrião dos nós de trabalho.
Crie o cluster e um node pool
Inicialize e crie o plano do Terraform:
terraform init
O Terraform instala todas as bibliotecas necessárias, como o Google Cloud fornecedor.
Reveja a configuração e faça alterações, se necessário:
terraform plan
Aplique o plano do Terraform para criar o cluster de utilizadores:
terraform apply
A criação do cluster de utilizadores demora cerca de 15 minutos ou mais e a criação do node pool demora mais 15 minutos. Pode ver o cluster na Google Cloud consola na página Clusters do GKE.
Opcional: execute ferramentas de linha de comandos antes da criação de recursos
Se necessário, pode executar ferramentas de linha de comandos, como a CLI gcloud e o
gkectl
, para realizar tarefas de configuração antes da criação de recursos. Define as linhas de comando a executar no ficheiro de configuração do Terraform através do aprovisionador local-exec
, que lhe permite reutilizar as variáveis do Terraform definidas.
O exemplo seguinte mostra como modificar main.tf
para executar o comando gkectl prepare
antes da criação do cluster:
resource "null_resource" "gkectl_prepare" {
provisioner "local-exec" {
command = "gkectl prepare --kubeconfig=${var.kubeconfig} --cluster-name=${var.cluster_name} --vcenter-username=${var.vcenter_username} --vcenter-password=${var.vcenter_password} --vcenter-address=${var.vcenter_address} --datacenter=${var.datacenter} --datastore=${var.datastore} --network=${var.network} --os-image=${var.os_image} --service-account-key-file=${var.service_account_key_file} --location=${var.location}"
working_dir = path.module # Important: Set working directory
environment = {
# Optional: set environment variables if needed.
# Example: GOOGLE_APPLICATION_CREDENTIALS = "/path/to/your/credentials.json"
}
}
}
resource "google_gkeonprem_vmware_cluster" "cluster" {
# ... your cluster configuration ...
# Ensure this depends on the null_resource
depends_on = [null_resource.gkectl_prepare]
# ... rest of your cluster configuration ...
location = var.location
name = var.cluster_name
# ... other required fields ...
}
Resolução de problemas
Consulte o artigo Resolução de problemas de criação e atualização de clusters.