Por que um pod não pode se conectar a outra rede? (Na nova versão do Kubernetes)

1

Eu tenho dois projetos no GCP:

  1. Com os nós do Kubernetes v1.8.8-gke.0. e um banco de dados fora do Kubernetes, mas na rede padrão. Todos os pods podem se conectar a este servidor e a todas as portas
  2. Com o Kubernetes Nodes v1.9.7-gke.3 e um banco de dados fora do Kubernetes, mas na rede padrão. Nenhum pod pode se conectar a este servidor. O teste do traceroute falha.

Por que este Pod não consegue se conectar? Idéias?

Obrigado.

    
por kurkop 16.07.2018 / 19:13

2 respostas

4

Eu denunciei este problema no google aqui: link

E eles disseram que isso é um problema no Kubernetes 1.9:

Beginning with Kubernetes version 1.9.x, automatic firewall rules have changed such that workloads in your Kubernetes Engine cluster cannot communicate with other Compute Engine VMs that are on the same network, but outside the cluster. This change was made for security reasons.

No próximo link, veja a solução: link

Basicamente:

Primeiro, encontre a rede do seu cluster: gcloud container clusters describe [CLUSTER_NAME] --format=get"(network)"

Em seguida, obtenha o CIDR IPv4 do cluster usado para os contêineres:

gcloud container clusters describe [CLUSTER_NAME] --format=get"(clusterIpv4Cidr)"

Por fim, crie uma regra de firewall para a rede, com o CIDR como o intervalo de origem e permita todos os protocolos:

gcloud compute firewall-rules create "[CLUSTER_NAME]-to-all-vms-on-network" --network="[NETWORK]" --source-ranges="[CLUSTER_IPV4_CIDR]" --allow=tcp,udp,icmp,esp,ah,sctp

    
por 31.07.2018 / 19:52
1

Como você tem dois servidores de banco de dados diferentes no GCP, eles podem ter configurações diferentes. Você está usando Cloud SQL ou servidores de banco de dados instalados em VMs do GCE? Para o Cloud SLQ, certifique-se de que os endereços IP externos dos nós do cluster estejam na lista de permissões dos neworks autorizados da instância do Cloud SQL. Se você executar seu banco de dados em VMs do GCE, recomendo verificar as regras de firewall para garantir conexões de entrada ao servidor na porta e nos protocolos corretos. Você também pode verificar o endereço de ligação do seu processo de banco de dados para ver se ele aceita conexões de entrada de endereços IP extranacionais. (Isso pode ser feito executando "sudo netstat -plnt" para ver os processos e seus endereços de ligação). Este link pode ajudar.

    
por 19.07.2018 / 21:38