[英]How to access mysql outside my kubernetes cluster?
我在centos機器上運行kubernetes集群。 我不想為mysql創建一個pod。 MySQL安裝在同一網絡的另一台機器上(機器不在kubernates專用網絡中)。
如何從kubernetes集群中運行的Pod中訪問mysql服務?
我已經嘗試過使用以下配置的服務和端點。 但是,沒有運氣。
apiVersion: v1
kind: Service
metadata:
name: database
spec:
ports:
- port: 13080
targetPort: 13080
protocol: TCP
---
kind: Deployment
apiVersion: v1
metadata:
name: database
subsets:
- addresses:
- ip: XX.XX.XX.XX
ports:
- port: 13080
---
kind: ReplicationController
metadata:
name: test
spec:
replicas: 1
selector:
app: test
template:
metadata:
name: test
labels:
app: test
spec:
containers:
- name: my_pods
image: my_pods
env:
- name: DATABASE_HOST
value: database
- name: DATABASE_PORT
value: "13080"
- name: DATABASE_USER
value: "SAAS"
- name: DATABASE_PASSWORD
value: "SAAS"
- name: DATABASE_NAME
value: "SAASDB"
ports:
- containerPort: 8080
imagePullSecrets:
- name: my-secret
---
apiVersion: v1
kind: Service
metadata:
name: test-service
labels:
name: test-service
spec:
type: NodePort
ports:
- port: 11544
targetPort: 8080
nodePort: 30600
selector:
name: test
您不需要為集群外部的事物提供服務。 根據您使用的網絡模型,docker容器(即kubernetes pod)應該能夠通過Docker設置的網橋正常連接到MySQL容器。 檢查主機在端口3306上是否具有連接,只需輸入DNS名稱即可(您的kube-dns pod應將任何基於非kubernetes的請求轉發至計划的主機的主機resolv.conf)
請嘗試一下:
kubectl delete svc database kubectl create service nodeport database --tcp=13080:13080
然后使用下面的cmd獲取正確的ip和端口
kubectl get svc database
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.