A executar verificações prévias

Este documento fornece informações sobre as verificações prévias executadas quando cria ou atualiza um cluster no Google Distributed Cloud (apenas software) para VMware.

Reveja as regras de firewall

Na versão 1.29 e posteriores, as verificações prévias do lado do servidor estão ativadas por predefinição quando cria, atualiza e atualiza clusters. 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.

A executar gkectl check-config

Se planear criar clusters com o comando gkectl, execute o comando gkectl create-config para gerar um ficheiro de configuração. O ficheiro de configuração determina a sua instalação: fornece informações sobre o seu ambiente vSphere, a sua rede e o equilibrador de carga, e como quer que os seus clusters se apresentem. Pode gerar um ficheiro de configuração antes ou depois de criar uma estação de trabalho de administrador. Para que determinadas verificações sejam aprovadas, têm de ser executadas a partir da estação de trabalho do administrador.

Depois de modificar o ficheiro para satisfazer as necessidades do seu ambiente e dos seus clusters, usa o ficheiro para criar os clusters no seu ambiente no local.

Antes de criar clusters com o comando gkectl, execute o comando gkectl check-config para validar o ficheiro de configuração com várias verificações prévias. Se o comando devolver mensagens FAILURE, corrija os problemas e valide novamente o ficheiro. Se a validação de uma determinada funcionalidade devolver mensagens de AVISO, tem de corrigir os problemas subjacentes antes de poder usar essa funcionalidade.

Modos de verificação prévia e ignorar validações

gkectl check-config tem um modo predefinido e um modo rápido:

  • No modo predefinido, o comando valida exaustivamente cada campo. Além disso, o modo predefinido cria máquinas virtuais (VMs) do vSphere temporárias como parte das respetivas validações, o que pode demorar mais tempo.

  • No modo rápido, o comando ignora as verificações que criam VMs de teste e executa apenas as verificações rápidas. Ativa o modo rápido transmitindo o sinalizador --fast.

Pode ignorar validações específicas transmitindo outras flags, que são descritas em gkectl check-config --help.

Tráfego entre a estação de trabalho de administração e as VMs de teste

No modo predefinido, a verificação prévia cria VMs de teste para o cluster. Cada VM de teste executa um servidor HTTP que escuta na porta 443 e nas portas de nós que especificou no ficheiro de configuração.

São atribuídos vários endereços IP às VMs de teste. Se o seu ficheiro de configuração indicar que os nós do cluster vão receber os respetivos endereços IP de um servidor DHCP, a verificação prévia usa um servidor DHCP para atribuir endereços IP às VMs de teste. Se o ficheiro de configuração indicar que os nós do cluster vão ter endereços IP estáticos atribuídos, a verificação prévia atribui endereços IP estáticos especificados nos ficheiros de blocos de IP às VMs de teste.

A verificação prévia, executada na estação de trabalho do administrador, envia pedidos HTTP para as VMs de teste através dos vários endereços IP atribuídos às VMs. Os pedidos são enviados para a porta 443 e para as portas de nós que especificou no ficheiro de configuração.

Quando devo executar as verificações de pré-publicação?

É uma prática recomendada executar verificações pré-publicação antecipadamente e antes de tentar criar clusters. A execução de verificações pré-voo antecipadas pode ajudar a confirmar que configurou corretamente o ambiente vSphere e a rede.

Se estiver a usar a versão 1.2.0-gke.6, execute gkectl check-config duas vezes:

  1. Corrida gkectl check-config --fast.

  2. Corrida gkectl prepare.

  3. Execute novamente o comando gkectl check-config sem a flag --fast.

O motivo da execução duas vezes é que o gkectl prepare carrega o modelo de VM para a imagem do SO do nó do cluster para o seu ambiente do vSphere. Esse modelo de VM tem de estar no local antes de executar o conjunto completo de validações.

Na versão 1.2.1 e posterior, o comando check-config carrega o modelo de VM, pelo que pode executar o conjunto completo de validações antes de executar gkectl prepare:

  1. Executar gkectl check-config sem a flag --fast.

  2. Corrida gkectl prepare.

