在Kubernetes上将redis-sentinel连接到redis-master

我已经使用.yaml清单文件成功地将Kubernetes上的redis-slaves与redis-master连接起来。清单文件部署为kubernetes上的pod

但是当我尝试将redis-sentinel连接到master时,它会拒绝连接 “无法在127.0.0.1:26379处连接到Redis:连接拒绝未连接>”

以下是redis主文件,从文件和哨兵清单文件:

Redis-Master.yaml

kind: Deployment
metadata:
  labels:
    name: redis
    redis-sentinel: "true"
    role: master
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: k8s.gcr.io/redis:e2e  # or just image: redis
        env:
          - name: MASTER
            value: "true"
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379

Redis-Slave.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  strategy:
    type: RollingUpdate
  replicas: 3
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
        - name: slave
          image: gcr.io/google_samples/gb-redisslave:v3
          ports:
            - name: redis-server
              containerPort: 6379
          env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            - name: REDIS_REPLICATION_MODE
              value: slave
            - name: REDIS_MASTER_HOST
              value: redis-master
            - name: REDIS_MASTER_PORT_NUMber
              value: "6379"

Redis前哨

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-sentinel
  labels:
    app: redis
    role: sentinel  
    tier: backend
spec:
  strategy:
    type: RollingUpdate
  replicas: 3
  selector:
    matchLabels:
      app: redis
      role: sentinel
      tier: backend
  template:
    metadata:
      labels:
        name: redis-sentinel
        redis-sentinel: "true"
        app: redis
        role: sentinel
        tier: backend
    spec:
      containers:
        - name: sentinel
          image: gcr.io/google_samples/gb-redisslave:v3
          ports:
            - name: redis-sentinel
              containerPort: 26379
          env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            - name: REDIS_REPLICATION_MODE
              value: sentinel
            - name: REDIS_MASTER_HOST
              value: redis-master
            - name: REDIS_MASTER_PORT_NUMber
              value: "6379"   

您能告诉我redis-sentinel清单文件在哪里出问题吗?

jjj22 回答:在Kubernetes上将redis-sentinel连接到redis-master

在部署Redis-Sentinel时,您需要考虑的几件事在您的特定用例中可能会出错:

  1. 检查防火墙规则。确保服务器的端口26379已打开。默认情况下,Sentinels运行时会监听与TCP端口26379的连接。否则,Sentinels不会说话,也不能同意该怎么做。

  2. 检查Sentinel配置文件-sentinel.conf和Redis配置文件-redis.conf。在运行Sentinel时必须使用配置文件,因为系统将使用此文件来保存当前状态,以便在重启时重新加载。如果未提供配置文件或配置文件路径不可写,Sentinel只会拒绝启动。

  3. 您至少需要三个 Sentinel实例才能进行可靠的部署。

您可以找到有关上述某些here信息的更多信息。

请让我知道是否有帮助。

,

我只是假设您正在尝试从外部连接到Pod。您正在连接到Kubernetes环境中不存在的127.0.0.1。您只需通过运行即可连接到获得的Pod的IP

kubectl describe pod

或者您可以创建服务并将该服务的名称用作哨兵中的env变量。

,

你不能像这样连接它。您必须检查 Kubernetes 上的服务。可以看到Redis服务IP地址。您必须使用 IP 地址进行连接

本文链接:https://www.f2er.com/3117434.html

大家都在问