k8s部署redis cluster

环境信息:

k8s:

k8s版本:1.23.17

master01:192.168.66.50

master02:192.168.66.55

master03:192.168.66.56

etcd01:192.168.66.58

etcd02:192.168.66.59

etcd03:192.168.66.57

ingress01:192.168.66.52

node01:192.168.66.51

node02:192.168.66.53

存储节点使用nfs存储:

192.168.66.40

redis是有状态的服务,所以我们在k8s部署redis cluster需要statefuset控制器部署,准备部署reids cluster是三主三从的集群

1:部署reids cluster的前期准备:

创建nfs共享存储

 在192.168.66.40服务器上部署nfs

yum  install nfs-utils rpcbind

创建共享存储目录,存储路径:

mkdir -pv /date/redis{0..5}

ls  -lh /data

[root@docker ~]# ls -lh /data
total 0
drwxr-xr-x. 2 root root 59 Jul 24 21:53 redis0
drwxr-xr-x. 2 root root 59 Jul 24 21:54 redis1
drwxr-xr-x. 2 root root 59 Jul 24 21:54 redis2
drwxr-xr-x. 2 root root 59 Jul 24 21:53 redis3
drwxr-xr-x. 2 root root 59 Jul 24 21:54 redis4
drwxr-xr-x. 2 root root 59 Jul 24 21:54 redis5

验证:在k8s上的node节点上测试,是否可以挂在nfs共享盘

# showmount -e 192.168.66.40

 

2:在k8s上面开始部署redis cluster:

a:创建pv,sc,headless service和comfigmap

pv创建,编写yaml文件,需要创建6个pv,每个redis节点挂在一个pv

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-redis-pv0
spec:
  storageClassName: redis-sc
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.66.40
    path: "/data/redis0"

#kubectl apply -f redis-pv.yaml

b:创建sc,即StorageCluster类型存储,之后的pvc就是依赖于StorageCluster创建

[root@master03 redis_cluster_yaml]# vim redis-sc.yaml

apiVersio

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Kubernetes部署 Redis Cluster 集群,可以按照以下步骤进行: 1. 创建 Redis ConfigMap 首先,需要创建一个 Redis 配置文件 ConfigMap。可以使用以下命令创建: ``` kubectl create configmap redis-conf --from-file=redis.conf ``` 其中,`redis.conf` 是 Redis 配置文件的名称。可以根据实际情况进行修改。 2. 创建 Redis StatefulSet 接下来,可以创建 Redis StatefulSet。可以使用以下 YAML 文件作为模板: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-cluster spec: serviceName: redis-cluster replicas: 6 selector: matchLabels: app: redis-cluster template: metadata: labels: app: redis-cluster spec: containers: - name: redis image: redis:6.0.9 ports: - containerPort: 6379 name: client - containerPort: 16379 name: gossip volumeMounts: - name: config mountPath: /usr/local/etc/redis/redis.conf subPath: redis.conf command: - sh - -c - | if [ -n "${POD_NAME}" ]; then sed -i "s/%cluster-name%/redis-cluster/g" /usr/local/etc/redis/redis.conf sed -i "s/%node-name%/${POD_NAME}/g" /usr/local/etc/redis/redis.conf fi volumes: - name: config configMap: name: redis-conf volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ``` 在上述 YAML 文件中,`replicas` 字段指定了 Redis 集群的节点数,`volumeClaimTemplates` 字段指定了每个节点的数据卷大小。另外,还需要注意以下几点: - `serviceName` 字段需要与 `metadata.name` 字段相同。 - `selector.matchLabels` 字段需要与 `metadata.labels` 字段相同。 - `command` 字段用于修改 Redis 配置文件中的节点名称和集群名称。 3. 创建 Redis Service 最后,需要创建 Redis Service。可以使用以下 YAML 文件作为模板: ``` apiVersion: v1 kind: Service metadata: name: redis-cluster labels: app: redis-cluster spec: ports: - name: client port: 6379 targetPort: 6379 - name: gossip port: 16379 targetPort: 16379 clusterIP: None selector: app: redis-cluster ``` 在上述 YAML 文件中,`clusterIP` 字段需要设置为 `None`,以便创建一个 Headless Service,让每个 Redis 节点可以通过 DNS 解析到自己的 IP 地址。 4. 部署 Redis Cluster 完成以上步骤后,可以使用以下命令部署 Redis Cluster: ``` kubectl apply -f redis-cluster.yaml ``` 其中,`redis-cluster.yaml` 是包含 Redis StatefulSet 和 Redis Service 的 YAML 文件。可以根据实际情况进行修改。 部署完成后,可以使用以下命令查看 Redis Cluster 的状态: ``` kubectl exec -it redis-cluster-0 -- redis-cli cluster nodes ``` 其中,`redis-cluster-0` 是 Redis Cluster 中的一个节点名称。可以根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值