As verificações pré-publicação validam os valores que forneceu ao ficheiro. Não tem de preencher todos os campos no ficheiro de configuração para executar verificações prévias no ficheiro. Em alternativa, pode validar o ficheiro iterativamente à medida que preenche os respetivos campos. Por exemplo, se só quiser validar a configuração do vCenter, pode preencher apenas os campos vcenter e executar verificações em relação a esses campos.

Tenha em atenção que a configuração torna-se imutável depois de criar os clusters. A execução de verificações preliminares ajuda a descobrir e resolver problemas na sua configuração antes de criar os clusters.

Preservar a VM de teste para depuração

A partir da versão 1.2.1, o comando gkectl check-config tem uma flag --cleanup.

Quando gkectl check-config executa um conjunto completo de validações, cria uma VM de teste e uma chave SSH associada. Se quiser preservar a VM de teste e a chave SSH para fins de depuração, defina --cleanup como falso.

O valor predefinido de --cleanup é verdadeiro.

Lista de verificações prévias

As verificações prévias validam cada campo no ficheiro de configuração. Seguem-se as verificações atuais:

Categoria Descrição
Ficheiro de configuração

Geralmente, valida se cada campo e especificação tem o formato e os valores esperados.

Ignorado com a flag --skip-validation-config.

Ignore a validação do campo proxy com a flag --skip-validation-proxy.

Internet

Valida o acesso à Internet aos domínios necessários. Valida a configuração do proxy com base no local onde está a executar o gkectl.

Ignorado com a etiqueta --skip-validation-internet.

Imagem do SO

Valida se existem imagens do SO.

Ignorado com a etiqueta --skip-validation-os-images.

Versão do SO Windows

Valida a versão do SO Windows.

Valida se a versão do Windows é suportada quando cria estações de trabalho de administrador com a ferramenta de linha de comandos gkeadm. Tenha em atenção que, embora a ferramenta gkeadm esteja disponível para o Windows 10, o Windows Server 2019 e o Linux, não existe uma verificação prévia para o Linux. Esta validação começa na versão de lançamento 1.4.1.

Versão do cluster

Valida se a versão do cluster de administrador, a versão do cluster de utilizador e a versão do gkectl correspondem para a criação e a atualização.

Ignorado com a etiqueta --skip-validation-cluster-version.

Estado do cluster

Valida se o cluster de administrador ou de utilizador está em bom estado antes da atualização:

  • Cluster de administração: a verificação inclui o serviço Kubernetes, o estado dos componentes, os DaemonSets, as implementações, as máquinas e os pods.
  • Cluster de utilizador: a verificação inclui o serviço Kubernetes, os pontos finais da API do cluster, os StatefulSets, as implementações, as implementações de máquinas, as máquinas e os pods.

Ignorado com a etiqueta --skip-validation-cluster-health.

Entrada Verifica se o cluster de utilizadores tem um objeto Istio Gateway antes da atualização.
IP reservado

Valida se existem endereços IP suficientes para a criação e a atualização.

Ignorado com a etiqueta --skip-validation-reserved-ips.

Google Cloud
ID do projeto
[*].projectid
Valida os IDs dos projetos fornecidos a vários campos na configuração. Se o ID do projeto estiver em falta, a validação é ignorada.
Registe uma conta de serviço
registerserviceaccountkeypath
Valida se a conta de serviço tem as funções de IAM necessárias. Valida se as APIs necessárias estão ativadas.
Associe uma conta de serviço
agentserviceaccountkeypath
Valida se a conta de serviço tem as funções de IAM necessárias. Valida se as APIs necessárias estão ativadas.
Conta de serviço da observabilidade do Google Cloud
stackdriver.serviceaccountkeypath
Valida se a conta de serviço tem as funções de IAM necessárias. Valida se as APIs necessárias estão ativadas.
Ignorado com a etiqueta --skip-validation-gcp.
Acesso ao gcr.io/gke-on-prem-release Valida o acesso ao registo de imagens de contentores alojado no Artifact Registry.

Ignorado pela flag --skip-validation-docker.

