【问题标题】:Redis Cluster K8s - replication passwordRedis Cluster K8s - 复制密码
【发布时间】:2021-01-04 20:07:20
【问题描述】:

我正在尝试启动并运行我的 redis 集群,但我无法为我的客户端正确设置密码身份验证。一旦我使用--requirepass 设置密码,复制就不再起作用了。所以我用谷歌搜索发现redis使用单独的密码进行复制。这可以使用masterauth 进行设置,另请参阅:https://redis.io/topics/replication。 所以我也尝试从--masterauth 开始,但没有成功。有人知道--masterauth 是否可以用作参数我可以在启动时传递给redis-server 命令,因为文档没有直接引用这个。在提到 helm 之前,请注意我的整个部署是使用 kustomize.io 设置的,而 helm 目前不是我首选的方式。

我也尝试了like this,但没有成功。

这就是我的 redis-cluster.yaml 的样子:

apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 6379
    targetPort: 6379
    name: redis
  selector:
    name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 6379
    targetPort: 6379
    name: redis
  selector:
    name: redis-slave
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  labels:
    name: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      name: redis
  template:
    metadata:
      labels:
        name: redis
    spec:
      subdomain:
      containers:
      - name: redis
        image: redis:6.0.9-alpine
        command:
          - redis-server
        args:
          - "--protected-mode"
          - "no"
        ports:
        - containerPort: 6379
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
  labels:
    name: redis-slave
spec:
  replicas: 2
  selector:
    matchLabels:
      name: redis-slave
  template:
    metadata:
      labels:
        name: redis-slave
    spec:
      subdomain: redis-slave
      containers:
      - name: redis
        image: redis:6.0.9-alpine
        command:
          - "redis-server"
        args:
          - "--slaveof"
          - "redis.default.svc.cluster.local"
          - "6379"
          - "--protected-mode"
          - "no"
        ports:
        - containerPort: 6379

【问题讨论】:

    标签: kubernetes redis


    【解决方案1】:

    在redis容器上配置密码有两种方式:

    1. 快速实施:
          containers:
          - args:
            - -c
            - |-
              echo -e 'maxmemory 183500800
              maxmemory-policy allkeys-lru
              stop-writes-on-bgsave-error no
              slaveof redis-master.default.svc.cluster.local
              requirepass YOUR_PASSWORD
              masterauth MASTER_PASSWORD' | docker-entrypoint.sh -
            command:
            - /bin/sh
            image: redis:6.0.9-alpine
            name: redis-slave
    
    1. 更好的做法:
    • 为每个 Deployment 使用 ConfigMap,挂载在 /etc/redis/redis.conf 上,具有特定配置并在没有 argscommand 的情况下运行容器。

    更多 Redis 6.0 配置参数和文档可以在这里找到:https://raw.githubusercontent.com/redis/redis/6.0/redis.conf

    【讨论】:

    • 明天会检查这个,提前谢谢:D
    • 但是 masterauth 在哪里处理?
    • 您可以使用masterauth,正如我后来在我的答案中编辑的那样。 redis.io/topics/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2011-07-14
    相关资源
    最近更新 更多