Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível conectar o contêiner do tomcat ao contêiner do banco de dados mysql no kubernetes?


Seus arquivos YAML estão corretos. Eu recriei todo o ambiente mencionado na pergunta e tenho o Tomcat saudável com o aplicativo no estado Running.
Se alguém também quiser testá-lo, o nome de usuário/senha do gerenciador do Tomcat são:
 username="the-manager" password="needs-a-new-password-here"

Nenhum erro SEVERE foi encontrado no log do tomcat, recebi a resposta do aplicativo:
{"text":"Data-core"}

que se parece com a resposta correta. Eu também tenho a sequência de tabela vazia no núcleo de dados do banco de dados Mysql.

Posso adivinhar que você teve algum tipo de problema de conectividade, provavelmente causado pelo trabalho incorreto do complemento de rede do Kubernetes (Calico/Flannel/etc.)

Como solucionar o problema:
  1. Para verificar a configuração, todos os pods podem ser colocados no mesmo nó criando PV para ambas as implantações.

  2. Para testar a conectividade com recursos Mysql ou Tomcat, podemos executar seus pods e executar testes usando comandos simples:
    $ kubectl exec mysql-pod-name -it -- mysql -hlocalhost -uroot -proot data-core --execute="show tables;"
    

    ou apenas execute pod adicional para verificar se os serviços apontam corretamente para o pod mysql:
    $ kubectl run mysql-client --rm -it --image mysql --restart=Never --command -- mysql -hmysql -uroot -proot data-core --execute="show tables;"
    

Para o pod do tomcat, podemos usar os seguintes comandos para verificar as senhas do usuário e a resposta do aplicativo:
   $ kubectl exec -ti tomcat-pod-name -- cat /usr/local/tomcat/conf/tomcat-users.xml

   $ kubectl exec -ti tomcat-pod-name -- curl http://localhost:8080/data-core-0.0.1-SNAPSHOT/

ou use um pod separado com curl ou wget para verificar se o Tomcat Service e o NodePort funcionam bem:
   $ kubectl run curl -it --rm --image=appropriate/curl --restart=Never  -- curl http://tomcat:8080/data-core-0.0.1-SNAPSHOT/

   $ curl http://Cluster.Node.IP:30000/data-core-0.0.1-SNAPSHOT/

Ao usar IPs de nós diferentes, você também pode verificar a conectividade do cluster porque o NodePort Service abre a mesma porta em todos os nós do cluster e, em seguida, as regras do iptables nos nós encaminham o tráfego para o IP do Pod.
Se o pod estiver localizado no nó diferente, Flannel /Calico/etc. O plug-in de rede o entrega ao nó correto e ao Pod.