Registo do Docker
privateregistryconfig
Se estiver configurado, valida o acesso ao registo do Docker.

Ignorado com a etiqueta --skip-validation-docker.

vCenter Verifica se todos os campos vcenter estão presentes e também verifica o seguinte:
Credenciais
vcenter.credentials.[*]
Valida a autenticação no vCenter Server através das credenciais de utilizador fornecidas.
Versão do vSphere Valida se as versões do vCenter e do ESXi são suportadas.
Centro de dados
vcenter.datacenter
Valida se o centro de dados do vSphere existe.
Armazenamento de dados
vcenter.datastore
Valida se o repositório de dados do vSphere existe.
Disco de dados
vcenter.datadisk
Valida se o disco da máquina virtual (VMDK) do vSphere já existe no vSphere.
Conjunto de recursos
vcenter.resourcepool
Valida se o conjunto de recursos do vSphere existe.
Rede
vcenter.network
Valida se a rede vSphere existe.

Ignorado com a etiqueta --skip-validation-infra.

Armazenamento
Controlador CSI do vSphere Valida se o controlador CSI do vSphere está ativado se existirem PersistentVolumes do vSphere intree ou CSI. Isto é, no ficheiro de configuração do cluster de utilizadores, storage.vSphereCSIDisabled não está definido como true.
Parâmetros StorageClass

Valida se a StorageClass não tem nenhum dos seguintes parâmetros não suportados:

  • hostfailurestotolerate
  • forceprovisioning
  • cachereservation
  • diskstripes
  • objectspacereservation
  • iopslimit
  • diskformat

Se o seu cluster tiver StorageClasses com qualquer um dos parâmetros anteriores, isso pode significar que tem de migrar os seus volumes.

Para mais informações, consulte as Considerações para a migração de volumes vSphere na árvore e a secção de problemas conhecidos sobre atualizações na versão 1.15.

Anotações em PersistentVolume e PersistentVolumeClaims no vSphere criados estaticamente

Antes da atualização, verifica as anotações em PersistentVolumes no vSphere in-tree e PersistentVolumeClaims do vSphere:

  • Os PersistentVolumes no vSphere criados estaticamente têm a anotação pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume
  • Os PersistentVolumesClaims do vSphere criados estaticamente têm a anotação volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume e volume.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume

Se o seu cluster tiver PersistentVolumes in-tree do vSphere ou PersistentVolumeClaims do vSphere sem estas anotações, tem de anotar os PersistentVolumes e os PersistentVolumeClaims antes de continuar. Consulte as Considerações para a migração de volumes do vSphere in-tree.

Carga de trabalho da CSI

Valida se o cluster consegue executar com êxito uma carga de trabalho que usa um PersistentVolume aprovisionado dinamicamente criado através do controlador CSI do vSphere.

Esta verificação é executada durante a atualização e apenas se existirem volumes vSphere na árvore e nenhum volume vSphere CSI.

Esta verificação:

  1. Verifica se não existem recursos pendentes de execuções anteriores da validação.
  2. Encontra ou cria uma StorageClass com o campo provisioner definido como "csi.vsphere.vmware.com".
    1. Nos clusters de utilizadores, seleciona o StorageClass de CSI standard-rwo.
    2. Nos clusters de administrador, encontra uma StorageClass com o campo de aprovisionamento definido como csi.vsphere.vmware.com. Se não existir nenhuma StorageClass no cluster, o teste cria temporariamente uma nova StorageClass de CSI e usa-a na verificação.
  3. Cria um PersistentVolumeClaim no espaço de nomes predefinido com a StorageClass encontrada ou criada no passo anterior e aguarda que o PersistentVolume criado dinamicamente esteja na fase Bound.
  4. Cria uma tarefa de gravação no namespace predefinido que monta o PersistentVolume criado acima. Um pod de gravação está agendado e, no arranque, escreve uma string num ficheiro no sistema de ficheiros montado.
  5. Destrói a tarefa de gravação e o respetivo pod associado.
  6. Cria um trabalho de leitor no namespace predefinido que monta o PersistentVolume criado acima. Um Pod de leitura está agendado e, no arranque, lê o ficheiro escrito pelo Pod de escrita, certificando-se de que os dados escritos pelo Pod de escrita são lidos com êxito.
  7. Destrói a tarefa do leitor e o respetivo pod associado.
  8. Destrói o PersistentVolumeClaim e, como resultado, o PersistentVolume também é eliminado.
  9. Destrói a StorageClass se tiver sido criada durante o teste.

