jdbc驱动程序在kubernetes中不起作用,超时失败

时间:2019-06-21 00:01:35

标签: mysql jdbc kubernetes

我有一个Java 11应用程序,它带有与mysql 8.0一起运行的jdbc驱动程序,该应用程序能够连接到mysql并执行一个sql,但看起来好像再也没有响应?

1 个答案:

答案 0 :(得分:0)

似乎是连接问题。 首先,最好看看Java程序的输出。

首先简单的检查是在Kubernetes级别上,以确保关键组件仍然存在:

$ kubectl get deployments
$ kubectl get services
$ kubectl get pods

可以在运行Java应用程序的容器内进行其他检查。 下面是一种可能的方法。

列出您的应用程序及其标签的部署:

$ kubectl get deployments --show-labels
NAME         READY   UP-TO-DATE   AVAILABLE   AGE   LABELS
hello-node   2/2     2            2           1h   app=hello-node

有了标签,您可以列出相关的容器及其容器:

$ LABEL=hello-node; kubectl get pods -l app=$LABEL -o custom-columns=POD:metadata.name,CONTAINER:spec.containers[*].name
POD                           CONTAINER
hello-node-55b49fb9f8-7tbh4   hello-node
hello-node-55b49fb9f8-p7wt6   hello-node

现在可以从Java应用程序容器中运行基本的诊断命令。 Ping可能无法实现目标,但几乎总是在容器中可用,并且会进行DNS解析的原始检查。 来自同一个名称空间的服务应通过短DNS名称提供。 来自同一Kubernetes集群内部其他名称空间的服务应该通过内部FQDN可用。

$ kubectl exec hello-node-55b49fb9f8-p7wt6 -c hello-node -- ping -c1 hello-node
$ kubectl exec hello-node-55b49fb9f8-p7wt6 -c hello-node -- ping -c1 hello-node.default.svc.cluster.local
$ kubectl exec hello-node-55b49fb9f8-p7wt6 -c hello-node -- mysql -u [username] -p [dbname] -e [query]

从这里开始,连通性诊断与裸机服务器非常相似,不同之处在于您受到容器内部可用工具的限制。您可以根据需要将缺少的软件包安装到容器中。

获取更多诊断信息后,您将获得下一步需要检查的线索。