[英]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 连接。
阅读更多:
要添加到上述答案中,当您添加--address 0.0.0.0 kubectl 时,还应该打开 3306 到 INTERNET 的端口(不仅是本地主机)!
kubectl port-forward POD_NAME 3306:3306 --address 0.0.0.0
仅在短期调试会话中谨慎使用它,最多在开发系统上使用。 我在以下情况下使用它:
您需要向部署添加服务。 该服务将在您的 pod 前添加一个带有公共 ip 的负载均衡器,以便可以通过公共互联网访问它。
请参阅有关如何向 Kubernetes 部署添加服务的文档。 使用以下代码向您的 app-mysql 部署添加服务:
kubectl expose deployment/app-mysql
您可能还需要配置 MySQL 服务以允许远程连接。 请参阅有关如何在 MySQL 服务器上启用远程访问的链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.