Anfitriões para grupos de antiafinidade

Valida se o número de anfitriões físicos do vCenter é, pelo menos, três se antiAffinityGroups estiver ativado.

Para desativar a funcionalidade antiAffinityGroups para um cluster, consulte antiAffinityGroups.enabled e esta nota de lançamento.

Ignorado com a etiqueta --skip-validation-infra.

Balanceador de carga

Valida a configuração do balanceamento de carga:

  • Se o modo de balanceamento de carga estiver integrado (lbmode: Integrated), valida se todos os campos bigip estão presentes nas especificações admincluster e usercluster.
  • Se o modo de equilíbrio de carga for manual (lbmode: Manual), valida se todos os campos manuallbspec estão presentes nas especificações admincluster e usercluster.
Balanceamento de carga integrado
bigip.credentials.[*] Valida as suas credenciais do F5 BIG-IP.
bigip.partition Valida se a partição fornecida existe.
Função de utilizador do F5 BIG-IP Valida se o utilizador do F5 BIG-IP fornecido tem a função de administrador ou administrador de recursos.
bigip.vips.[*] Valida os VIPs fornecidos.

Foi ignorado com as flags --fast ou --skip-validation-load-balancer.

Balanceamento de carga manual
Configuração de rede Valida VIPs, IPs de nós, etc.

Foram ignorados com as flags --fast ou --skip-validation-load-balancer.

[*].manuallbspec.[*] Valida as portas dos nós fornecidas.
Ignorado com a etiqueta --skip-validation-load-balancer.
Redes

Valida se os intervalos CIDR, os IPs virtuais e os IPs estáticos fornecidos (se configurados) estão disponíveis. Verifica se os endereços IP não se sobrepõem.

Ignorado com a etiqueta --skip-validation-net-config.

DNS

Valida se o servidor DNS fornecido está disponível.

Ignorado com a etiqueta --skip-validation-dns.

NTP

Valida se o servidor de Protocolo NTP (Network Time Protocol) fornecido está disponível.

Ignorado com a etiqueta --skip-validation-tod.

VIPs

Envia pings aos VIPs fornecidos. Esta verificação é bem-sucedida se o ping falhar, o que indica que o VIP esperado ainda não foi usado.

Ignorado com a flag --skip-validation-vips.

IPs dos nós

Envia pings para os endereços IP dos nós fornecidos. Esta verificação é bem-sucedida se o ping falhar, o que indica que o IP do nó esperado ainda não está a ser usado.

Ignorado com a flag --skip-validation-node-ips.

Resultados da verificação prévia

As verificações pré-voo podem devolver os seguintes resultados:

ÊXITO
O campo e o respetivo valor passaram na verificação.
FALHA
O campo e/ou o respetivo valor não passaram na verificação. Se uma verificação devolver uma mensagem FAILURE, corrija os problemas e valide o ficheiro novamente.
IGNORADO

A verificação foi ignorada, provavelmente porque não é relevante para a sua configuração. Por exemplo, se estiver a usar um servidor DHCP, as verificações de DNS e IPs de nós, relevantes apenas para uma configuração de IP estático, são ignoradas.

Se transmitir um sinalizador que ignore uma validação, a verificação ignorada não devolve um resultado SKIPPED. Em vez disso, a validação não é executada e não aparece no resultado do comando.

DESCONHECIDO

O comando skip devolveu um código diferente de zero. Pode considerar os resultados UNKNOWN como verificações com falhas. Normalmente, UNKNOWN indica que a verificação não conseguiu executar algum pacote do sistema, como a execução de nslookup ou gcloud.

Disponível brevemente

As seguintes verificações prévias vão ser adicionadas numa versão futura:

  • Servidor NTP

