我构建了一个spring boot项目,并使用Kubernetes Deployment部署它,它的配置文件如下所示:
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我的mysql数据库使用docker部署起来很简单:
Docker run -d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
--name=mysql \
--privileged=true \
Mysql: 8.0最后,我想使用ServiceEntry将MySQL服务导入到服务网格中。
apiVersion: networking.istio.io/v1alpha3
Kind: ServiceEntry
Metadata:
Name: mysql-external
Spec:
Hosts:
- mysql.dev.svc.cluster.local
Addresses:
- 192.168.0.123/32
Ports:
- number: 3306
Name: mysql
Protocol: tcp
Location: MESH_EXTERNAL但是,当我使用该程序访问数据库时,日志中报告了错误:
Caused by: java.net.UnknownHostException: mysql.dev.svc.cluster.local: Name does not resolve我指的是官方文档:https://istio.io/blog/2018/egress-tcp/,我想可能是我的配置有问题,但我不知道该怎么办,你能帮我吗?
发布于 2019-08-08 15:33:38
ServiceEntry仅在sidecar代理中为您打开防火墙-您仍然需要在Kubernetes上部署mysql才能使用mysql.dev.svc.cluster.local svc,或者如果您已在IP 192.168.0.123下部署mysql,请使用它而不是主机。
编辑:
如果你需要用Kubernetes内部的服务来覆盖192.168.0.123IP地址,你应该使用external service -正如我写的那样,Istio的ServiceEntry only configure firewall。
https://stackoverflow.com/questions/57406678
复制相似问题