【问题标题】:Kubernetes Redis HA and exposing redis to things outside of the containerKubernetes Redis HA 并将 redis 暴露给容器外的事物
【发布时间】:2017-01-01 01:12:44
【问题描述】:

我正在尝试学习 docker 和 kubernetes,我想做的一件事是使用 Sentinel 设置 Redis 并将 redis 暴露给容器外部的东西。

获取 redis 和 sentinel 设置非常简单 https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis

但是现在我的下一个愿望是能够在容器外访问redis,我不知道谁来暴露sentinel和master pod。

【问题讨论】:

    标签: docker redis kubernetes redis-sentinel


    【解决方案1】:

    来自您的链接 (https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/redis-sentinel-service.yaml) 的 redis 哨兵服务文件将公开集群内的 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,所以有这个限制是有创意的。

    【讨论】:

    • 诺伯特感谢您的回答。我的下一个问题可能不适用于 redis sentinel,但我相信它适用。如果要更改某些内容,哨兵不会返回 pod 的 IP 而不是服务吗?我在尝试设置 redis 集群并使用服务公开每个 pod 时注意到这一点,它将返回 pod ip 而不是服务 ip,这使得不可能/困难/超出我的知识范围与 kubernetes 一起使用。有没有办法让它也适用于这种情况? (考虑 Redis 集群和 Cassandra 或 Kafka 之类的东西)这可能需要一个单独的问题
    • 我实际上在没有哨兵的 kubernetes 中运行 redis:如果 redis 在容器中作为进程 1 运行(当您使用这些容器时),kubernetes 已经为您完成哨兵(恕我直言)的工作.
    • 有没有找到解决哨兵返回集群外无法访问的redis master ClusterIP的解决方案?
    • 你能解决这个问题吗?我面临着类似的问题
    • 我们已经放弃了 redis 以支持 aerospike。 redis HA部分有很多故障:例如无法抵抗IP地址故障导致。 aerospike 设置更好:它能够更好地应对 k8s 的动态行为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多