我正在尝试学习 docker 和 kubernetes,我想做的一件事是使用 Sentinel 设置 Redis 并将 redis 暴露给容器外部的东西。
在https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis之后,获取 redis 和哨兵设置非常容易
但是现在我的下一个愿望是能够在容器外访问redis,我无法弄清楚谁来暴露哨兵和主pod。
我正在尝试学习 docker 和 kubernetes,我想做的一件事是使用 Sentinel 设置 Redis 并将 redis 暴露给容器外部的东西。
在https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis之后,获取 redis 和哨兵设置非常容易
但是现在我的下一个愿望是能够在容器外访问redis,我无法弄清楚谁来暴露哨兵和主pod。
您链接中的 redis 哨兵服务文件 ( https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/redis-sentinel-service.yaml ) 将公开集群中的 pod。对于外部访问(从集群外部),您可以使用NodePort:
apiVersion: v1
kind: Service
metadata:
labels:
name: sentinel
role: service
name: redis-sentinel
spec:
type: NodePort
ports:
- port: 26379
targetPort: 26379
nodePort: 30369
selector:
redis-sentinel: "true"
这会将外部世界的所有主机上的端口 30369 暴露给 redis 哨兵服务。
对此的几点说明: * 防火墙:redis 中的安全性是有限的,所以在打开端口之前要防止不必要的访问 * 允许分配的nodePort范围是从 30000 到 32767,所以这个限制是有创意的。