1、helm的安装不做赘述,网上有很多教程。
2、helm添加Chart库
添加微软库
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
目前我本地的Chart库如下
添加了之后,查询redis结果如下
helm search repo redis -l 可以查看历史版本
3、
拉取部署文件: helm pull stable/redis-ha
不指定标签时默认拉取最新版本,拉取的是一个压缩包
解压
tar zxf redis-ha-4.4.4.tgz
就会生成 redis-ha 的文件夹
4、
cd redis-ha
ls
可以通过vs code打开,看到格式如下
同其他自定义服务的部署一样,部署文件中的变量值都保存在 values.yaml中,所以我们在部署应用时只需要更改values.yaml文件即可。
我只改了这里的值,一主一从即可。
直接使用helm 命令安装
helm install redis . -f /values.yaml -n middleware-test
创建后查看:
创建了两个pod,两个pvc 和一个statefulset控制器。
因为一主一从,所以这里根据redis chart的配置,自动创建了两个pvc。
5、redis的对外访问
apiVersion: v1
kind: Service
metadata:
name: redis-ha-service #名称:随意
labels:
app: redis #部署的 redis-ha 名称
spec:
ports:
- name: redis #部署的 redis-ha 名称
protocol: "TCP" #TCP 协议
port: 26379
targetPort: 6379
nodePort: 30379 #此为外部连接k8s redis-ha 服务的端口
selector:
statefulset.kubernetes.io/pod-name: redis-redis-ha-server-0
type: NodePort
创建一个 NodePort 形式的service,提供对外访问。
kubectl apply -f service.yaml -n **
此时,可以通过 任意一个 master主机IP+30379 访问到redis
6、redis 的 upgrade
比如修改了 values.yaml中的 replicas 数量
helm upgrade redis .
7、其他命令
查看历史方便回滚:helm -n redis history
删除:helm uninstall redis
8、
遇到的问题
网上的教程,都是建议在k8s中部署nfs,配合部署redis。
我们公司部署的是 glusterfs 分布式存储,所以有些配置项要做调整,才能正常使用。
通过查看redis的各个配置文件,redis-ha-statefulset.yaml 这个文件中有持久化相关配置
取值是 values.yaml 中的persistentVolume 下的 storageClass。
通过下面的命令,可查到,我们公司的glusterfs 搭建时,已经安装好了 storageclass的,可以直接使用。
所以我改了 values.yaml 中的配置项
即可。