[英]Kubernetes use External Services inside Pod
通過Virtualbox在Windows上運行Kubernetes(minikube)。 我有一個服務在我的主機服務上運行我不想放入我的Kubernetes集群,我如何從Inside my Pods訪問該服務?
我是Kubernetes的新手,我希望這個問題不是愚蠢的問題。
我試圖創建一個Service + Endpoint,但它沒有用:
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
我在稍后運行pod的同一群集中啟動了一個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
這與我運行的輸出相同(除了其他主機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-*
訪問vetdb
$ kubectl logs -f vet-ms-67c774fd9b-2fnjc ... Caused by: java.net.UnknownHostException: vetdb ...
我試過的Spring URL設置
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
Ty伙計們
編輯://我允許每個主機連接到數據庫以刪除此錯誤
Host '192.168.99.102' is not allowed to connect to this MariaDB
但我仍然在我的微服務中得到相同的未知主機異常。
我認為Ubuntu圖像測試在這里提供的信息最豐富。
從錯誤消息我認為問題出在MySQL配置中。 您必須將服務器配置為偵聽主機IP地址的端口(即不是localhost或socketfile)。
此外,還必須確保允許來自pod子網的IP地址進行連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.