第一次使用Kubernetes。我有一个API和一个数据库,我希望这两个pod相互通信。
根据文档,我应该创建一个服务。
我已经为两个pod中的每一个创建了一个服务,但仍然无法使用服务IP地址连接到pod。
例如,如果创建的MySQL服务的IP地址为11.22.33.44,我可以运行以下命令尝试连接到该服务的pod:
mysql -h11.22.33.44 -uuser -ppassword foo
...它会挂起,最终连接会超时。
我像这样创建pod和服务:
kubectl create -f ./mysql.yaml
mysql.yaml:
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
selector:
app: mysql
ports:
- protocol: TCP
port: 80
targetPort: 3306
---
apiVersion: v1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: my-custom-mysql-image:latest
ports:
- containerPort: 3306
protocol: TCP
name: mysql
env:
- name: MYSQL_DATABASE
value: "foo"
- name: MYSQL_USER
value: "user"
- name: MYSQL_ROOT_PASSWORD
value: "password"
- name: MYSQL_HOST
value: "127.0.0.1"
您的服务已定义选择器
selector:
app: mysql
但是你的Pod没有任何标签,因此服务无法将其识别为其后端,并且没有端点来为ClusterIP引导流量。你也应该坚持服务上的标准端口号,所以像这样:
ports:
- protocol: TCP
port: 3306
targetPort: 3306