如何连接在Kubernetes上运行的MySQL

时间:2016-10-07 05:45:54

标签: kubernetes google-cloud-platform

我已在Google gcloud容器引擎上部署了我的应用程序。我的申请需要MySQL。应用程序运行正常并正确连接到MySQL。 但我想使用MySQL客户端(MySQL或命令行)从我的本地计算机连接Workbench数据库,有人可以帮助我如何将其暴露给本地计算机吗?以及如何在MySQL shell上打开gcloud命令行?

我已经运行了以下命令,但外部IP不存在:

$ kubectl get deployment
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
app-mysql   1         1         1            1           2m
$ kubectl get pods
NAME                            READY     STATUS             RESTARTS   AGE
app-mysql-3323704556-nce3w   1/1       Running            0          2m
$ kubectl get service
NAME           CLUSTER-IP    EXTERNAL-IP       PORT(S)    AGE
app-mysql   11.2.145.79   <none>            3306/TCP   23h

修改

我在yml文件下方使用

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: app-mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: app-mysql
    spec:
      volumes:
      - name: data
        emptyDir: {}
      containers:
      - name: mysql
        image: mysql:5.6.22
        env:
        - name: MYSQL_USER
          value: root
        - name: MYSQL_DATABASE
          value: appdb
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql/
---
apiVersion: v1
kind: Service
metadata:
  name: app-mysql
spec:
  selector:
    app: app-mysql
  ports:
  - port: 3306

3 个答案:

答案 0 :(得分:13)

尝试kubectl port-forward命令。

在你的情况下; kubectl port-forward app-mysql-3323704556-nce3w 3306:3306

有关所有可用选项,请参阅The documentation

答案 1 :(得分:0)

要添加到上述答案中,请在添加-地址0.0.0.0 时,kubectl应该也打开3306到INTERNET的端口(不仅是本地主机)!

kubectl port-forward POD_NAME 3306:3306 --address 0.0.0.0

谨慎使用它,最多只能在开发系统上进行简短的调试会话。我在以下情况下使用它:

  • 使用Windows的同事
  • 还没有准备好ssh密钥
  • 环境是我不怕暴露于世界的游乐场

答案 2 :(得分:-1)

您需要在MySQL服务器上启用远程访问。请参阅此链接,了解如何在MySQL服务器上启用远程访问:http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html