Resolva problemas do controlador de configuração

Esta página mostra como resolver problemas com o Config Controller.

Resolva problemas de instalação

Nenhuma rede com o nome predefinição

Quando cria a instância do Config Controller, pode receber um erro sobre a rede predefinida não estar disponível:

Error 400: Project \"PROJECT_ID\" has no network named \"default\"., badRequest\n\n  on main.tf line 35, in resource \"google_container_cluster\" \"acp_cluster\"

Este erro ocorre se não tiver especificado uma rede existente com a flag --network e a sua rede predefinida em Google Cloud estiver eliminada ou desativada. Por predefinição, o Config Controller cria o cluster do Google Kubernetes Engine que suporta a sua instância do Config Controller na rede predefinida.

Se quiser criar a instância numa rede existente, adicione a flag --network=NETWORK quando criar a instância do controlador de configuração. Substitua NETWORK pelo nome de uma rede existente.

Se quiser criar a instância do controlador de configuração na rede predefinida, recrie a rede predefinida com o seguinte comando:

gcloud compute networks create default --subnet-mode=auto

Para que este comando funcione, tem de ativar as sub-redes automáticas com a flag --subnet-mode=auto.

Depois de recriar a rede predefinida, pode omitir a flag --network quando criar a instância do Config Controller.

Valor inválido para MasterIpv4CidrBlock

A criação do Config Controller usa uma sub-rede predefinida de 172.16.0.128/28 para o CIDR IPv4 do plano de controlo. Se existir um conflito no bloco CIDR IPv4, a criação do Config Controller falha com o seguinte erro:

Cloud SSA\n\nError: Error waiting for creating GKE cluster: Invalid value for field PrivateClusterConfig.MasterIpv4CidrBlock: 172.16.0.128/28 conflicts with an existing subnet in one of the peered VPCs.

Se vir este erro, selecione um CIDR IPv4 privado diferente e use-o com a flag --master-ipv4-cidr-block no comando gcloud anthos config controller create.

Para encontrar blocos CIDR IPv4 que já estão em utilização, conclua os seguintes passos:

  1. Encontre o nome da interligação:

    gcloud compute networks peerings list --network=NETWORK
    

    Substitua NETWORK pelo nome da rede que quer procurar.

    O resultado é semelhante ao seguinte:

    NAME                                    NETWORK   PEER_PROJECT               PEER_NETWORK                            PEER_MTU  IMPORT_CUSTOM_ROUTES  EXPORT_CUSTOM_ROUTES  STATE   STATE_DETAILS
    gke-n210ce17a4dd120e16b6-7ebf-959a-peer  default  gke-prod-us-central1-59d2  gke-n210ce17a4dd120e16b6-7ebf-0c27-net            False                 False                 ACTIVE  [2021-06-08T13:22:07.596-07:00]: Connected.
    
  2. Mostrar o CIDR IPv4 que está a ser usado pela interligação:

    gcloud compute networks peerings list-routes PEERING_NAME \
        --direction=INCOMING \
        --network=NETWORK \
        --region=REGION
    

    Substitua o seguinte:

    • PEERING_NAME: o nome da interligação que quer consultar
    • NETWORK: o nome da rede que quer procurar
    • REGION: o nome da região em que a sua instância do Config Controller se encontra

Resolva problemas durante a execução do Config Controller

Ficar sem IPs de node pool

Se vir a seguinte mensagem de erro, os seus conjuntos de nós podem não ter endereços IP suficientes:

Can't scale up because instances in managed instance groups hosting node pools ran out of IPs

Este problema pode ocorrer se omitir a flag --cluster-ipv4-cidr-block. Quando omite esta flag, o Config Controller usa por predefinição o intervalo de CIDR do pod./20 Este intervalo dá-lhe um máximo de 16 nós.

Se precisar de mais nós, elimine a instância do Config Controller, uma vez que não pode modificar o bloco CIDR após a criação. Quando recria a instância do Config Controller, use o parâmetro opcional --cluster-ipv4-cidr-block e especifique o CIDR range or netmask size.

Informações do painel de controlo em falta

Se não vir detalhes do Config Controller no painel de controlo da Google Cloud consola, a conta de serviço predefinida usada pelo Config Controller pode não ter as autorizações da Google Cloud Observability de que precisa.

Para conceder estas autorizações, use os seguintes comandos:

# Cloud Monitoring metrics permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/monitoring.metricWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/stackdriver.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/opsconfigmonitoring.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Logging permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/logging.logWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Trace permissions\
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/cloudtrace.agent \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto no qual criou a instância do Config Controller
  • PROJECT_NUMBER: o número do seu Google Cloud projeto

Resolva problemas de componentes

Uma vez que a sua instância do Config Controller é pré-instalada com o Policy Controller, o Config Sync e o Config Connector, pode ter problemas com estes componentes. Para saber como resolver problemas destes componentes, consulte as seguintes páginas:

As secções seguintes fornecem sugestões sobre alguns dos problemas mais comuns que pode encontrar quando usa o Config Controller com estes componentes.

Erros de sincronização

As configurações na sua fonte de verdade (por exemplo, um repositório Git ou uma imagem OCI) são sincronizadas com a sua instância do Config Controller com o Config Sync. Verifique se existem erros neste processo de sincronização através do comando nomos status:

nomos status  --contexts $(kubectl config current-context)

Resolva problemas de recursos do Config Connector

Campos e recursos imutáveis

Alguns campos nos Google Cloud recursos subjacentes são imutáveis, como os IDs dos projetos ou o nome da sua rede VPC. O Config Connector bloqueia as edições a esses campos e não consegue acionar alterações. Se quiser editar um destes campos imutáveis, tem de eliminar o recurso original (através do Git) antes de o voltar a adicionar com os seus valores preferenciais.

Recursos bloqueados

Por vezes, os recursos podem não ser eliminados corretamente (conforme comunicado por nomos status). Pode corrigir este problema removendo os finalizadores no recurso e, em seguida, eliminando o recurso manualmente.

Por exemplo, para eliminar um IAMPolicyMember bloqueado, execute o seguinte comando:

kubectl patch IAMPolicyMember logging-sa-iam-permissions \
    -p '{"metadata":{"finalizers":[]}}' --type=merge -n config-control
kubectl delete IAMPolicyMember logging-sa-iam-permissions -n config-control

O que se segue?