A executar verificações prévias

Execute verificações prévias com o seguinte comando:

gkectl check-config --config [CONFIG]

em que [CONFIG] é o caminho para o ficheiro de configuração

Execução no modo rápido

Se preferir, pode executar verificações de pré-publicação no "modo rápido", que ignora as validações que criam VMs de teste temporárias, como o VIP de balanceamento de carga e as validações de IP de nós. Para o fazer, transmita --fast:

gkectl check-config --config [CONFIG] --fast

Ignorar validações específicas

Pode transmitir flags para ignorar detalhadamente validações específicas, como DNS, proxy e rede. Cada indicação de omissão tem o prefixo --skip-[VALIDATION].

Para saber mais sobre as flags de ignorar disponíveis, execute o seguinte comando:

gkectl check-config --help

Por exemplo, para ignorar as validações do balanceador de carga:

gkectl check-config --config my-config.yaml --skip-validation-load-balancer 

Cancelar verificações prévias

Se iniciou a execução de verificações pré-voo e quer cancelá-las, prima CTRL + C duas vezes. Se uma verificação prévia ao voo tiver criado uma VM de teste, o cancelamento também deve limpar a VM automaticamente.

Limpar uma VM de teste

Se sobrar uma VM de teste após a conclusão das verificações prévias, pode eliminar a VM do vCenter. Uma VM de teste tem um nome como este:

check-config-[dhcp|static]-[random number]

Para eliminar a VM:

  1. Clique com o botão direito do rato na VM e clique em Energia > Desligar

  2. Depois de desligar a VM, clique novamente com o botão direito do rato na VM e clique em Eliminar do disco.

Exemplo

Segue-se um exemplo da saída do comando. Neste exemplo, a configuração que está a ser validada usa o modo de equilíbrio de carga integrado e IPs estáticos sem um registo Docker externo:

- Validation Category: Config Check
    - [SUCCESS] Config

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: GCP
    - [SUCCESS] GCP Service
    - [SUCCESS] GCP Service Account

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Data Disk
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network
    - [SUCCESS] VSphere CSI Driver

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster F5 (credentials, partition and user role)
    - [SUCCESS] User Cluster F5 (credentials, partition and user role)

- Validation Category: Network Configuration
    - [SUCCESS] CIDR, VIP and static IP (availability and overlapping)

- Validation Category: DNS
    - [SUCCESS] DNS (availability)

- Validation Category: VIPs
    - [SUCCESS] ping (availability)

- Validation Category: Node IPs
    - [SUCCESS] ping (availability)

Now running slow validation checks. ...

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with admin cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with user cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster VIP and NodeIP
    - [SUCCESS] Admin Cluster F5 Access
    - [SUCCESS] User Cluster VIP and NodeIP
    - [SUCCESS] User Cluster F5 Access

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: vCenter on test VMs
    - [SUCCESS] Test VM: VCenter Access and Permission

- Validation Category: DNS on test VMs
    - [SUCCESS] Test VM: DNS Availability

- Validation Category: TOD on test VMs
    - [SUCCESS] Test VM: TOD Availability

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

Deleting test VMs with admin cluster configuration...  DONE
Deleting test VMs with user cluster configuration...  DONE

Problemas conhecidos

  • Para a versão 1.3.0-gke.16:

    Tem de executar verificações de validação rápida, gkectl check-config --fast, para as suas verificações prévias se ambas as seguintes condições se aplicarem:

    1. Configurou o Google Distributed Cloud para usar um proxy.

    2. Instalou um dos seguintes pacotes:

      • O /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz pacote da página Transferências.
      • O pacote /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz da estação de trabalho do administrador.

    Só pode executar o conjunto completo de validação se tiver instalado o pacote completo. Por exemplo: /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • Para a versão 1.2.0-gke.6:

    Se estiver a usar pools de recursos aninhados ou o pool de recursos predefinido, o gkectl check-config falha quando tenta fazer um conjunto completo de validações. No entanto, pode fazer um conjunto mais pequeno de validações transmitindo a flag --fast.

    gkectl check-config --config [CONFIG] --fast

O que se segue?