Helm 使用介绍(K8s 包管理器)
Posted 愿许浪尽天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Helm 使用介绍(K8s 包管理器)相关的知识,希望对你有一定的参考价值。
Helm 使用介绍(K8s 包管理器)
一、Helm 简介
Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts(软件包)。相当于是 Ubuntu 中的 apt
或 CentOS 中的 yum
工具,Helm Chart 主要就是用来封装 K8s 原生应用程序的一系列 YAML 文件。
我们通过使用 Helm,便不再需要重复性的编写 YAML 文件。可以 用简单的方式在 K8s 上查找、安装、升级、回滚、卸载应用程序。
因为 Helm v2
版本和 v3
版本 存在兼容性问题:官方介绍,所以我们下面主要介绍一些关于 Helm v3
版本的功能以及特性。
1.Helm 组件介绍
组件 | 作用 |
---|---|
Chart(软件包) | 主要就是用来封装 K8s 原生应用程序的一系列 YAML 文件。 |
Release(应用) | 可以说是在 Kubernetes 上运行的 Chart 实例。 |
Repository(仓库) | 主要就是用来存放和共享 Chart 使用,相当于是 GitHub,不过这里主要是供 Kubernetes 使用。 |
总结: 我们可以使用 Helm 来安装 Chart 到 K8s 上,安装后会创建出对应的 Release,同时我们还可以在 Repositorys 中寻找 Chart。
2.Helm 工作原理
- Helm V3 版本:
Helm --> K8s
;即直接通过调用/root/.kube/config
文件来获取 K8s 权限,由此和 Kube-APIServer 交互操作。
二、使用介绍
在我们使用 Helm 前,需要在已经存在的 Kubernetes 集群上进行使用,我们这里使用的是前面文章中的安装环境:安装 K8s 传送门;同时我们还需要注意,Helm 和 K8s 之间使用的版本是存在兼容性问题的。
1.在 Kubernetes 上安装 Helm
[root@k8s-master01 ~]# wget https://get.helm.sh/helm-v3.6.2-linux-amd64.tar.gz
[root@k8s-master01 ~]# tar zxf helm-v3.6.2-linux-amd64.tar.gz
[root@k8s-master01 ~]# mv linux-amd64/helm /usr/local/bin
[root@k8s-master01 ~]# helm version
version.BuildInfoVersion:"v3.6.2", GitCommit:"ee407bdf364942bcb8e8c665f82e15aa28009b71", GitTreeState:"clean", GoVersion:"go1.16.5"
- 当我们使用
helm version
命令可以出现版本号时,便算是安装完成。
2.Helm 常见命令介绍
1)配置 Chart 仓库
[root@k8s-master01 ~]# helm repo add stable https://mirror.azure.cn/kubernetes/charts # 微软仓库
[root@k8s-master01 ~]# helm repo add aliyuncs https://apphub.aliyuncs.com # 阿里云仓库
[root@k8s-master01 ~]# helm repo update
2)查看配置的仓库
[root@k8s-master01 ~]# helm repo list # 查看配置的仓库
[root@k8s-master01 ~]# helm search repo stable # 查看 stable 仓库中的所有软件包
helm search
后面可以使用hub
或repo
命令,分别表示 官方仓库和下载到本地的仓库。- 同时,我们可以在 Helm 的 Hub 仓库中寻找自己想要的 Chart 仓库:官方仓库
3)删除配置的仓库
[root@k8s-master01 ~]# helm repo remove stable
4)安装 Chart
[root@k8s-master01 ~]# helm install my-nginx --namespace=default alilyuncs/nginx
验证:
[root@k8s-master01 ~]# helm list # 显示当前安装的软件包
[root@k8s-master01 ~]# kubectl get pod -o wide
5)升级 Chart
[root@k8s-master01 ~]# kubectl get svc
[root@k8s-master01 ~]# helm upgrade my-nginx aliyuncs/nginx --set service.type=NodePort
验证:
[root@k8s-master01 ~]# curl 192.168.1.1:29340
6)回退 Chart
[root@k8s-master01 ~]# helm history my-nginx
[root@k8s-master01 ~]# helm rollback my-nginx 1
7)删除 Chart
[root@k8s-master01 ~]# helm uninstall my-nginx
8)安装 Helm 补全工具
[root@k8s-master01 ~]# echo "source <(helm completion bash)" >> ~/.bash_profile
[root@k8s-master01 ~]# source ~/.bash_profile
3.使用 Helm 来安装 Prometheus Operator
1)安装 Prometheus-Operator
[root@k8s-master01 ~]# kubectl create namespace monitor
[root@k8s-master01 ~]# helm install prometheus-operator --namespace=monitor aliyuncs/prometheus-operator
2)配置 Ingress 路由(未安装 Ingress 控制器可以通过:传送门 来进行安装)
[root@k8s-master01 ~]# cat <<END > prometheus-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
rules:
- host: www.prometheus.com
http:
paths:
- backend:
serviceName: prometheus-operator-prometheus
servicePort: 9090
- host: www.grafana.com
http:
paths:
- backend:
serviceName: prometheus-operator-grafana
servicePort: 80
- 上面的
serviceName
和servicePort
要根据实际环境来进行配置,其实就是由 Service 名称和 Service 的 ClusterIP 组成。
3)查看 Grafana 账号密码
[root@k8s-master01 ~]# kubectl describe secret prometheus-operator-grafana -n monitor
[root@k8s-master01 ~]# echo "User: admin" && echo "Password: \\
$(kubectl get secret prometheus-operator-grafana -n monitor -o jsonpath=".data.admin-password" | base64 --decode)"
- 这里实际上就是通过
base64 --decode
来对secret
里面的admin-password
变量的值进行解密操作。
4)验证
- 可以看到,当我们安装好 Prometheus-Operator 时,Grafana 便已经帮我们把 Prometheus 接入,并且还配置了很多监控看板。
以上是关于Helm 使用介绍(K8s 包管理器)的主要内容,如果未能解决你的问题,请参考以下文章