我正在尝试学习 docker 和 kubernetes,我正在尝试做的一件事是使用 Sentinel 设置 Redis 并将 redis 暴露给容器外的东西。
安装 redis 和 sentinel 非常简单 https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis
但现在我的下一个愿望是能够在容器外访问redis,我不知道该向谁暴露sentinel和master pod。
最佳答案
来自您的链接 (https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/redis-sentinel-service.yaml) 的 redis sentinel 服务文件将公开集群中的 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 sentinel 服务。
对此的几点说明: * 防火墙:redis 中的安全性是有限的,因此在打开端口之前防止不必要的访问 * 允许分配的 nodePort 范围是从 30000 到 32767,所以在这个限制下要有创意。
关于docker - Kubernetes Redis HA 并将 redis 暴露给容器外的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412719/