k8s operator redis-operator实例

本文详细介绍了使用operator-sdk创建Kubernetes自定义资源CRD的全过程,包括创建Operator项目、添加API、控制器,生成调度器代码,以及实现自定义资源的增删改查接口。通过HTTP操作自定义资源,方便paas平台集成。

1.创建

operator-sdk new redis-operator-test

2.添加api

operator-sdk add api --api-version=app.example.com/v1alpha1 --kind=RedisService

3.添加controller

operator-sdk add controller --api-version=app.example.com/v1alpha1 --kind=RedisService

4.调度器生成代码

operator-sdk generate k8s

5.添加api部分自定义资源
在这里插入图片描述

6.自定义资源(deployment和service)
在这里插入图片描述
在这里插入图片描述

7.逻辑代码部分

7.1 检查自定义资源是否存在,不存在删除下面资源,保证资源可控

7.2 创建资源

7.3 检查lebal变化更新资源

在这里插入图片描述

8.封装自定义资源的接口

封装cr的增删改查接口,方便paas集成,通过http操作资源

在这里插入图片描述

链接:

http://gitlab.shein.com:8088/caihuayang/redis-operator-test.git

https://blog.gmem.cc/extend-kubernetes-with-custom-resources

https://github.com/kubernetes/client-go/blob/master/kubernetes/typed/core/v1/pod.go

https://github.com/martin-helmich/kubernetes-crd-example/blob/master/main.go

### 部署带有单个主节点和两个从节点的Redis集群到Kubernetes #### 准备工作 为了简化状态应用在Kubernetes上的部署复杂度,可以利用已有的指南来设置一个包含一主两从结构的Redis集群[^1]。 #### 使用Redis Operator 确保所使用的Kubernetes版本不低于1.19以便兼容Redis Operator的要求。该Operator已经包含了所需依赖项,无需额外下载其他组件即可完成安装准备[^3]。 #### 创建命名空间与资源对象定义文件 建议先创建一个新的命名空间用于隔离此项目中的所有资源,并编写描述Pod、Service以及StatefulSet等必要资源配置的对象定义YAML文件。 ```yaml apiVersion: v1 kind: Namespace metadata: name: redis-cluster --- apiVersion: apps/v1 kind: StatefulSet ... spec: serviceName: "redis" replicas: 3 template: spec: containers: ... volumeMounts: - mountPath: "/data" name: redis-data volumeClaimTemplates: - metadata: name: redis-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi ``` 上述代码片段展示了部分配置样例,其中`replicas`字段设定了副本数量为三个实例以匹配所需的架构设计;同时通过PersistentVolumeClaims实现了数据持久化存储支持。 #### 设置Master-Slave关系 当向集群写入的数据连接中断后,预期行为是由另一个成员晋升为主服务器继续提供服务,在原主服务器恢复运行之后它将以新任主服务器下属的身份重新加入集群作为其备份节点之一[^2]。 #### 启动容器并验证部署情况 对于本地测试环境而言,可以通过Docker命令快速启动具备指定配置参数的服务端口映射及卷挂载选项下的Redis实例[^4]: ```bash docker run -d --privileged=true \ -p 6379:6379 \ -v /docker/redis/redis.conf:/etc/redis/redis.conf \ -v /docker/redis/data:/data \ --name redistest2 \ registry.docker-cn.com/library/redis:latest \ redis-server /etc/redis/redis.conf --appendonly yes ``` 然而请注意这仅适用于初步调试阶段而非生产环境中推荐的做法。实际操作时应遵循官方文档指导使用Helm Chart或其他自动化工具来进行更安全可靠的部署流程管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值