2017-03-28 61 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