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 中的配置項
即可。