13

我是 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 来实现相同的效果,请帮助我。

4

2 回答 2

14

Kubernetes Ingress 作为一个通用概念并不能解决暴露/路由 TCP/UDP 服务的问题,如https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp中所述-udp-services.md如果您希望使用 ingress,您应该使用自定义配置映射。请注意,它永远不会使用主机名进行路由,因为这是 HTTP 的特性,而不是 TCP。

于 2018-02-14T13:06:08.820 回答
3

我使用为数据库集群 IP 创建的入口中指定的主机名,通过 ingress-nginx 成功访问了托管在 Google Kubernetes Engine 上的 MariaDB/MySQL。

根据文档,只需创建配置映射并在为 Ingress 定义的服务中公开端口。

帮助我弄清楚如何设置--tcp-services-configmap--udp-services-configmap标记。

于 2018-10-09T17:42:46.850 回答