Neste documento, mostramos como criar um cluster de usuário que usa o kubeception.
O que é kubeception?
O termo kubeception é usado para transmitir a ideia de que um cluster do Kubernetes é usado para criar e gerenciar outros clusters do Kubernetes. No contexto do GKE no VMware, o kubeception se refere ao caso em que o plano de controle de um cluster de usuário é executado em um ou mais nós em um cluster de administrador.
Não recomendamos o uso do kubeception. Em vez disso, recomendamos usar o Controlplane V2. Com o Controlplane V2, os nós do plano de controle do cluster de usuário estão no próprio cluster de usuário.
Planejar seus endereços IP
Siga as instruções em Planejar seus endereços IP (kubeception).
Preencher um arquivo de configuração do cluster
Siga as instruções em Criar um cluster de usuário (controle V2).
Durante o preenchimento do arquivo de configuração do cluster de usuário:
Defina
enableControlplaneV2
comofalse
.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.Segue o balanceamento de carga em pacote. Defina
loadBalancer.kind
como"Seesaw"
e preencha a seçãoloadBalancer.seesaw
. Para mais informações, consulte Balanceamento de carga em pacote com o Seesaw.Balanceamento de carga integrado com a F5 BIG-IP. Defina
loadBalancer.kind
como"F5BigIP"
e preencha a seçãof5BigIP
. Para mais informações, consulte Balanceamento de carga com F5 BIG-IP.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.
Decida se você quer ativar o Dataplane V2 para o cluster de usuário e defina enableDataplaneV2 conforme necessário.
Se você incluir as seções
stackdriver
ecloudAuditLogging
no arquivo de configuração, o ID emgkeConnect.projectID
precisará ser o mesmo definido emstackdriver.projectID
ecloudAuditLogging.projectID
. Se os IDs do projeto não forem iguais, a criação do cluster falhará.Se você incluir as seções
gkeOnPremAPI
,cloudAuditLogging
estackdriver
no arquivo de configuração, defina a mesma região do Google Cloud emgkeOnPremAPI.location
,cloudAuditLogging.clusterLocation
estackdriver.location
. Se as regiões não forem iguais, a criação do cluster falhará.
Exemplo de arquivos de configuração preenchidos
Veja um exemplo de um arquivo de bloco de IP preenchido e um de configuração do cluster de usuário. A configuração ativa alguns, mas não todos, os recursos disponíveis.
user-ipblock.yaml
blocks: - netmask: 255.255.252.0 gateway: 172.16.23.254 ips: - ip: 172.16.20.21 hostname: user-host1 - ip: 172.16.20.22 hostname: user-host2 - ip: 172.16.20.23 hostname: user-host3 - ip: 172.16.20.24 hostname: user-host4
user-cluster.yaml
apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: false network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" ipMode: type: static ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "172.16.20.32" ingressVIP: "172.16.21.30" kind: "MetalLB" metalLB: addressPools: - name: "my-address-pool" addresses: - "172.16.21.30 - 172.16.21.39" enableDataplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 1 nodePools: - name: "my-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 osImageType: "ubuntu_containerd" 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
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.
(Opcional) Criar um balanceador de carga Seesaw para o cluster de usuário
Se você escolheu usar o balanceador de carga Seesaw em pacote, siga as etapas nesta seção. Caso contrário, pule esta seção.
Crie e configure a VM para o balanceador de carga do Seesaw:
gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
(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.
Criar o cluster de usuário
Execute o comando a seguir para criar o 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:
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.
Verificar se o cluster de usuário está em execução
Execute o seguinte comando para verificar 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:
my-user-cluster-node-pool-69-d46d77885-7b7tx Ready ... my-user-cluster-node-pool-69-d46d77885-lsvzk Ready ... my-user-cluster-node-pool-69-d46d77885-sswjk Ready ...
Solução de problemas
Consulte Solução de problemas na criação e no upgrade de clusters.