我已经为MySQL设置了Kubernetes部署和服务。我无法使用其DNS名称从任何pod访问MySQL服务...它只是超时。任何其他端口立即拒绝连接,但我的服务配置中的端口在约10秒后超时。
Service.yml
apiVersion: v1
kind: Service
metadata:
name: mysql-service
labels:
run: mysql-service
spec:
ports:
- port: 3306
protocol: TCP
- port: 3306
protocol: UDP
selector:
run: mysql-service
Deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-service
labels:
app: mysql-service
spec:
replicas: 1
selector:
matchLabels:
app: mysql-service
template:
metadata:
labels:
app: mysql-service
spec:
containers:
- name: 'mysql-service'
image: mysql:5.5
env:
- name: MYSQL_ROOT_PASSWORD
value: some_password
- name: MYSQL_DATABASE
value: some_database
ports:
- containerPort: 3306
您的部署(更具体地说是其pod规范)说
labels:
app: mysql-service
但你的服务说
selector:
run: mysql-service
这些不匹配,因此您的服务未附加到pod。你应该看到这个,如果你kubectl describe service mysql-service
,“端点”列表将是空的。
更改服务的选择器以匹配pod的标签(反之亦然),这应该更好。