ClusterIP + Ingress 无法访问 MySQL 而 NodePort 可以,这主要是因为 Ingress 和 NodePort 的工作机制不同导致的。
Ingress 的设计目的:
ClusterIP 特性:
NodePort 的工作方式:
<节点IP>:<NodePort>
访问服务如果您需要通过 Ingress 暴露 MySQL 服务,有几种方法:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mysql-ingress
annotations:
nginx.ingress.kubernetes.io/tcp-services: "3306:default/mysql-service:3306"
spec:
rules:
- host: mysql.example.com
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
type: LoadBalancer
ports:
- port: 3306
targetPort: 3306
selector:
app: mysql
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30306
selector:
app: mysql
您使用的是哪种 Ingress 控制器(Nginx、Traefik、ALB 等)?这会影响具体的配置方式。