gpt4 book ai didi

docker - 如何从客户端访问使用 Nginx Ingress+Kubernetes 托管的 MySql

转载 作者:行者123 更新时间:2023-12-02 11:27:47 25 4
gpt4 key购买 nike

我是 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

这是行不通的。而不是 节点端口 如果我尝试使用 负载均衡器 ,它为我创建了一个按预期工作的新 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。

关于docker - 如何从客户端访问使用 Nginx Ingress+Kubernetes 托管的 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48787743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com