Como criar clusters de administradores e usuários

Aprenda a criar um cluster de administrador e um cluster de usuário com uma configuração básica.

As etapas deste tópico pressupõem que você usou gkeadm para criar a estação de trabalho do administrador. Se você não usou gkeadm e seguiu o tópico avançado Como criar uma estação de trabalho de administrador com um endereço IP estático, talvez seja necessário fazer ajustes conforme explicado em cada etapa. Para uma estação de trabalho de administrador do DHCP, use o guia de instalação do DHCP correspondente.

Se você tiver um proxy, todos os comandos gkectl usarão automaticamente o mesmo proxy definido no arquivo de configuração para solicitações de Internet a partir da estação de trabalho do administrador. Se a estação de trabalho do administrador não estiver localizada no mesmo proxy, consulte as "Opções de proxy manuais" nos tópicos avançados Como criar uma estação de trabalho do administrador: IP estático | DHCP.

SSH na estação de trabalho de administrador

Para se conectar à estação de trabalho do administrador usando SSH, siga as instruções em Como conseguir uma conexão SSH para a estação de trabalho do administrador.

A conta de serviço da lista de permissões está ativada na estação de trabalho de administrador. Siga todas as etapas restantes deste tópico na sua estação de trabalho de administrador.

Como configurar IPs estáticos no cluster de administrador

Para especificar os endereços IP estáticos que você quer usar no cluster de administrador, crie um arquivo de configuração de host chamado admin-hostconfig.yaml. Para este exercício, é necessário especificar cinco endereços IP a serem usados pelo cluster de administrador.

Veja a seguir um exemplo de arquivo de configuração de host com cinco hosts:

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5

O campo ips é uma matriz de endereços IP e nomes de host. Esses são os endereços IP e nomes de host que o GKE On-Prem atribuirá aos nós do cluster de administrador.

No arquivo de configuração do host, você também especifica os endereços dos servidores DNS, servidores de horário e gateway padrão que os nós do cluster de administrador usarão.

O campo searchdomainsfordns é uma matriz de domínios de pesquisa DNS a serem usados no cluster. Esses domínios são usados como parte de uma lista de pesquisa de domínio.

Como configurar IPs estáticos no cluster de usuário

Para especificar os endereços IP estáticos que você quer usar no cluster de usuário, crie um arquivo de configuração de host chamado user-hostconfig.yaml.

Veja a seguir um exemplo de arquivo de configuração de host com três hosts:

hostconfig:
  dns: 172.16.255.1
  tod: 216.239.35.0
  otherdns:
  - 8.8.8.8
  - 8.8.4.4
  othertod:
  - ntp.ubuntu.com
  searchdomainsfordns:
  - "my.local.com"
blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.15
      hostname: user-host1
    - ip: 172.16.20.16
      hostname: user-host2
    - ip: 172.16.20.17
      hostname: user-host3

O campo ips é uma matriz de endereços IP e nomes de host. Esses são os endereços IP e nomes de host que o GKE On-Prem atribuirá aos nós do cluster de usuário.

No arquivo de configuração do host, você também especifica os endereços dos servidores DNS, servidores de horário e gateway padrão que os nós do cluster de usuário usarão.

O campo searchdomainsfordns é uma matriz de domínios de pesquisa DNS a serem usados no cluster. Esses domínios são usados como parte de uma lista de pesquisa de domínio.

Campos preenchidos no arquivo de configuração do GKE On-Prem

Lembre-se de que, ao criar a estação de trabalho do administrador, você preencheu um arquivo de configuração chamado admin-ws-config.yaml. A ferramenta de linha de comando gkeadm usou o arquivo admin-ws-config.yaml para criar a estação de trabalho do administrador.

Quando gkeadm criou a estação de trabalho do administrador, ela gerou um segundo arquivo de configuração chamado config.yaml. Esse arquivo de configuração, que está na estação de trabalho do administrador, tem como objetivo criar clusters do GKE On-Prem.

