Este documento mostra como criar um cluster de usuário com o Controlplane V2 ativado.
Com o Controlplane V2, o plano de controle de um cluster de usuário é executado em um ou mais nós no próprio cluster de usuário. O plano de controle V2 é a configuração padrão e recomendada para a criação de clusters.
Visão geral do procedimento
Estas são as principais etapas envolvidas na criação de um cluster de usuários:
- Conectar-se à estação de trabalho do administrador
- A estação de trabalho de administrador é uma VM que tem as ferramentas necessárias para criar um cluster de usuário.
- Preencher os arquivos de configuração
- Para especificar os detalhes do novo cluster, preencha um arquivo de configuração de cluster de usuário, um arquivo de configuração de credenciais e possivelmente um arquivo de bloco de IP.
- (Opcional) Importe imagens do SO para o vSphere e envie imagens de contêiner para o
- registro particular, se aplicável.
- Execute
gkectl prepare
.
- Criar um cluster de usuário
- Execute
gkectl create cluster
para criar um cluster conforme especificado no arquivo de configuração.
- Verificar se o cluster de usuário está em execução
- Use o
kubectl
para ver os nós do cluster.
No final deste procedimento, você terá um cluster de usuários em execução para implantar as cargas de trabalho.
Antes de começar
Verifique se você criou uma estação de trabalho de administrador e um cluster de administrador.
Consulte o documento de planejamento de endereços IP. Verifique se você tem endereços IP suficientes disponíveis e reveja sua decisão sobre como quer que os nós do cluster recebam os endereços IP: DHCP ou estático. Se você decidir usar endereços IP estáticos, preencha um arquivo de blocos de IP que contenha os endereços escolhidos.
Consulte a visão geral do balanceamento de carga e reveja sua decisão sobre o tipo de balanceador de carga que você quer usar. É possível usar o balanceador de carga MetalLB empacotado ou configurar manualmente um balanceador de carga de sua escolha. Para balanceamento de carga manual, configure o balanceador de carga antes de criar o cluster de usuário.
Consulte a seção vCenter. Considere se você quer usar clusters do vSphere separados para os clusters de administrador e de usuário e se quer usar data centers separados. Pense também se você quer usar instâncias separadas do vCenter Server.
Consulte a seção nodePools. Pense em quantos pools de nós você precisa e em qual sistema operacional você quer executar em cada um deles.
1. Conectar-se à estação de trabalho do administrador
Consiga uma conexão SSH para a estação de trabalho do administrador
Lembre-se de que gkeadm
ativou
a conta de serviço de acesso a componentes na estação de trabalho de administrador.
Siga as etapas restantes neste tópico na estação de trabalho de administrador no diretório inicial.
2. Preencher o arquivo de configuração
Quando gkeadm
criou a estação de trabalho do administrador, foi gerado um arquivo de configuração
chamado user-cluster.yaml
. Esse arquivo de configuração serve para criar o cluster de
usuário.
Para se familiarizar com o arquivo de configuração, leia o documento arquivo de configuração do cluster de usuário. É recomendável manter esse documento aberto em uma guia ou janela separada para fazer referência a ele ao concluir as etapas a seguir.
name
Defina o campo
name
como um nome de sua escolha para o cluster de usuário.
gkeOnPremVersion
Este campo já foi preenchido para você. Ela especifica a versão do
GKE no VMware. Por exemplo, 1.15.0-gke.581
.
enableControlplaneV2
Defina
enableControlplaneV2
como true
.
enableDataplaneV2
Defina enableDataplaneV2 como true
.
vCenter
Os valores definidos na seção vCenter
do
arquivo de configuração do cluster de administrador
são globais. Ou seja, elas se aplicam ao cluster de administrador e aos clusters de usuário
associados.
Para cada cluster de usuário criado, você tem a opção de modificar alguns dos
valores globais de vCenter
.
Para substituir qualquer um dos valores vCenter
globais, preencha os campos
relevantes na seção
vCenter
do seu arquivo de configuração do cluster de usuário.
Talvez você queira usar clusters do vSphere separados para o cluster de administrador e os clusters de usuário. Em vez disso, use data centers separados para o cluster de administrador e os clusters de usuário.
Como usar um data center e um cluster do vSphere
A opção padrão é usar um data center e um cluster do vSphere para
o cluster de administrador e o cluster de usuário. Para essa opção, não defina valores
vCenter
no arquivo de configuração do cluster de usuário. Os valores vCenter
serão herdados do cluster de administrador.
Como usar clusters do vSphere separados
Se você quiser criar um cluster de usuário que esteja no próprio cluster do vSphere, especifique um valor para vCenter.cluster
no arquivo de configuração do cluster de usuário.
Se o cluster de administrador e o cluster de usuário estiverem em clusters separados do vSphere, eles podem estar no mesmo data center ou em data centers diferentes.
Como usar data centers separados do vSphere
Os clusters de usuário e de administrador podem estar em diferentes data centers. Nesse caso, eles também estão em clusters separados do vSphere.
Se você especificar vCenter.datacenter
no arquivo de configuração do cluster de usuário, também será necessário especificar:
vCenter.networkName
vCenter.datastore
ouvCenter.storagePolicyName
vCenter.cluster
ouvCenter.resourcePool
Como usar contas do vCenter separadas
Um cluster de usuário pode usar uma conta do vCenter diferente, com vCenter.credentials
diferentes, do cluster de administrador. A conta do vCenter do
cluster de administrador precisa acessar o data center do cluster de administrador, enquanto a conta do
vCenter do cluster de usuário só precisa de acesso ao data center do cluster de usuário.
Como usar instâncias separadas do vCenter Server
Em determinadas situações, faz sentido criar um cluster de usuário que use a própria instância do vCenter Server. Ou seja, o cluster de administrador e um cluster de usuário associado usam instâncias diferentes do vCenter Server.
Por exemplo, em um local de borda, convém ter uma máquina física executando o vCenter Server e uma ou mais máquinas físicas executando o ESXi. Em seguida, use a instância local do vCenter Server para criar uma hierarquia de objetos do vSphere, incluindo data centers, clusters, pools de recursos, repositórios de dados e pastas.
Preencha a seção vCenter
do arquivo de configuração do cluster de usuário Especificamente, especifique um valor
para vCenter.address
diferente do endereço do vCenter Server
especificado no arquivo de configuração do cluster de administrador. 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 você quer que os nós de trabalho recebam os endereços IP deles. As opções são:
De um servidor DHCP configurado com antecedência. Defina
network.ipMode.type
como"dhcp"
.A partir de uma lista de endereços IP estáticos fornecidos. Defina
network.ipMode.type
como"static"
e crie um arquivo de bloco de IPs que forneça os endereços IP estáticos. Para ver um exemplo de arquivo de bloco de IP, consulte Exemplo de arquivos de configuração preenchidos.
Se você 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 controle do cluster de usuário precisam receber os endereços IP de
uma lista de endereços estáticos fornecidos por você, mesmo se os
nós de trabalho receberem os endereços de um servidor DHCP. Para especificar endereços IP estáticos para
os nós do plano de controle, preencha a
seção
network.controlPlaneIPBlock
. Se você quiser um cluster de usuário de alta disponibilidade (HA, na sigla em inglês), especifique três endereços
IP. Caso contrário,
especifique um endereço IP.
Para especificar os servidores DNS e NTP, preencha a seção hostConfig
. Esses servidores DNS e NTP são para os nós do plano de controle. Se você estiver usando endereços IP estáticos para os nós de trabalho, esses servidores DNS e NTP também serão para os nós de trabalho.
O network.podCIDR e o network.serviceCIDR têm valores pré-preenchidos que não podem ser alterados, a menos que entrem em conflito com endereços que já estão em uso na sua rede. O Kubernetes usa esses intervalos para atribuir endereços IP a pods e serviços no cluster.
Independentemente de você depender de um servidor DHCP ou especificar uma lista de endereços IP estáticos, é necessário ter endereços IP suficientes disponíveis para o cluster de usuário. Para uma explicação de quantos endereços IP você precisa, consulte Planejar seus endereços IP.
loadBalancer
Reserve um VIP para o servidor da API Kubernetes do seu cluster de usuários. Reserve
outro VIP para o serviço de entrada do seu cluster de usuários. Forneça seus VIPs como
valores para
loadBalancer.vips.controlPlaneVIP
e
loadBalancer.vips.ingressVIP
.
Decida qual tipo de balanceamento de carga você quer usar. As opções são:
Balanceamento de carga em pacote MetalLB. Defina
loadBalancer.kind
como"MetalLB"
. Preencha também a seçãoloadBalancer.metalLB.addressPools
e definaenableLoadBalancer
comotrue
para pelo menos um dos pools de nós. Para mais informações, consulte Balanceamento de carga em pacote com o MetalLB.Balanceamento de carga manual. Defina
loadBalancer.kind
como"ManualLB"
e preencha a seçãomanualLB
. Para mais informações, consulte Balanceamento de carga manual.
Para mais informações, consulte Visão geral do balanceamento de carga.
advancedNetworking
Se você planeja criar um
gateway NAT de saída, defina
advancedNetworking
como true
.
multipleNetworkInterfaces
Decida se quer configurar várias interfaces de rede para pods e defina multipleNetworkInterfaces conforme necessário.
storage
Se você quiser desativar a implantação de componentes do CSI do vSphere, defina
storage.vSphereCSIDisabled
como true
.
masterNode
Na seção
masterNode
, especifique quantos nós do plano de controle você quer para o cluster
de usuário: um ou três. Também é possível especificar um repositório de dados para os nós do plano de controle e
se você quer ativar o redimensionamento automático dos nós do plano de controle.
Lembre-se de que você especificou endereços IP para os nós do plano de controle na seção network.controlPlaneIPBlock
.
nodePools
Um pool de nós é um grupo de nós em um cluster, que têm a mesma configuração. Por exemplo, os nós em um pool podem executar o Windows e os nós em outro pool podem executar o Linux.
Preencha a seção
nodePools
para especificar pelo menos um pool de nós.
Para mais informações, consulte Pools de nós e Como criar e gerenciar pools de nós.
antiAffinityGroups
Defina antiAffinityGroups.enabled
como true
ou false
.
Esse campo especifica se o GKE no VMware cria regras antiafinidade do Distributed Resource Scheduler (DRS) para os nós de trabalho, fazendo com que eles sejam distribuídos por pelo menos três hosts físicos no seu data center.
stackdriver
Se você quiser ativar o
Cloud Logging e o Cloud Monitoring
para o cluster, preencha a
seção
stackdriver
.
Esta seção é obrigatória por padrão. Ou seja, se você não preencher essa seção,
inclua a sinalização --skip-validation-stackdriver
ao executar
gkectl create cluster
.
Observe os seguintes requisitos para novos clusters:
O ID em
stackdriver.projectID
precisa ser o mesmo que o ID emgkeConnect.projectID
ecloudAuditLogging.projectID
.A região do Google Cloud definida em
stackdriver.clusterLocation
precisa ser igual à região definida emcloudAuditLogging.clusterLocation
. Além disso, segkeOnPremAPI.enabled
fortrue
, a mesma região precisará ser definida emgkeOnPremAPI.location
.
Se os IDs do projeto e as regiões não forem iguais, a criação do cluster vai falhar.
gkeConnect
Seu cluster de usuário precisa ser registrado em uma frota do Google Cloud.
Preencha a seção
gkeConnect
para especificar um
projeto host de frota
e uma conta de serviço associada.
Se você incluir as seções stackdriver
e cloudAuditLogging
no
arquivo de configuração, o ID em gkeConnect.projectID
precisará ser o mesmo
definido em stackdriver.projectID
e cloudAuditLogging.projectID
. de dois minutos. Se os IDs do projeto não forem iguais, a criação do cluster falhará.
gkeOnPremAPI
Na versão 1.16 e mais recentes, se a API GKE On-Prem estiver ativada no
projeto do Google Cloud, todos os clusters no projeto serão
registrados na API GKE On-Prem
automaticamente na região configurada em stackdriver.clusterLocation
.
Se você quiser registrar todos os clusters no projeto na API GKE On-Prem, siga as etapas em Antes de começar para ativar e usar a API GKE On-Prem no projeto.
Se você não quiser registrar o cluster na API GKE On-Prem, inclua esta seção e defina
gkeOnPremAPI.enabled
comofalse
. Se você não quiser registrar nenhum cluster no projeto, desativegkeonprem.googleapis.com
(o nome do serviço da API GKE On-Prem) no projeto. Para instruções, consulte Como desativar serviços.
usageMetering
Se você quiser ativar a medição de uso do cluster, preencha a seção usageMetering
.
cloudAuditLogging
Se você quiser integrar os registros de auditoria do servidor da API Kubernetes do
cluster com os
registros de auditoria do Cloud, preencha
a seção
cloudAuditLogging
.
Observe os seguintes requisitos para novos clusters:
O ID em
cloudAuditLogging.projectID
precisa ser o mesmo que o ID emgkeConnect.projectID
estackdriver.projectID
.A região do Google Cloud definida em
cloudAuditLogging.clusterLocation
precisa ser igual à região definida emstackdriver.clusterLocation
. Além disso, segkeOnPremAPI.enabled
fortrue
, a mesma região precisará ser definida emgkeOnPremAPI.location
.
Se os IDs do projeto e as regiões não forem iguais, a criação do cluster vai falhar.
Exemplo de arquivos de configuração preenchidos
Confira um exemplo de um arquivo de bloco de IP e um arquivo de configuração de cluster de usuário:
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.15.0-gke.581 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" 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
Estes são os pontos importantes que você precisa entender no exemplo anterior:
Os endereços IP estáticos dos nós de trabalho são especificados em um arquivo de bloco de IP. O arquivo de bloco de IP tem quatro endereços, mesmo que haja apenas três nós de trabalho. O endereço IP extra é necessário durante o upgrade, a atualização e o reparo automático do cluster.
Os servidores DNS e NTP são especificados na seção
hostConfig
. Neste exemplo, esses servidores DNS e NTP são destinados aos nós do plano de controle e dos nós de trabalho. Isso ocorre porque os nós de trabalho têm endereços IP estáticos. Se os nós de trabalho recebessem os endereços IP de um servidor DHCP, esses servidores DNS e NTP seriam apenas para os nós do plano de controle.Os endereços IP estáticos dos três nós do plano de controle são especificados na seção
network.controlPlaneIPBlock
do arquivo de configuração do cluster de usuário. Não é necessário ter um endereço IP extra neste bloco.O campo
masterNode.replicas
está definido como3
.O VIP do plano de controle e o VIP de entrada estão na mesma VLAN dos nós de trabalho e do plano de controle.
Os VIPs definidos para os serviços do tipo LoadBalancer são especificados na seção
loadBalancer.metalLB.addressPools
do arquivo de configuração do cluster de usuário. Esses VIPs estão na mesma VLAN que os nós de trabalho e os nós do plano de controle. O conjunto de VIPs especificados nesta seção precisa incluir o VIP de entrada e não deve incluir o VIP do plano de controle.O arquivo de configuração do cluster de usuário não inclui uma seção
vCenter
. Portanto, o cluster de usuário usa os mesmos recursos do vSphere que o cluster de administrador.
Validar o arquivo de configuração
Depois de preencher o arquivo de configuração do cluster de usuário, execute
gkectl check-config
para verificar se o arquivo é válido:
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG: o caminho do arquivo kubeconfig para o cluster de administrador.
USER_CLUSTER_CONFIG: o caminho do arquivo de configuração do cluster de usuário.
Se o comando retornar mensagens, corrija os problemas e valide o arquivo novamente.
Se quiser pular as validações mais demoradas, transmita a sinalização --fast
.
Para pular validações individuais, use as sinalizações --skip-validation-xxx
. Para
saber mais sobre o comando check-config
, consulte
Como executar verificações de simulação.
3. (Opcional) Importe imagens do SO para o vSphere e envie imagens de contêiner para um registro particular
Execute gkectl prepare
se alguma das seguintes condições for verdadeira:
O cluster de usuário está em um data center do vSphere diferente do cluster de administrador.
O cluster de usuário tem um servidor vCenter diferente do cluster de administrador.
O cluster de usuário usa um registro de contêiner particular diferente do registro particular usado pelo cluster de administrador.
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador;
BUNDLE: o caminho do arquivo do pacote. Esse arquivo está na estação de trabalho do administrador em
/var/lib/gke/bundles/
. Exemplo:/var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG: o caminho do arquivo de configuração do cluster de usuário.
4. Criar um cluster de usuário
Crie um cluster de usuário:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Localizar o arquivo kubeconfig do cluster de usuário
O comando gkectl create cluster
cria um arquivo kubeconfig chamado
USER_CLUSTER_NAME-kubeconfig
no diretório atual. Você precisará desse arquivo
kubeconfig mais tarde para interagir com seu cluster de usuários.
O arquivo kubeconfig contém o nome do cluster de usuário. Para acessar o nome do cluster, execute o seguinte:
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
A saída mostra o nome do cluster. Exemplo:
NAME my-user-cluster
Se preferir, é possível alterar o nome e o local do arquivo kubeconfig.
5. Verificar se o cluster de usuário está em execução
Verifique se o cluster de usuário está em execução:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
Substitua USER_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário.
A saída mostra os nós do cluster de usuário. 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
Fazer upgrade de um cluster de usuários
Siga as instruções em Como fazer upgrade de clusters do Anthos no VMware.
Excluir um cluster
Para excluir um cluster de usuário que tenha o plano de controle V2 ativado, siga as instruções em Como excluir um cluster de usuário.
Quando você exclui um cluster de usuário com o Controlplane V2 ativado, o disco de dados é excluído automaticamente.
Solução de problemas
Consulte Solução de problemas na criação e no upgrade de clusters.