前言
相似于 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。
Helm,一个二进制工具,用来装置、降级、卸载 K8S 中的应用程序。
Helm Chart,一个 tgz 包,相似安卓的 APK。
K8S 利用打包成 Chart,通过 Helm 装置到 K8S 集群中。
更新历史
- 20200717 – 初稿 – 左程立
- 原文地址 – https://blog.zuolinux.com/2020/07/17/k8s-package-manager-helm.html
Helm 包管理工具
装置 Helm,解压到 /usr/loca/bin/ 下
wget https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz
增加国内仓库
helm repo add apphub https://apphub.aliyuncs.com
helm repo update
helm repo list
查找 nginx
helm search repo nginx
装置 nginx-ingress 到 K8S 中
helm install nginx apphub/nginx
如果有报错,有些旧仓库往会最新版 K8S,这里是 v1.18.2 依照,会报错,能够换个仓库或者下载下来批改后本地装置
报错
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind"Deployment"in version"extensions/v1beta1"
helm pull apphub/nginx-ingress --untar
grep -irl "extensions/v1beta1" nginx-ingress | grep deployment
grep -irl "extensions/v1beta1" nginx-ingress | grep deploy | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
helm install nginx1 ./nginx-ingress/
再装置一个 nginx-ingress
helm install nginx2 apphub/nginx
查看曾经装置了哪些
helm list
卸载
helm uninstall nginx
helm uninstall nginx2
在 K8S 中查看装置的利用
kubectl get pod
kubectl get service
Helm 相干术语
Chart
Helm 的利用包,采纳 tgz 格局。相似于 Yum 的 RPM,其蕴含了一组定义 Kubernetes 资源相干的 YAML 文件,也称为利用 Chart。
Repoistory
Helm 的利用仓库,保留了一系列的 Chart 利用包以供用户下载,并且提供了一个该 Repository 的 Chart 包清单文件以供查问。
Helm 能够同时治理多个不同的 Repository。
Helm 社区官网提供了 stable 和 incubator 仓库,用户也能够本人搭建仓库。
仓库能够是公共仓库,也能够是公有仓库。
Hub
不同的集体和组织提供的公共仓库造成了扩散和散布的 Helm 仓库,不利于查找,所以官网提供了 Helm Hub,各公共仓库能够注册到 Helm Hub 中以不便集中查找,Helm Hub 只是散布的仓库的集中展示中心。
仓库注册到 Helm Hub 时,会将 Chart 清单文件向 Helm Hub 同步一份,这样能够在 Helm Hub 集中展现仓库列表和各仓库中的 Chart 列表。
Chart 包也就是 tgz 文件实际上存储在各仓库中。Helm Hub 并不理论存储 Chart 包。Helm 只是在查问 Chart 时和 Helm Hub 有交互,其它操作都是和仓库间接交互的。
Release
在 K8S 集群上运行的 Chart 的一个实例。
在同一个集群上,一个 Chart 能够装置很屡次。
每次装置都会创立一个新的 Release。
例如一个 MySQL Chart,如果想在服务器上运行两个 MySQL 数据库,就能够把这个 Chart 装置两次。每次装置都会生成一个新的 Release。
结束语
Helm Chart 可帮忙 K8S 利用实现打包、共享、一键装置。
Helm Hub 收集了寰球的各公共仓库信息,以便用户能够集中查找,但 Helm Hub 并没有理论存储 Chart 包,只是通知用户你能够去哪里下载到 Chart 包。
分割我
微信公众号:zuolinux_com