[英]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.