Como resolver problemas de gerenciamento de tráfego no Cloud Service Mesh
Esta seção explica problemas comuns do Cloud Service Mesh e como resolvê-los. Se você precisar de mais ajuda, consulte Como receber suporte.
Erros de conexão do servidor da API nos registros do Istiod
O Istiod não consegue entrar em contato com apiserver se você vir erros semelhantes aos seguintes:
error k8s.io/client-go@v0.18.0/tools/cache/reflector.go:125: Failed to watch *crd.IstioSomeCustomResource`…dial tcp 10.43.240.1:443: connect: connection refused
Use a string de expressão regular /error.*cannot list resource/ para
encontrar esse erro nos registros.
Esse erro geralmente é transitório e, se você alcançou os registros de proxy usando
kubectl, o problema pode já ter sido resolvido. Esse erro geralmente é causado
por eventos que tornam o servidor da API temporariamente indisponível, como quando um servidor de API
que não está em uma configuração de alta disponibilidade é reinicializado para
uma atualização ou upgrade.
Falha do contêiner istio-init
Esse problema pode ocorrer quando as regras iptables do pod não são aplicadas ao namespace de rede do pod. Isso pode ser causado por:
- Uma instalação incompleta do istio-cni
- Permissões insuficientes do pod da carga de trabalho (permissão CAP_NET_ADMINausente)
Se você usa o plug-in CNI do Istio, verifique se seguiu as instruções por completo.
Verifique se o contêiner istio-cni-node está pronto e confira os registros. Se o
problema persistir, estabeleça um shell seguro (SSH) no nó host, procure
os registros do nó para os comandos nsenter e veja se há algum erro.
Se você não usar o plug-in CNI do Istio, verifique se o pod de carga de trabalho
tem a permissão CAP_NET_ADMIN, que é definida automaticamente pelo injetor do arquivo secundário.
Conexão recusada após o início do pod
Quando um pod é iniciado e recebe connection refused ao tentar se conectar a um
endpoint, o problema pode ser que o contêiner do aplicativo foi iniciado antes
do contêiner isto-proxy. Nesse caso, o contêiner do aplicativo envia a
solicitação para istio-proxy, mas a conexão é recusada porque istio-proxy
ainda não está detectando na porta.
Nesse caso, você pode:
- Modifique o código de inicialização do seu aplicativo para fazer solicitações contínuas ao endpoint de integridade - istio-proxyaté que o aplicativo receba um código 200. O endpoint de integridade- istio-proxyé:- http://localhost:15020/healthz/ready
- Adicione um mecanismo de solicitação de nova tentativa à sua carga de trabalho do aplicativo. 
A listagem de gateways retorna vazia
Sintoma:quando você lista Gateways usando kubectl get gateway --all-namespaces
após criar um gateway do Cloud Service Mesh, o comando retorna
No resources found.
Esse problema pode acontecer no GKE 1.20 e posterior porque o controlador de gateway do GKE
instala automaticamente o recurso Gateway.networking.x-k8s.io/v1alpha1 do GKE
nos clusters. Para solucionar o problema, siga estas etapas:
- Verifique se há vários recursos personalizados de gateway no cluster: - kubectl api-resources | grep gateway- Exemplo de saída: - gateways gw networking.istio.io/v1beta1 true Gateway gatewayclasses gc networking.x-k8s.io/v1alpha1 false GatewayClass gateways gtw networking.x-k8s.io/v1alpha1 true Gateway 
- Se a lista mostrar entradas diferentes de Gateways com - apiVersion- networking.istio.io/v1beta1, use o nome completo do recurso ou os nomes curtos distintivos no comando- kubectl. Por exemplo, execute- kubectl get gwou- kubectl get gateways.networking.istio.ioem vez de- kubectl get gatewaypara verificar se os gateways do istio estão listados.
Para mais informações sobre esse problema, consulte Gateways do Kubernetes e gateways do Istio.