im通过Virtualbox在Windows上运行Kubernetes(minikube)。我在主机服务上运行了一个服务,我不想将其放入Kubernetes集群中,如何从Pod内部访问该服务?
我不是Kubernetes的新手,我希望这个问题不要愚蠢地问。
我尝试创建服务+端点,但是没有用:
kind: Endpoints
apiVersion: v1
metadata:
name: vetdb
subsets:
- addresses:
- ip: 192.168.99.100
ports:
- port: 3307
kind: Service
apiVersion: v1
metadata:
name: vetdb
spec:
selector:
app: vetdb
type: ClusterIP
ports:
- port: 3306
targetPort: 3307
我在以后应在其上运行的同一集群内启动了一个ubuntu映像,并测试了连接:
$ root@my-shell-7766cd89c6-rtxt2:/# curl vetdb:3307 --output test
Host '192.168.99.102' is not allowed to connect to this MariaDB serverroot@my-shell
这是我正在运行的相同输出(其他Host-IP除外)
curl 192.168.99.100:3307
在我的主机PC上==> Itworks。
但是我无法从我真正需要访问URL的微服务内部访问主机。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
eureka-77f949499-g2l82 1/1 Running 0 2h
my-shell-7766cd89c6-rtxt2 1/1 Running 0 2h
vet-ms-54b89f9c86-29psf 1/1 Running 10 18m
vet-ms-67c774fd9b-2fnjc 0/1 CrashLoopBackOff 7 18m
我上面发布的卷曲响应来自Pod:my-shell-7766cd89c6-rtxt2
但是我需要从vet-ms-*
$ kubectl logs -f vet-ms-67c774fd9b-2fnjc
...
Caused by: java.net.UnknownHostException: vetdb
...
我尝试过的Spring URL Settings
spring.profiles.datasource.url: jdbc:mysql://vetdb:3307/vetdb?useSSL=false&allowPublicKeyRetrieval=true
spring.profiles.datasource.url: jdbc:mysql://vetdb:3306/vetdb?useSSL=false&allowPublicKeyRetrieval=true
spring.profiles.datasource.url: jdbc:mysql://vetdb/vetdb?useSSL=false&allowPublicKeyRetrieval=true
好家伙
编辑:// 我允许每个主机连接到数据库以消除此错误
Host '192.168.99.102' is not allowed to connect to this MariaDB
但是我仍然在我的微服务中收到相同的未知主机异常。
答案 0 :(得分:1)
我认为Ubuntu映像测试在这里提供的信息最多。
从错误消息中我认为问题出在MySQL配置中。您必须将服务器配置为侦听主机IP地址的端口(即不是本地主机或套接字文件)。
此外,还必须确保也可以连接来自pod子网的IP地址。