Nesta página, mostramos como resolver problemas com o Config Controller.
Resolver problemas de instalação
Nenhuma rede nomeada como padrão
Ao criar uma instância do Config Controller, você pode receber um erro sobre a indisponibilidade da rede padrão:
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\"
Esse erro ocorre se você não especificar uma rede atual com o flag
--network
e sua rede padrão no Google Cloud
for excluída ou desativada. Por padrão, o Config Controller cria o
cluster da edição Enterprise do Google Kubernetes Engine (GKE) que faz o backup da instância do Config Controller na
rede padrão.
Se você quiser criar a instância em uma rede atual, adicione o
flag --network=NETWORK
ao criar a
instância do Config Controller. Substitua NETWORK
pelo nome de uma rede atual.
Se você quiser criar a instância do Config Controller na rede padrão, recrie-a com o comando a seguir:
gcloud compute networks create default --subnet-mode=auto
Para que esse comando funcione, é necessário ativar sub-redes automáticas com o flag --subnet-mode=auto
.
Depois de recriar sua rede padrão, é possível omitir o flag --network
ao criar a instância do Config Controller.
Valor inválido para MasterIpv4CidrBlock
A criação do Config Controller usa uma sub-rede padrão 172.16.0.128/28
para o
CIDR IPv4 do plano de controle.
Se houver um conflito no bloco de CIDR do IPv4, a criação do Config Controller falhará 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 você vir esse erro, selecione um CIDR IPv4 particular diferente e use-o usando a
sinalização --master-ipv4-cidr-block
no comando gcloud anthos config controller create
.
Para encontrar blocos CIDR IPv4 que já estão em uso, conclua as seguintes etapas:
Encontre o nome do peering:
gcloud compute networks peerings list --network=NETWORK
Substitua
NETWORK
pelo nome da rede que você quer pesquisar.A saída será assim:
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.
Mostre o CIDR IPv4 usado pelo peering:
gcloud compute networks peerings list-routes PEERING_NAME \ --direction=INCOMING \ --network=NETWORK \ --region=REGION
Substitua:
PEERING_NAME
: o nome do peering que você quer pesquisar.NETWORK
: o nome da rede que você quer pesquisar.REGION
: o nome da região em que a instância do Config Controller está
Resolver problemas ao executar o Config Controller
Não há IPs do pool de nós
Se a mensagem de erro a seguir for exibida, talvez os pools de nós não tenham endereços IP suficientes:
Can't scale up because instances in managed instance groups hosting node pools ran out of IPs
Esse problema poderá acontecer se você omitir o flag --cluster-ipv4-cidr-block
. Ao
omitir esse flag, o Config Controller assume como padrão o intervalo de CIDR de pod /20
.
Ele pode ter no máximo 16 nós.
Se você precisar de mais nós, exclua a instância do Config Controller, já que
não é possível modificar o bloco de CIDR após a criação. Ao recriar a
instância do Config Controller, use o parâmetro opcional
--cluster-ipv4-cidr-block
e especifique o
CIDR range or netmask size
.
Faltam informações no painel
Se você não encontrar detalhes do Config Controller no painel do console do Google Cloud , a conta de serviço padrão usada pelo Config Controller talvez não tenha as permissões de Observabilidade do Google Cloud necessárias.
Para conceder essas permissõ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:
PROJECT_ID
: o ID do projeto em que você criou a instância do Config ControllerPROJECT_NUMBER
: o número do projeto do Google Cloud .
Resolver problemas de componentes
Como a instância do Config Controller vem pré-instalada com o Policy Controller, o Config Sync e o Config Connector, você pode encontrar problemas com esses componentes. Para saber como resolver problemas nesses componentes, consulte as seguintes páginas:
- Resolver problemas do Policy Controller
- Introdução à solução de problemas do Config Sync
- Resolver problemas no Config Connector
As seções a seguir fornecem conselhos sobre alguns dos problemas mais comuns que você pode encontrar ao usar o Config Controller com esses componentes.
Erros de sincronização
As configurações na sua fonte de informações (por exemplo, um repositório Git ou uma
imagem OCI) são sincronizadas com a instância do Config Controller com
o Config Sync. Verifique se há erros nesse processo de sincronização usando o comando nomos status
:
nomos status --contexts $(kubectl config current-context)
Resolver problemas com recursos do Config Connector
Campos e recursos imutáveis
Alguns campos nos recursos subjacentes do Google Cloud são imutáveis, como IDs de projeto ou o nome da rede VPC. O Config Connector bloqueia as edições nesses campos e não pode acionar as mudanças. Se você quiser editar um desses campos imutáveis, exclua o recurso original (usando o Git) antes de adicioná-lo novamente com seus valores preferenciais.
Recursos travados
Às vezes, os recursos podem não ser excluídos corretamente (conforme informado por nomos
status
). Para corrigir esse problema, remova os
finalizadores
e exclua o recurso manualmente.
Por exemplo, para excluir um IAMPolicyMember que esteja travado, 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
A seguir
- Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.