我在谷歌云上使用了这个设置:
- 使用 (php) 网络应用程序的 Pod 和服务
- Pod 和服务与 mysql 服务器
- 带有 redis 服务器的 Pod 和服务
mysql server 和 redis server 的 kubernetes 配置文件几乎相同,只是名称、端口和镜像不同。
我可以从网络应用连接mysql服务器但我不能连接redis服务器。
此外,我无法从其服务CLUSTER-IP上的网络应用程序连接redis服务器,但我可以连接redis服务器 在其 pod IP 上。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: launcher.gcr.io/google/redis4
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
env:
---
apiVersion: v1
kind: Service
metadata:
name: redis
labels:
app: redis
role: master
tier: backend
spec:
selector:
app: redis
role: master
tier: backend
ports:
- port: 6379
targetPort: 6379
最佳答案
部署规范缺少一些标签,因此服务未选择它。
当前部署规范:
metadata:
labels:
app: redis
包括服务所需的其他标签:
metadata:
labels:
app: redis
role: metadata
tier: backend
或者根据您希望如何查看服务规范正在尝试匹配不存在的标签,您可以将服务更改为:
selector:
app: redis
role: master
tier: backend
到:
selector:
app: redis
关于redis - Kubernetes 无法在服务的 Cluster-IP 上连接 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49102203/