Драйвер jdbc не работает в kubernetes, не работает с таймаутом - PullRequest
0 голосов
/ 21 июня 2019

У меня есть приложение java 11 с драйвером jdbc, работающим вместе с mysql 8.0, приложение может подключиться к mysql и выполнить один sql, но похоже, что оно никогда не получит ответ?

1 Ответ

0 голосов
/ 28 июня 2019

Похоже, проблема с подключением. Сначала было бы хорошо посмотреть на вывод программы 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 должны быть доступны через внутреннее полное доменное имя.

$ 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]

С этого момента диагностика подключений очень похожа на сервер с «голым железом», за исключением того факта, что вы ограничены инструментами, доступными внутри контейнера. Вы можете установить недостающие пакеты в контейнер по мере необходимости.

Как только вы получите больше диагностической информации, вы поймете, что проверять дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...