helm部署redis哨兵及报错处理

默认下载的yanl文件是不带资源配置信息,需要在redis-values.yaml文件中指定资源配置

master:
  resources:
    requests:
      memory: "512Mi"
      cpu: "200m"
    limits:
      memory: "1Gi"
      cpu: "500m"
replica:
  resources:
    requests:
      memory: "256Mi"
      cpu: "100m"
    limits:
      memory: "512Mi"
      cpu: "200m"

安装时可以指定已经存在的pvc

helm install my-release --set master.persistence.existingClaim=redis/PVC_NAME oci://REGISTRY_NAME/REPOSITORY_NAME/redis --namespace redis

为多个节点指定pvc

如果既需要为 Redis 主节点 (master) 又需要为副本节点 (replica) 指定 PersistentVolumeClaim (PVC),那么需要同时设置
master.persistence.existingClaimreplica.persistence.existingClaim,当然master、replica可以共用一个pvc,同样这些配置也可以写在yaml文件中。

helm install redis \
  --set master.persistence.existingClaim=redis/redis-pvc \
  --set replica.persistence.existingClaim=redis/redis-pvc \
  oci://registry-1.docker.io/bitnamicharts/redis \
  --namespace redis

如果获取了yaml文件到本地可以执行下面的命令

如果 PVC 名称包含命名空间前缀 redis/,请去掉该前缀,因为 PVC 名称不应包含命名空间前缀。

helm install redis \
  -f redis-values.yaml \
  --set master.persistence.existingClaim=redis-pvc \
  --set replica.persistence.existingClaim=redis-pvc \
  bitnami/redis \
  --namespace redis

总结下 执行install之前需要在redis-values.yaml中指定master、replica的resource、然后安装的时候指定pvc,当然不指定pvc会系统自动生成。

排查问题

如果出现部署成功但是pod处于pendingCrashLoopBackOff,可以查看日志检查错误,同时检查pv、pvc状态及空间分配是否不合理
如果不合理可以删除现有的pv、pvc,注意需要先删pvc再删除pv,
可以先检查卸载掉部署的redis

helm list -n namespace
helm uninstall name -n namespace

检查容器的日志以获取更多信息。可以使用以下命令查看容器日志。排查日志是一项必修课

kubectl logs redis-master-0 -n redis

日志可能会提供有关容器为何失败的更多详细信息。
比如下面的报错
在这里插入图片描述

翻阅项目文档会发现
在这里插入图片描述

redis重启启动加载数据的时候会提示 :Can’t open the append-only file: Permission denied
这时可以检查redis-values.yaml文件该字段
在这里插入图片描述

可以修改属性为no

appendonly: no

再次执行安装并检查pod状态

root@k8smaster1:~# kubectl get pods -n redis -o wide
NAME               READY   STATUS    RESTARTS   AGE   IP               NODE       NOMINATED NODE   READINESS GATES
redis-client       1/1     Running   0          24m   10.244.185.208   k8snode2   <none>           <none>
redis-master-0     1/1     Running   0          30m   10.244.249.11    k8snode1   <none>           <none>
redis-replicas-0   1/1     Running   0          30m   10.244.185.206   k8snode2   <none>           <none>
redis-replicas-1   1/1     Running   0          29m   10.244.249.12    k8snode1   <none>           <none>
redis-replicas-2   1/1     Running   0          29m   10.244.185.207   k8snode2   <none>           <none>

至此安装完毕!

### 部署高可用 Redis 的方法 为了实现 Redis 的高可用架构(1 主 2 从 3 哨兵),可以通过 Helm Chart 来简化部署过程。以下是关于如何使用 Helm 安装并配置 Redis 高可用架构的具体说明。 #### 使用 Bitnami Redis Helm Chart Bitnami 提供了一个官方支持的 Redis Helm Chart,能够轻松创建具有主从复制和哨兵功能的高可用环境[^1]。该 Chart 支持自定义参数来调整主节点数量、从节点数量以及哨兵的数量。 安装前需确保 Kubernetes 集群已正确设置,并且 Helm 已经初始化完成。 #### 添加 Helm Repository 首先添加 Bitnami 的 Helm repository: ```bash helm repo add bitnami https://charts.bitnami.com/bitnami ``` #### 自定义 Values 文件 创建一个 `values.yaml` 文件来自定义 Redis 配置: ```yaml architecture: sentinel replica: replicas: 2 # 设置两个从节点 sentinel: enabled: true replicas: 3 # 启用三个哨兵实例 master: persistence: size: 8Gi # 调整持久化存储大小 resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "1Gi" cpu: "1" ``` 此文件指定了所需的架构为 Sentinel 模式,设置了两个副本作为从属节点,并启用了三个哨兵实例用于监控主节点的状态变化。 #### 执行 Helm Install 命令 利用上述 values 文件执行安装命令: ```bash helm install my-release bitnami/redis -f values.yaml --namespace redis-ns --create-namespace ``` 这一步会基于指定的 configuration 创建包含一个主节点、两个从节点及三个哨兵的服务集合。 #### 访问 Redis 实例 一旦 Pod 和 Service 成功启动后,可通过内部 DNS 名称访问 Redis Master 或者通过 StatefulSet 中定义的名字空间定位各个组件。 例如连接到 Redis Master 可尝试如下方式: ```bash kubectl exec -it $(kubectl get pods -l app.kubernetes.io/name=redis,app.kubernetes.io/component=master -o jsonpath='{.items[0].metadata.name}') -- redis-cli ping ``` 以上操作验证了 Redis 是否正常工作并通过 CLI 测试连通性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值