前言

类似于 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。

Helm, 一个二进制工具,用来安装、升级、卸载 K8S 中的应用程序。

Helm Chart,一个 tgz 包,类似安卓的 APK。

K8S 应用打包成 Chart,通过 Helm 安装到 K8S 集群中。

更新历史

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

微信扫码关注


左程立
71 声望13 粉丝