暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用redis-operator(OT-CONTAINER-KIT)快速部署一个单节点Redis

20

OT-CONTAINER-KIT/redis-operator

OT-CONTAINER-KIT/redis-operator是由 OT-Container-Kit团队开发的 Kubernetes Operator,用于在 Kubernetes 环境中简化和自动化 Redis 集群的部署与管理。

github地址:https://github.com/OT-CONTAINER-KIT/redis-operator
官网地址:https://redis-operator.opstree.dev/docs/

今天,我们一起来利用它来部署一个简易的单节点Redis。

部署redis-operator

Helm在线部署

# 添加源
helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/

# 安装
helm upgrade redis-operator ot-helm/redis-operator \
  --install --create-namespace --namespace redis-operator-system
  
kubectl get pod -n  redis-operator-system

Helm离线部署

查看Release列表:https://github.com/OT-CONTAINER-KIT/helm-charts/releases

wget https://github.com/OT-CONTAINER-KIT/helm-charts/releases/download/redis-operator-0.22.1/redis-operator-0.22.1.tgz

helm upgrade redis-operator ./redis-operator-0.22.1.tgz \
  --install --create-namespace --namespace redis-operator-system

kubectl get pod -n  redis-operator-system 

注:不同版本的 Operator 兼容的Redis版本不同,请参考官方兼容表。

部署Redis单节点

我们可以从官方GitHub仓库的example/v1bete2目录下找到密码安全版本的单节点部署YAML文件: https://github.com/OT-CONTAINER-KIT/redis-operator/blob/main/example/v1beta2/password_protected/standalone.yaml

以下是单节点Redis配置示例(含注释说明):

---
apiVersion: redis.redis.opstreelabs.in/v1beta2   # 使用 OpstreeLabs Redis Operator 的 API 版本
kind: Redis                                      # 自定义资源类型:Redis
metadata:
  name: redis-standalone                         # Redis 实例名称(用于生成 Pod、Service 等资源名)
  namespace:redis-operator-system
spec:
  kubernetesConfig:                              # 与 Kubernetes 相关的配置
    image: quay.io/opstree/redis:v7.0.12         # Redis 镜像地址(Opstree 官方提供的版本)
    imagePullPolicy: IfNotPresent                # 镜像拉取策略:本地没有才拉取
    redisSecret:                                 # Redis 密码从 Secret 中读取
      name: redis-secret                         # Secret 名称
      key: password                              # Secret 中存放密码的键(key)

  storage:                                       # Redis 持久化存储配置(用于保存数据)
    volumeClaimTemplate:                         # PVC 模板(Operator 自动创建 PVC)
      spec:
        # storageClassName: standard             # (可选)指定存储类,不写则使用默认 StorageClass
        accessModes: ["ReadWriteOnce"]           # 访问模式:单节点可读写
        resources:
          requests:
            storage: 1Gi                         # 申请 1Gi 的持久化存储空间

  redisExporter:                                 # Redis Exporter(用于 Prometheus 监控)
    enabled: false                               # 是否启用监控容器,这里禁用
    image: quay.io/opstree/redis-exporter:v1.44.0 # Exporter 镜像(即使禁用也可保留)

  podSecurityContext:                            # Pod 的安全上下文配置
    runAsUser: 1000                              # 以 UID=1000 的非 root 用户运行 Redis 进程
    fsGroup: 1000                                # 共享卷的文件属组设为 GID=1000

创建Secret

在创建Redis实例之前,我们首先创建一个Secret(用于存储Redis密码)。

kubectl create secret generic redis-secret \
  --from-literal=password='MyPassword' \
  -n redis-operator-system

什么是Secret?

Kubernetes 中的配置文件(如 Deployment、Pod、CRD)一般都是明文存放的,这会造成一定的安全风险。Secret的作用就是将密码从配置中分离出来,安全地保存,然后通过挂载或环境变量的方式注入到Pod里。

部署Redis实例

kubectl apply -f standalone.yaml

kubectl get pods -n redis-operator-system
kubectl get svc -n redis-operator-system

默认Redis的service类型是ClusterIP,如果我们想外部访问,可以改成NodePort或LoadBalancer。

使用Port Forward临时访问

kubectl port-forward svc/redis-standalone 6379:6379 -n redis-operator-system

Port Forward是K8s中一种临时访问Pod或Service的方式,意思是将你本地的某个端口,临时映射到 Kubernetes 集群中某个 Pod 或 Service 的端口上。这样我们就可以在本地访问集群中的端口。

另起一个终端访问Redis。

redis-cli -h 127.0.0.1 -p 6379 -a MyPassword

小结

除了单节点,OT-CONTAINER-KIT/redis-operator还支持部署RedisCluster、RedisReplication、RedisSentinel,感兴趣的小伙伴可参考官方文档继续探索。


推荐阅读:

Sealos x Kubernetes:让集群部署更简单

谈谈对数据库K8S Operator的理解

如何理解K8S中的CRD

如何查看k8s Pod的CPU&内存限制—从Pod Spec到宿主机cgroup

通过k8s快速部署一个PolarDB-X分布式集群

Prometheus 在 Kubernetes 中的 Target 管理实践

#运维 #K8s #Redis

✪ ~本文是小编的第183篇文章,目标是累计输出 1000 篇优质内容,也始终提醒自己:保持学习、保持记录、保持分享,希望以上内容能给你带来一点帮助~


 or  


👇👇👇 

文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论