Os arquivos admin-ws-config.yaml e config.yaml têm vários campos em comum. Os valores desses campos comuns já estão preenchidos no arquivo config.yaml.

Estes são os campos que já estão preenchidos com os valores que você forneceu quando criou a estação de trabalho do administrador:

vcenter:
  credentials:
    address:
    username:
    password:
  datacenter:
  datastore:
  cluster:
  network:
  resourcepool:
  cacertpath:
gkeconnect:
  projectid:
  registerserviceaccountkeypath:
  agentserviceaccountkeypath:
stackdriver:
  projectid:
  serviceaccountkeypath:
gcrkeypath:

Como preencher o restante do arquivo de configuração do GKE On-Prem

Em seguida, é necessário preencher os campos restantes no arquivo config.yaml.

bundlepath

O arquivo de pacote do GKE On-Prem contém todos os componentes em uma determinada versão do GKE On-Prem. Defina o valor de bundlepath como o caminho do arquivo de pacote da estação de trabalho do administrador.

bundlepath: /var/lib/gke/bundles/gke-onprem-vsphere-1.5.0-gke.27-full.tgz

vcenter.datadisk

O GKE On-Prem cria um disco de máquina virtual (VMDK, na sigla em inglês) a fim de armazenar os dados do objeto do Kubernetes para o cluster de administrador. O instalador cria o VMDK para você, mas é necessário fornecer um nome para o VMDK no campo vcenter.datadisk. Exemplo:

vcenter:
  ...
  datadisk: "my-disk.vmdk"
Armazenamento de dados vSAN: como criar uma pasta para o VMDK

Se você estiver usando um armazenamento de dados vSAN, será necessário colocar o VMDK em uma pasta. Você precisa criar a pasta manualmente com antecedência. Para fazer isso, use govc para criar uma pasta:

govc datastore.mkdir -namespace=true my-gke-on-prem-folder

Em seguida, defina vcenter.datadisk como o caminho do VMDK, incluindo a pasta. Exemplo:

vcenter:
...
datadisk: "my-gke-on-prem-folder/my-disk.vmdk"

Na versão 1.1.1, um problema conhecido exige que você forneça o identificador universal exclusivo (UUID, na sigla em inglês) da pasta em vez do caminho.

proxy

Se sua rede estiver protegida por um servidor proxy, especifique o endereço de proxy e os endereços que não podem passar pelo servidor proxy.

Defina proxy.url para especificar o endereço HTTP do seu servidor proxy. É necessário incluir o número da porta, mesmo que seja igual ao da porta padrão do esquema. O servidor proxy especificado aqui é usado pelos clusters do GKE On-Prem. Além disso, a estação de trabalho de administrador será configurada automaticamente para usar esse mesmo servidor proxy, a menos que você defina a variável de ambiente HTTPS_PROXY na estação de trabalho do administrador.

Configure proxy.noproxy para definir uma lista de endereços IP, intervalos de endereços IP, nomes de host e nomes de domínio que não podem passar pelo servidor proxy. Quando o GKE On-Prem envia uma solicitação para um desses endereços, hosts ou domínios, essa solicitação é enviada diretamente.

Exemplo:

proxy:
  url: "http://my-proxy.example.local:80"
  noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"

admincluster.ipblockfilepath

Como você está usando endereços IP estáticos, é necessário ter um arquivo de configuração de host, conforme descrito em Como configurar IPs estáticos. Forneça o caminho para seu arquivo de configuração de host no campo admincluster.ipblockfilepath. Exemplo:

admincluster:
  ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"

admincluster.bigip.credentials

O GKE On-Prem precisa saber o endereço IP ou o nome do host, o nome de usuário e a senha do balanceador de carga F5 BIG-IP. Defina os valores em admincluster.bigip para fornecer essas informações. Coloque uma âncora, &bigip-credentials, depois de credentials para que você não precise repetir essas informações na seção usercluster. Exemplo:

