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 后面可以使用 hubrepo 命令,分别表示 官方仓库和下载到本地的仓库。
  • 同时,我们可以在 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 
  • 上面的 serviceNameservicePort 要根据实际环境来进行配置,其实就是由 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 包管理器)的主要内容,如果未能解决你的问题,请参考以下文章

Helm 使用介绍(K8s 包管理器)

k8s 包管理器 Helm

k8s 包管理器 Helm

k8s 包管理器 Helm

26,k8s 之helm

K8S系列第十一讲:包管理神器-Helm