将redis哨兵连接到Kubernetes上的redis主机
我已经使用部署为Kubernetes上的POD的.yaml清单文件成功地将redis从设备与Kubernetes上的redis主设备连接起来 但当我试图将redis sentinel连接到master时,它会拒绝连接 “无法连接到127.0.0.1:26379的Redis:连接被拒绝未连接>” 以下是redis主、从和sentinel清单文件: Redis-Master.yaml将redis哨兵连接到Kubernetes上的redis主机,kubernetes,redis,master-slave,sentinel,Kubernetes,Redis,Master Slave,Sentinel,我已经使用部署为Kubernetes上的POD的.yaml清单文件成功地将redis从设备与Kubernetes上的redis主设备连接起来 但当我试图将redis sentinel连接到master时,它会拒绝连接 “无法连接到127.0.0.1:26379的Redis:连接被拒绝未连接>” 以下是redis主、从和sentinel清单文件: Redis-Master.yaml kind: Deployment metadata: labels: name: redis r
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"
你能告诉我RADIS哨兵清单文件在哪里出错吗?< /P> < P>在部署ReISS哨兵时,你需要考虑的事情很少,在你的特定用例中可能出错:
Sentinel.conf
和Redis配置文件-Redis.conf
。在运行Sentinel时必须使用配置文件,因为系统将使用该文件来保存当前状态,在重新启动时将重新加载该状态。如果没有提供配置文件或配置文件路径不可写,Sentinel将拒绝启动如果有帮助,请告诉我 我只是假设您正在尝试从外部连接到pod。您正在连接到Kubernetes环境中不存在的127.0.0.1。您需要连接到Pod的IP,只需运行即可获得该IP
kubectl描述pod
或者,您可以创建一个服务,并在Sentinel中将该服务的名称用作env变量。您不能这样连接它。您必须检查Kubernetes上的服务。您可以看到Redis服务IP地址。您必须使用IP地址连接请检查服务器的端口26379是否打开?我遇到了相同的问题。我正在获取主吊舱的ip。但我不知道如何连接到这个吊舱。在我们的评论中,您说:或者您可以创建一个服务,并在启动Sentinel时将该服务的名称用作env变量。您能描述一下我是如何做到这一点的吗?每当我们创建服务时,Kubernetes都会自动填充某些环境变量,例如服务名称和端口。如果创建名为redis master的服务,Kubernetes将填充redis_master_service_HOST和redis_master_service_PORT。使用这些env变量获取主服务的IP和端口。