kubernetes - 将 redis-sentinel 连接到 Kubernetes 上的 redis-master
问题描述
我已经使用 .yaml 清单文件成功地将 redis-slaves 与 Kubernetes 上的 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-sentinel
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 清单文件哪里出错了吗?
解决方案
我只是假设您正在尝试从外部连接到 pod。您正在连接到 Kubernetes 环境中不存在的 127.0.0.1。您需要连接到通过简单运行获得的 Pod 的 IP
kubectl describe pod
或者您可以创建一个服务并将该服务的名称用作哨兵中的环境变量。
推荐阅读
- azure-logic-apps - 从 Logic App 中的给定 URL(不是调用)获取参数
- html - How can I, in Sass, target a specific child based on which parent it has, then use it inside media queries?
- javascript - 将带有节点的文本文件读入 HTML
- python - 为什么“应该等于”出现在输出之间?为什么会重复?
- windows - AWS EC2 Windows,预留实例
- r - 计算所选行的最大值
- ruby-on-rails - 未定义的局部变量或方法“meta_title”
- delphi - Gnostice PDF Toolkit 上的内存泄漏
- vue.js - 多个 v-for 循环显示国家/地区内的城市?
- hadoop - Hadoop - 管理多个输入/输出文件