如何在k8s集群中搭建一个一主两从三哨兵集群的redis 集群中需要设置密码,并且所有文件都写到一个yaml文件内
时间: 2024-09-18 11:12:30 浏览: 43
在 Kubernetes (k8s) 集群中搭建 Redis 一主两从三哨兵集群,你需要按照以下步骤操作,并且将配置整合到一个 YAML 文件中:
1. **创建服务**: 首先,在 YAML 文件中定义 `Service` 对象,用于对外提供访问。例如,你可以创建一个名为 `redis-master` 的 Service,它指向 Redis 主节点。
```yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 6379
targetPort: 6379
type: ClusterIP
```
2. **配置主节点**: 创建 `StatefulSet` 来管理主节点,包含 Redis 容器,设置环境变量如 PASSWORD 设置密码。比如:
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-master
spec:
replicas: 1
serviceName: redis-master
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:alpine
env:
- name: REDIS_PASSWORD
value: <your_password_here>
ports:
- containerPort: 6379
```
3. **添加从节点和哨兵**: 对于从节点和哨兵,同样创建 `StatefulSets`。例如,一个从节点配置:
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-slave
labels:
role: slave
spec:
replicas: 2
serviceName: redis-slave
selector:
matchLabels:
app: redis
role: slave
template:
metadata:
labels:
app: redis
role: slave
spec:
...
containers:
- name: redis
command: ["redis-server", "--slaveof", "redis-master-service-name", "6379"]
...
```
4. **创建哨兵**: 创建一个哨兵节点并配置它们监视其他节点:
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-sentinel
labels:
role: sentinel
spec:
replicas: 3
serviceName: redis-sentinel
selector:
matchLabels:
app: redis
role: sentinel
template:
metadata:
labels:
app: redis
role: sentinel
spec:
...
containers:
- name: redis Sentinel
command: ["sentinel"]
args: ["--sentinel", "master(redis-master-service-name)", "my-mast-port", "6379"]
...
```
5. **合并配置到单个 YAML 文件**:
将上述内容整合到一个 YAML 文件中,确保各个部分之间有适当的顺序和嵌套结构。
完成上述步骤后,你应该有一个包含一主两从三哨兵的 Redis 集群,所有的配置都在一个 YAML 文件中定义。
阅读全文