docker - Kubernetes Redis HA 并将 redis 暴露给容器外的东西

标签 docker redis kubernetes redis-sentinel

我正在尝试学习 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/

相关文章:

docker - 如何立即保存在多阶段docker中创建的docker镜像?

docker - 通过 Helm 缓慢安装/升级(针对 Kubernetes)

bash - 使用docker-compose run -rm时的前缀

node.js - 只运行一次但在多个主机上运行的 Cron 样式调度程序

c# - Pub/Sub Redis,是否可以监控发布的消息是否被消费?

docker - 不允许 kubernetes mysql chown 操作

docker - 我需要 docker 才能在生产环境中运行 Kubernetes 吗?

docker - Hyperledger Composer 设置 connection.json

laravel - 渲染 View 作为事件广播的响应

amazon-web-services - k8s 中的应用 HA