簡體   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