Viv*_*mar 2 nginx docker kubernetes kubernetes-ingress
我是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
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
mysql.example.com指向我的ELB。
我期待的是类似的东西,如果尝试类似的东西,我可以从本地框中连接到MySql:
mysql -h mysql.example.com -u root -P 80 -p
Run Code Online (Sandbox Code Playgroud)
哪个没有解决。如果我尝试使用LoadBalancer而不是NodePort,它将为我创建一个按预期工作的新ELB。
我不确定这是否是我想要在这里实现的正确方法。如果可以使用Ingress和NodePort实现相同的方法,请帮助我。
如https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposed-tcp中所述,Kubernetes Ingress作为通用概念不能解决暴露/路由TCP / UDP服务的问题。-udp-services.md如果需要通过入口使用,则应使用自定义configmap。并且请注意,它将永远不会使用主机名进行路由,因为这是HTTP(而非TCP)的功能。