基本上,我有一个部署,它创建了 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