admincluster:
  ...
  bigip:
    credentials: &bigip-credentials
      address: "203.0.113.2"
      username: "my-admin-f5-name"
      password: "rJDlm^%7aOzw"

admincluster.bigip.partition

Antes, você criava uma partição BIG-IP para o cluster de administrador. Defina admincluster.bigip.partition como o nome da partição. Exemplo:

admincluster:
  ...
  bigip:
    partition: "my-admin-f5-partition"

admincluster.vips

Defina o valor de admincluster.vips.controlplanevip como o endereço IP que você escolheu configurar no balanceador de carga para o servidor da API Kubernetes do cluster de administrador. Defina o valor de ingressvip como o endereço IP que você escolheu configurar no balanceador de carga para o serviço de entrada do cluster de administrador. Exemplo:

admincluster:
  ...
  vips:
    controlplanevip: 203.0.113.3
    ingressvip: 203.0.113.4

admincluster.serviceiprange e admincluster.podiprange

O cluster de administrador precisa ter um intervalo de endereços IP para usar em serviços e um para usar em pods. Esses intervalos são especificados pelos campos admincluster.serviceiprange e admincluster.podiprange. Esses campos são preenchidos quando você executa gkectl create-config. Se quiser, é possível alterar os valores preenchidos para valores de sua escolha.

Os intervalos de serviços e pods não podem se sobrepor. Além disso, os intervalos de serviços e pods não podem se sobrepor a endereços IP usados para nós em nenhum cluster.

Exemplo:

admincluster:
  ...
  serviceiprange: 10.96.232.0/24
  podiprange: 192.168.0.0/16

usercluster.ipblockfilepath

Como você está usando endereços IP estáticos, é necessário ter um arquivo de configuração de host, conforme descrito em Como configurar IPs estáticos. Forneça o caminho para seu arquivo de configuração de host no campo usercluster.ipblockfilepath. Exemplo:

usercluster:
  ipblockfilepath: "/my-config-directory/user-hostconfig.yaml"

usercluster.bigip.credentials

Coloque uma referência, *bigip-credentials, depois de usercluster.bigip.credentials para usar os mesmos address, username e password especificados em admincluster.bigip.credentials. Exemplo:

usercluster:
  ...
  bigip:
    credentials: *bigip-credentials

usercluster.bigip.partition

Antes, você criava uma partição BIG-IP para o cluster de usuário. Defina usercluster.bigip.partition como o nome da partição. Exemplo:

usercluster:
  ...
  bigip:
    partition: "my-user-f5-partition"
  ...

usercluster.vips

Defina o valor de usercluster.vips.controlplanevip como o endereço IP que você escolheu configurar no balanceador de carga para o servidor da API Kubernetes do cluster de usuário. Defina o valor de ingressvip como o endereço IP que você escolheu configurar no balanceador de carga para o serviço de entrada do cluster de usuário. Exemplo:

usercluster:
  ...
  vips:
    controlplanevip: 203.0.113.6
    ingressvip: 203.0.113.7

usercluster.serviceiprange e usercluster.podiprange

O cluster do usuário precisa ter um intervalo de endereços IP para usar em serviços e um intervalo de endereços IP para usar em pods. Esses intervalos são especificados pelos campos usercluster.serviceiprange e usercluster.podiprange. Esses campos são preenchidos quando você executa gkectl create-config. Se preferir, é possível alterar os valores preenchidos para valores de sua escolha.

Os intervalos de serviços e pods não podem se sobrepor. Além disso, os intervalos de serviços e pods não podem se sobrepor a endereços IP usados para nós em nenhum cluster.

Exemplo:

usercluster:
  ...
  serviceiprange: 10.96.233.0/24
  podiprange: 172.16.0.0/12

Como desativar regras antiafinidade do VMware DRS

O GKE On-Prem cria automaticamente regras de antiafinidade do VMware Distributed Resource Scheduler (DRS) para os nós do cluster de usuário, fazendo com que eles sejam distribuídos em pelo menos três hosts físicos no data center.

