簡體   English   中英

如何在我的kubernetes集群之外訪問mysql?

[英]How to access mysql outside my kubernetes cluster?

我在centos機器上運行kubernetes集群。 我不想為mysql創建一個pod。 MySQL安裝在同一網絡的另一台機器上(機器不在kubernates專用網絡中)。

如何從kubernetes集群中運行的Pod中訪問mysql服務?

我已經嘗試過使用以下配置的服務和端點。 但是,沒有運氣。

apiVersion: v1
kind: Service
metadata:
  name: database
spec:
  ports:
  - port: 13080
    targetPort: 13080
    protocol: TCP
---
kind: Deployment
apiVersion: v1
metadata:
  name: database
subsets:
  - addresses:
      - ip: XX.XX.XX.XX
    ports:
      - port: 13080
---
kind: ReplicationController
metadata:
  name: test
spec:
  replicas: 1
  selector:
    app: test
  template:
    metadata:
      name: test
      labels:
        app: test
    spec:
      containers:
      - name: my_pods
        image: my_pods
        env:
         - name: DATABASE_HOST
           value: database
         - name: DATABASE_PORT
           value: "13080"
         - name: DATABASE_USER
           value: "SAAS"
         - name: DATABASE_PASSWORD
           value: "SAAS"
         - name: DATABASE_NAME
           value: "SAASDB"
        ports:
          - containerPort: 8080
      imagePullSecrets:
        - name: my-secret
---
apiVersion: v1
kind: Service
metadata:
  name: test-service
  labels:
    name: test-service
spec:
  type: NodePort
  ports:
     - port: 11544
       targetPort: 8080
       nodePort: 30600
  selector:
    name: test

您不需要為集群外部的事物提供服務。 根據您使用的網絡模型,docker容器(即kubernetes pod)應該能夠通過Docker設置的網橋正常連接到MySQL容器。 檢查主機在端口3306上是否具有連接,只需輸入DNS名稱即可(您的kube-dns pod應將任何基於非kubernetes的請求轉發至計划的主機的主機resolv.conf)

請嘗試一下:

kubectl delete svc database kubectl create service nodeport database --tcp=13080:13080

然后使用下面的cmd獲取正確的ip和端口

kubectl get svc database

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM