Resolver problemas de configuração

Esta secção explica os problemas comuns do Cloud Service Mesh e como os resolver. Se precisar de assistência adicional, consulte o artigo Receber apoio técnico.

A verificar o MembershipState

Pode verificar o estado mais recente da malha em qualquer altura executando o seguinte comando:

gcloud container fleet mesh describe

O resultado é semelhante ao seguinte:

...
membershipSpecs:
  projects/project_id/locations/global/memberships/cluster:
    mesh:
      management: MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster:
    servicemesh:
      ...
      conditions:
        - code: CONFIG_VALIDATION_WARNING
          documentationLink: https://cloud.google.com/...
          details: Application of one or more configs has failed. Error details are shown on individual config resources. See documentation link for more detail.
          severity: WARNING
...

Códigos de erro MembershipState

Se o Cloud Service Mesh comunicar condições ao MembershipState de um cluster, pode significar que não foi possível aplicar as configurações da malha (como recursos personalizados do Istio). As descrições dos códigos de erro seguintes dão mais informações sobre como resolvê-los.

Código de erro Causa Resolução
CONFIG_APPLY_INTERNAL_ERROR Não foi possível aplicar uma ou mais configurações devido a um erro interno. Contacte o apoio ao cliente.
QUOTA_EXCEEDED_* Não foi possível aplicar uma ou mais configurações porque os recursos atingiram um limite de quota. Consulte o artigo Quotas para ver informações sobre as quotas específicas e como aumentá-las.
CONFIG_VALIDATION_ERROR Não foi possível aplicar uma ou mais configurações devido a uma configuração inválida. Os erros específicos são escritos nas configurações que os causaram. Pode encontrar mais informações sobre como diagnosticar estes erros na secção: Erros de validação da configuração.
CONFIG_VALIDATION_WARNING Encontrámos potenciais problemas numa ou mais configurações. Estas podem não ter sido aplicadas e, se tiverem sido aplicadas, pode haver um comportamento não intencional. Pode encontrar mais informações sobre como diagnosticar estes erros na secção: Erros de validação da configuração.
MULTICLUSTER_SECRET_WARNING O cluster está a usar um segredo de vários clusters do Istio criado manualmente em vez de usar a API de vários clusters declarativa para a deteção de pontos finais. Mova a configuração da descoberta de endpoints multicluster para a implementação declarativa. Pode ver mais informações na página Segredos de vários clusters.
WORKLOAD_IDENTITY_REQUIRED O Workload Identity não está ativado para o cluster ou, pelo menos, um dos conjuntos de nós. Ative o Workload Identity ao nível do cluster e do node pool. Para ver instruções, consulte a página Ative o Workload Identity.
MANAGED_CNI_NOT_ENABLED A CNI gerida não está ativada para este cluster. Ative a CNI gerida para manter as práticas recomendadas na sua malha. Pode ver mais informações na página Ative a CNI gerida.
NON_STANDARD_SIDECAR_BINARY_USAGE Um ou mais comandos nos contentores do Istio estão a usar ficheiros binários que não sejam `envoy`, `pilot_agent` ou `iptables`. Remova a dependência de ficheiros binários não suportados. Pode ver mais informações na página Utilização de binários não suportados.
UNSUPPORTED_GATEWAY_CLASS_USAGE O cluster está configurado com classes de gateway (Istio e Anthos Service Mesh) que requerem a migração para o gateway de entrada do Istio para se alinharem com as práticas recomendadas. Consulte a documentação para ver as instruções detalhadas
UNSUPPORTED_MULTIPLE_CONTROL_PLANES O cluster aprovisionou vários canais do plano de controlo. O Cloud Service Mesh só suporta um canal por cluster. Para mais informações, consulte o artigo Corrija vários planos de controlo.

Erros de validação da configuração

Os códigos CONFIG_VALIDATION_WARNING e CONFIG_VALIDATION_ERROR indicam que foram encontrados problemas nas configurações da malha (recursos personalizados do Istio ou Kubernetes) e que um subconjunto de configurações pode não ter sido aplicado corretamente.

Muitos detalhes de erros por recurso são escritos no recurso aplicável. Pode usar o seguinte comando para localizar as configurações inválidas e ver as mensagens de erro específicas. (Nota: estes erros destinam-se especificamente a recursos do Istio e nem todos os erros de validação podem ser apresentados aqui).

for resource in serviceentries destinationrules virtualservices gateways peerauthentications authorizationpolicies requestauthentications sidecars telemetries envoyfilters;
  do kubectl get $resource --all-namespaces --output=json | \
   jq  '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "Accepted" and .status == "False")) | {"name": .metadata.name, "namespace": .metadata.namespace, "kind": .kind, "conditions": .status.conditions}';
done

O resultado é semelhante ao seguinte:

{
  "name": "demo-envoy-filter",
  "namespace": "default",
  "kind": "EnvoyFilter",
  "conditions": [
    {
      "lastTransitionTime": "2024-04-04T21:10:18.046975988Z",
      "message": "This API is not supported",
      "reason": "Invalid",
      "status": "False",
      "type": "Accepted"
    }
  ]
}