繁体   English   中英

Kube.netes上运行的MySQL如何连接

[英]How to connect MySQL running on Kubernetes

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

我已经在命令下运行,但外部 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

试试kubectl port-forward命令。

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

有关所有可用选项,请参阅文档

涉及两个步骤:

1 ) 您首先执行从本地主机到您的 pod 的端口转发:

kubectl port-forward <your-mysql-pod-name> 3306:3306 -n <your-namespace>

2)连接数据库:

mysql -u root -h 127.0.0.1 -p <your-password>
 

请注意,您可能需要将127.0.0.1更改为localhost - 取决于您的设置。

如果主机设置为:
localhost - 然后使用套接字或 pipe。
127.0.0.1 - 然后客户端被迫使用 TCP/IP。

您可以使用netstat -nlp检查您的数据库是否正在侦听 TCP 连接。


阅读更多:

无法通过套接字 tmp mysql sock 连接到本地 mysql 服务器

无法连接到服务器

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

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

仅在短期调试会话中谨慎使用它,最多在开发系统上使用。 我在以下情况下使用它:

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

您需要向部署添加服务。 该服务将在您的 pod 前添加一个带有公共 ip 的负载均衡器,以便可以通过公共互联网访问它。

请参阅有关如何向 Kubernetes 部署添加服务的文档 使用以下代码向您的 app-mysql 部署添加服务:

kubectl expose deployment/app-mysql

您可能还需要配置 MySQL 服务以允许远程连接。 请参阅有关如何在 MySQL 服务器上启用远程访问的链接:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM