簡體   English   中英

如何從客戶端訪問使用 Nginx Ingress+Kubernetes 托管的 MySql

[英]How to access MySql hosted with Nginx Ingress+Kubernetes from client

我是 Kubernetes 和 Nginx Ingress 工具的新手,現在我嘗試在 AWS 上的 Nginx Ingress 中使用 VHost 托管 MySql 服務。 我創建了一個類似的文件:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      protocol: TCP
  selector:
    app: mysql
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql
          imagePullPolicy: IfNotPresent
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - name: http
              containerPort: 3306
              protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mysql
  labels:
    app: mysql
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: mysql.example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: mysql
              servicePort: 3306

我的 LoadBalancer(由 Nginx Ingress 創建)端口配置如下所示:

80 (TCP) forwarding to 32078 (TCP)
Stickiness options not available for TCP protocols

443 (TCP) forwarding to 31480 (TCP)
Stickiness options not available for TCP protocols

mysql.example.com指向我的 ELB。

我期待着類似的東西,如果嘗試以下操作,我可以從我的本地盒子連接到 MySql:

mysql -h mysql.example.com -u root -P 80 -p

這是行不通的。 如果我嘗試使用LoadBalancer而不是NodePort ,它會為我創建一個按預期工作的新 ELB。

我不確定這是否是我想在這里實現的正確方法。 如果有辦法使用帶有 NodePort 的 Ingress 實現相同的目標,請幫助我。

Kubernetes Ingress 作為一個通用概念並沒有解決暴露/路由 TCP/UDP 服務的問題,如https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp 中所述-udp-services.md如果您希望使用 ingress,您應該使用自定義配置映射 請注意,它永遠不會使用主機名進行路由,因為這是 HTTP 的功能,而不是 TCP。

我成功地通過 ingress-nginx 訪問了托管在 Google Kubernetes Engine 上的 MariaDB/MySQL,使用在為數據庫集群 IP 創建的入口中指定的主機名。

根據文檔,只需創建配置映射並在為 Ingress 定義的服務中公開端口。

幫助我弄清楚如何設置--tcp-services-configmap--udp-services-configmap標志。

暫無
暫無

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

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