2017-03-28 60 views
0

我在我的centos機器上運行kubernetes集羣。 我不想爲mysql創建一個窗格。 MySQL安裝在同一網絡中的另一臺機器上(機器不在kubernates專用網絡中)。如何在我的kubernetes集羣外部訪問mysql?

如何從運行在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 

回答

2

您不需要集羣外部的服務。根據您使用的網絡模型,Docker容器(例如kubernetes pod)應該能夠通過Docker設置的網橋正常連接到MySQL容器。檢查主機在端口3306上是否具有連通性,並且它只是放入DNS名稱(您的kube-dns pod應該將任何基於非kubernetes的請求轉發到它所在主機的主機resolv.conf上)

+0

嘗試過這個...但沒有運氣...... 我已經把DB IP放在我的standalone.xml上來創建連接池。但是,這是失敗 – sitakant

+0

謝謝你...現在它正在部署。代理是我的問題。 – sitakant