K8S实战(十九)| K8S 包管理 Helm

前言

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

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

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

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

查找 nginxapp

helm search repo nginx

安装 nginx-ingress 到 K8S 中工具

helm install nginx apphub/nginx

若是有报错,有些旧仓库往会最新版 K8S,这里是 v1.18.2按照,会报错,能够换个仓库或者下载下来修改后本地安装ui

报错
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-ingressspa

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

微信扫码关注