Esse recurso exige que o ambiente vSphere atenda às seguintes condições

  • O VMware DRS está ativado. O VMware DRS requer a edição de licença do vSphere Enterprise Plus. Para saber como ativar o DRS, consulte Como ativar o VMware DRS em um cluster.
  • A conta de usuário do vSphere fornecida no campo vcenter tem a permissão Host.Inventory.EditCluster.
  • Há pelo menos três hosts físicos disponíveis.

Lembre-se de que, se você tiver uma licença padrão do vSphere, não será possível ativar o VMware DRS.

Se você não tiver o DRS ativado ou se não tiver pelo menos três hosts para os quais as VMs do vSphere podem ser programadas, adicione usercluster.antiaffinitygroups.enabled: false ao arquivo de configuração. Exemplo:

usercluster:
  ...
  antiaffinitygroups:
    enabled: false

Para mais informações, consulte as notas da versão 1.1.0-gke.6

lbmode

Defina lbmode como "Integrated". Exemplo:

lbmode: "Integrated"

stackdriver.clusterlocation

Defina stackdriver.clusterlocation como uma região do Google Cloud em que você quer armazenar registros. É recomendável escolher uma região próxima ao data center no local.

stackdriver.enablevpc

Defina stackdriver.enablevpc como true se você tiver a rede do cluster controlada por uma VPC. Isso garante que toda a telemetria passe pelos endereços IP restritos do Google.

Campos extras no arquivo de configuração

O arquivo de configuração do GKE On-Prem tem vários campos além dos mostrados neste tópico. Por exemplo, é possível usar o campo manuallbspec para configurar o GKE On-Prem para ser executado no modo de balanceamento de carga manual.

Para uma descrição completa dos campos no arquivo de configuração, consulte Como instalar usando o DHCP e Como instalar usando endereços IP estáticos.

Como validar o arquivo de configuração

Depois de modificar o arquivo de configuração, execute gkectl check-config para verificar se o arquivo é válido e pode ser usado para instalação:

gkectl check-config --config config.yaml

Se o comando retornar mensagens FAILURE, 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.

Como executar gkectl prepare

Execute gkectl prepare para inicializar o ambiente do vSphere:

gkectl prepare --config config.yaml --skip-validation-all

Como criar os clusters de administrador e de usuário

  1. Crie o cluster de administrador e o cluster de usuário executando o comando gkectl create cluster.

    gkectl create cluster --config config.yaml --skip-validation-all

    O comando gkectl create cluster cria arquivos kubeconfig nomeados como [CLUSTER_NAME]-kubeconfig no diretório atual em que [CLUSTER_NAME] é o nome definido por você para cluster. Exemplo: MY-CLUSTER-kubeconfig

    A documentação do GKE On-Prem usa os seguintes marcadores para se referir a esses arquivos kubeconfig:

    • Cluster de administrador: [ADMIN_CLUSTER_KUBECONFIG]
    • Cluster de usuário: [USER_CLUSTER_KUBECONFIG]
  2. Verifique se o cluster foi criado e está em execução:

    1. Para verificar o cluster de administrador, execute o seguinte comando:

      kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

      A saída mostra os nós do cluster de administrador.

    2. Para verificar o cluster de usuário, execute o seguinte comando:

      kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]

      A saída mostra os nós do cluster de usuário. Exemplo:

      NAME                        STATUS   ROLES    AGE   VERSION
      xxxxxx-1234-ipam-15008527   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-1500852a   Ready    <none>   12m   v1.14.7-gke.24
      xxxxxx-1234-ipam-15008536   Ready    <none>   12m   v1.14.7-gke.24
      

    Dica: se os clusters estiverem registrados, faça login no Console do Cloud para verificar se eles foram criados com sucesso.

Prossiga para a próxima seção para saber como implantar um aplicativo no cluster de usuário.