Criar um cluster de usuário (kubeception)

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 como false.

  • Decida qual tipo de balanceamento de carga você quer usar. As opções são:

    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 e cloudAuditLogging no arquivo de configuração, o ID em gkeConnect.projectID precisará ser o mesmo definido em stackdriver.projectID e cloudAuditLogging.projectID. Se os IDs do projeto não forem iguais, a criação do cluster falhará.

  • Se você incluir as seções gkeOnPremAPI, cloudAuditLogging e stackdriver no arquivo de configuração, defina a mesma região do Google Cloud em gkeOnPremAPI.location, cloudAuditLogging.clusterLocation e stackdriver.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.

A seguir