我是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
My 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。
我不确定这是否适合我想在这里实现的目标。如果使用Ingress和NodePort实现相同的方法,请帮助我。
答案 0 :(得分:5)
Kubernetes Ingress作为一个通用概念并未解决暴露/路由TCP / UDP服务的问题,如https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md中所述,如果您想要使用入口,则应使用自定义配置映射。请注意,它永远不会使用主机名进行路由,因为这是HTTP的一个功能,而不是TCP。
答案 1 :(得分:0)