基本上,我有一个部署,它创建了 3 个自动扩展的容器:PHP-FPM、NGINX 和包含应用程序的容器,所有这些都设置了秘密、服务和入口。该应用程序还在 PHP-FPM 和 NGINX 之间共享项目,所以一切都设置好了。
因为我想用 K8s 探索更多,我决定用 Redis 创建一个 pod,它也挂载一个永久磁盘(但这并不重要)。我还为 redis 创建了一个服务,如果我通过 SSH 连接到 Redis 容器并运行,一切都可以正常工作redis-cli
。
有趣的是项目无法连接到 Redis 所在的 pod。我了解 pod 之间的容器共享相同的“本地”网络,并且可以使用localhost
.
如何将我的项目连接到在其他 pod 中运行且独立扩展的 redis 服务器?Redis 服务出了什么问题?
我的 Redis 服务是这样的:
apiVersion: v1
kind: Service
metadata:
name: redis-service
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
我的 Redis pod 由部署配置文件提供支持(我不一定要对其进行扩展,但我会期待它):
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
strategy:
type: Recreate
template:
metadata:
labels:
app: redis
spec:
volumes:
- name: redis-persistent-volume
persistentVolumeClaim:
claimName: redis-pvc
containers:
- image: redis:4.0.11
command: ['redis-server']
name: redis
imagePullPolicy: Always
resources:
limits:
cpu: 250m
memory: 512Mi
requests:
cpu: 250m
memory: 512Mi
ports:
- containerPort: 6379
name: redis
volumeMounts:
- name: redis-persistent-volume
mountPath: /data
此外,当我点击时kubectl get service
,Redis 服务器有一个集群 IP:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21h
nginx-service NodePort 10.100.111.16 <none> 80:30312/TCP 21h
redis-service ClusterIP 10.99.80.141 <none> 6379/TCP 6s