Kubernetes Istio无法访问MySQL的外部服务,该怎么办

Kubernetes Istio无法访问MySQL的外部服务,该怎么办,kubernetes,istio,Kubernetes,Istio,我构建了一个spring boot项目,并使用Kubernetes部署进行了部署,其配置文件如下: server: port: 80 spring: application: name: demo-kube-svca datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql.dev.svc.cluster.local/kube username: ro

我构建了一个spring boot项目,并使用Kubernetes部署进行了部署,其配置文件如下:

server:
  port: 80
spring:
  application:
    name: demo-kube-svca
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql.dev.svc.cluster.local/kube
    username: root
    password: 123456
使用docker部署My mysql数据库非常简单:

Docker run -d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
--name=mysql \
--privileged=true \
Mysql: 8.0
最后,我想使用ServiceEntry将MySQL服务导入ServiceMesh

但是,当我使用该程序访问数据库时,日志中会报告错误:

Caused by: java.net.UnknownHostException: mysql.dev.svc.cluster.local: Name does not resolve
我参考官方文件:, 我想这可能是我的配置有问题,但我不知道该怎么办,你能帮我吗?

ServiceEntry只在sidecar代理中为你打开防火墙-你仍然需要在Kubernetes上部署mysql才能使用mysql.dev.svc.cluster.local svc,或者如果你在IP 192.168.0.123下部署了mysql,请使用它而不是主机

编辑:


如果您需要使用Kubernetes内部的服务覆盖192.168.0.123 IP地址,您应该使用——正如我所写的,Istio的ServiceEntry仅配置防火墙。

我的mysql已部署在主机IP:192.168.0.123上,可以通过url:jdbc:mysql://192.168.0.123/kube访问,但使用url:jdbc:mysql://mysql.dev. Svc.cluster.local/kube将报告解析异常。我的ServiceEntry配置有问题吗?我可能理解你的意思,让我想想,谢谢。我正在使用ExtarnalName配置mysql服务。但我的应用程序仍然无法与mysql通信。有什么想法吗
Caused by: java.net.UnknownHostException: mysql.dev.svc.cluster.local: Name does not resolve