1、Helm包管理工具介绍
-
Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
-
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
-
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
-
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
- Helm V3 与 V2 最大的区别在于去掉了tiller:
2、安装部署Helm并使用Helm安装redis
1.Helm安装:
下载软件包:helm-v3.1.1-linux-amd64.tar.gz
$ tar zxf helm-v3.1.1-linux-amd64.tar.gz
$ cd linux-amd64/
$ cp helm /usr/local/bin/
2.设置helm命令补齐:
echo "source <(helm completion bash)" >> ~/.bashrc
[root@server2 ~]# source .bash
[root@server2 ~]# helm
completion env install package repo show test verify
create get lint plugin rollback status uninstall version
dependency history list pull search template upgrade
3.搜索官方helm hub chart库:
$ helm search hub wordpress
4.Helm 添加第三方 Chart 库:
[root@server2 ~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts/
"stable" has been added to your repositories
[root@server2 ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@server2 helm]# helm repo add dandydev https://dandydevloper.github.io/charts
5.下载redis镜像到harbor仓库
[root@server1 harbor]# docker pull redis:6.0.7
6.0.7: Pulling from library/redis
bf5952930446: Pull complete
911b8422b695: Pull complete
093b947e0ade: Pull complete
c7616728f575: Pull complete
61a55f107028: Pull complete
0ee3e0cb4e07: Pull complete
Digest: sha256:0ab24e410ae42f99f1e861bd351b5ce7ca8c9eec7886c979a8650ba7fc18ad3b
Status: Downloaded newer image for redis:6.0.7
docker.io/library/redis:6.0.7
[root@server1 harbor]# docker tag redis:6.0.7 reg.westos.org/library/redis:6.0.7
[root@server1 harbor]# docker push reg.westos.org/library/redis:6.0.7
The push refers to repository [reg.westos.org/library/redis]
ffb955c9fac4: Pushed
400f8c62882a: Pushed
023f5e28d8dc: Pushed
ab0653e928a7: Pushed
09b6608896c0: Pushed
d0f104dc0a1f: Pushed
6.0.7: digest: sha256:52aaa9774c18cbe04da6c241c4afc4ff63f7ac2999177f05df40de884167794a size: 1572
6.下载redis-ha镜像包
helm pull dandydev/redis-ha
[root@server2 helm]# ls
helm-v3.4.1-linux-amd64.tar.gz linux-amd64 redis-ha-4.12.9.tgz
tar zxf redis-ha-4.12.9.tgz
[root@server2 helm]# ls
helm-v3.4.1-linux-amd64.tar.gz linux-amd64 redis-ha redis-ha-4.12.9.tgz
[root@server2 helm]# cd redis-ha/
[root@server2 redis-ha]# ls
Chart.yaml ci README.md templates values.yaml
7.修改values.yaml内容
[root@server2 redis-ha]# vim values.yaml
这里有两个地方 改成hardAntiAffinity: false #见截图
8.修改managed-nfs-storage为默认模式(如果没有做,需要做)
[root@server2 redis-ha]# kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
[root@server2 redis-ha]# kubectl get storageclasses.storage.k8s.io
## 查看managed-nfs-storage模式
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
managed-nfs-storage (default) k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 6d2h
[root@server2 redis-ha]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-redis-ha-server-0 Pending 17m
www-web-0 Bound pvc-384aedac-8048-49e6-9cf8-cce03dc439b1 1Gi RWO managed-nfs-storage 6d1h
www-web-1 Bound pvc-d94eba35-4b78-4c54-9aa7-5d6b27f6e54d 1Gi RWO managed-nfs-storage 6d1h
www-web-2 Bound pvc-dc089bbe-4668-4f39-877a-75ed4a632181 1Gi RWO managed-nfs-storage 6d1h
www-web-3 Bound pvc-3b157d49-e3c4-41d7-b382-6802e1e0c126 1Gi RWO managed-nfs-storage 6d1h
www-web-4 Bound pvc-0a23601a-24aa-4eff-8377-0b1cdf454b8a 1Gi RWO managed-nfs-storage 6d1h
[root@server2 redis-ha]# kubectl delete pvc --all
persistentvolumeclaim "data-redis-ha-server-0" deleted
persistentvolumeclaim "www-web-0" deleted
persistentvolumeclaim "www-web-1" deleted
persistentvolumeclaim "www-web-2" deleted
persistentvolumeclaim "www-web-3" deleted
persistentvolumeclaim "www-web-4" deleted
[root@server2 redis-ha]# kubectl get pvc
No resources found in default namespace.
9.安装redis
[root@server2 redis-ha]# helm install redis-ha . ##安装redis
10.卸载
[root@server2 redis-ha]# helm uninstall redis-ha
成功部署redis-ha