容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
helm 安装 Redis 1 主 2 从 3哨兵
## 资源清单 > 本文安装 `Redis` 依赖 `K8S集群` 、`helm`,本文不提供 `K8S集群` 和 `helm` 安装方式 > 使用此文档部署,需要自行解决 storageClass 问题 ( NFS, ceph, openebs等 ) | 软件 | 版本 | | --- | --- | | chart | 16.11.2 | | redis | 6.2.7 | | kubernetes | v1.19.3 | | helm | v3.8.1 | ## `helm` 安装 `redis` 集群 ### 1\. 添加 `redis` 的仓库 ```shell $ helm repo add bitnami https://charts.bitnami.com/bitnami ``` ### 2\. 查询 `redis` 资源 ```shell $ helm repo update $ helm search repo redis NAME CHART VERSION APP VERSION DESCRIPTION bitnami/redis 16.11.2 6.2.7 Redis(R) is an open source, advanced key-value ... bitnami/redis-cluster 7.6.1 6.2.7 Redis(TM) is an open source, scalable, distribu... ``` ### 3\. 拉取 `redis chart` 到本地 ```shell $ mkdir -p /root/redis/ && cd /root/redis/ # 拉取 chart 到本地 /root/redis/ 目录 $ helm pull bitnami/redis --version 16.11.2 $ tar -zxvf redis-16.11.2.tgz $ cp redis/values.yaml ./values-test.yaml # 查看当前目录层级 $ tree -L 2 . ├── redis │ ├── Chart.lock │ ├── charts │ ├── Chart.yaml │ ├── img │ ├── README.md │ ├── templates │ ├── values.schema.json │ └── values.yaml ├── redis-16.11.2.tgz └── values-test.yaml ``` ### 4\. 对本地 `values-test.yaml` 修改 ```shell $ kubectl get storageclasses.storage.k8s.io NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE openebs-jiva-default jiva.csi.openebs.io Delete Immediate true 33d ``` ```shell $ cat values-test.yaml global: # 全局定义 storageClass 使用 openebs storageClass: "openebs-jiva-default" # 定义 redis 集群认证密码 redis: password: "redis123" fullnameOverride: "redis" # 定义集群的模式 Allowed values: `standalone` or `replication` architecture: replication # redis 服务配置定义 commonConfiguration: |- # Enable AOF https://redis.io/topics/persistence#append-only-file appendonly yes # Disable RDB persistence, AOF persistence already enabled. save "" # master 节点配置信息 master: containerPorts: redis: 6379 kind: StatefulSet persistence: enabled: true accessModes: - ReadWriteOnce size: 8Gi service: type: ClusterIP ports: redis: 6379 # replica 节点配置信息 replica: replicaCount: 3 containerPorts: redis: 6379 persistence: enabled: true storageClass: "" accessModes: - ReadWriteOnce size: 8Gi service: type: ClusterIP ports: redis: 6379 # sentinel 节点配置信息 sentinel: enabled: true containerPorts: sentinel: 26379 persistence: enabled: true storageClass: "" accessModes: - ReadWriteOnce size: 100Mi service: type: ClusterIP ports: redis: 6379 sentinel: 26379 ``` ### 5\. 安装 `redis` 集群 ```shell # 创建 test-middleware 名称空间 $ kubectl create ns test-middleware # 安装 redis 集群 $ helm -n test-middleware install redis redis -f values-test.yaml | tee test.log ## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE -n 指定 kubernetes 集群名称空间 -f 指定使用的配置文件,文件中定义的配置可以覆盖 redis/values.yaml 文件中配置 NAME: redis LAST DEPLOYED: Sat Jun 4 06:05:40 2022 NAMESPACE: test-middleware STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: redis CHART VERSION: 16.11.2 APP VERSION: 6.2.7 ** Please be patient while the chart is being deployed ** Redis® can be accessed via port 6379 on the following DNS name from within your cluster: redis.test-middleware.svc.cluster.local for read only operations For read/write operations, first access the Redis® Sentinel cluster, which is available in port 26379 using the same domain name above. To get your password run: export REDIS_PASSWORD=$(kubectl get secret --namespace test-middleware redis -o jsonpath="{.data.redis-password}" | base64 -d) To connect to your Redis® server: 1. Run a Redis® pod that you can use as a client: kubectl run --namespace test-middleware redis-client --restart='Never' --env REDIS_PASSWORD=$REDIS_PASSWORD --image docker.io/bitnami/redis:6.2.7-debian-10-r23 --command -- sleep infinity Use the following command to attach to the pod: kubectl exec --tty -i redis-client \ --namespace test-middleware -- bash 2. Connect using the Redis® CLI: REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis -p 6379 # Read only operations REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis -p 26379 # Sentinel access To connect to your database from outside the cluster execute the following commands: kubectl port-forward --namespace test-middleware svc/redis 6379:6379 & REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379 ``` ### 6\. 查看部署的 `redis` 集群 ```shell $ helm -n test-middleware list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION redis test-middleware 1 2022-06-04 06:05:40.507941913 -0400 EDT deployed redis-16.11.2 6.2.7 $ kubectl get pods --namespace=test-middleware NAME READY STATUS RESTARTS AGE redis-node-0 2/2 Running 0 3h45m redis-node-1 2/2 Running 0 3h44m redis-node-2 2/2 Running 0 3h42m ``` ``` $ kubectl -n test-middleware get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE redis-data-redis-node-0 Bound pvc-8bdc6235-be2a-488c-bc3b-a21ba6309a10 8Gi RWO openebs-jiva-default 3h46m redis-data-redis-node-1 Bound pvc-1ce07a36-a3ab-44d1-85b5-265059886701 8Gi RWO openebs-jiva-default 3h44m redis-data-redis-node-2 Bound pvc-3a897609-981e-4d99-a12d-afb5e2123126 8Gi RWO openebs-jiva-default 3h42m sentinel-data-redis-node-0 Bound pvc-43f829ef-c0e0-4ccc-a638-0f377c2d984f 100Mi RWO openebs-jiva-default 3h46m sentinel-data-redis-node-1 Bound pvc-2f640247-6fcd-4edd-a8d4-e26bc2460ef0 100Mi RWO openebs-jiva-default 3h44m sentinel-data-redis-node-2 Bound pvc-1e87b557-d484-40c6-8853-6e24d5542490 100Mi RWO openebs-jiva-default 3h42m ``` ### 7\. 验证 redis 集群 ``` # 登陆 redis 集群 $ export REDIS_PASSWORD=$(kubectl get secret --namespace test-middleware redis -o jsonpath="{.data.redis-password}" | base64 -d) $ kubectl run --namespace test-middleware redis-client --restart='Never' --env REDIS_PASSWORD=$REDIS_PASSWORD --image docker.io/bitnami/redis:6.2.7-debian-10-r23 --command -- sleep infinity $ kubectl exec --tty -i redis-client --namespace test-middleware -- bash # 查看 redis 主从集群 I have no name!@redis-client:/$ REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis -p 6379 redis:6379> info Replication # Replication role:master connected_slaves:2 slave0:ip=redis-node-1.redis-headless.test-middleware.svc.cluster.local,port=6379,state=online,offset=4482538,lag=0 slave1:ip=redis-node-2.redis-headless.test-middleware.svc.cluster.local,port=6379,state=online,offset=4482538,lag=1 master_failover_state:no-failover master_replid:8e48433d13ae59dbe2703a704504a98ecc61076a master_replid2:0000000000000000000000000000000000000000 master_repl_offset:4482538 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:3433963 repl_backlog_histlen:1048576 # 查看 Sentinel 节点 I have no name!@redis-client:/$ REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h redis-headless -p 26379 redis-headless:26379> info Sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=redis-node-0.redis-headless.test-middleware.svc.cluster.local:6379,slaves=2,sentinels=3 ``` ## 参考文档 ``` https://artifacthub.io/packages/helm/bitnami/redis ```
adouk
2024年1月24日 13:11
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码