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:
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.
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 consultarNETWORK
: o nome da rede que quer procurarREGION
: 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 ControllerPROJECT_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:
- Resolva problemas do Policy Controller
- Introdução à resolução de problemas do Config Sync
- Resolva problemas do Config Connector
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?
- Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.