我已经为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
答案 0 :(得分:2)
您的部署(更具体地说是其pod规范)说
labels:
app: mysql-service
但是您的服务说
selector:
run: mysql-service
这些不匹配,因此您的服务未附加到广告连播。如果您kubectl describe service mysql-service
,则“端点”列表将为空。
更改服务的选择器以匹配pod的标签(反之亦然),这应该更好。