linux cpu占用率如何看
474
2022-09-07
Helm安装部署详解
简介
Helm是一个kubernetes应用的包管理工具,用来管理预先配置好的安装包资源。Helm chart是用来封装kubernetes原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。
名词解释
Helm:
是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
Tiller:
是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
Chart:
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
Repoistory:
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
Release:
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
--注:需要注意的是:Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例.
Chart Install 过程
Helm 从指定的目录或者 TAR 文件中解析出 Chart 结构信息。Helm 将指定的 Chart 结构和 Values 信息通过 gRPC 传递给 Tiller。Tiller 根据 Chart 和 Values 生成一个 Release。Tiller 将 Release 发送给 Kubernetes 用于生成 Release。
Chart Update 过程
Helm 从指定的目录或者 TAR 文件中解析出 Chart 结构信息。Helm 将需要更新的 Release 的名称、Chart 结构和 Values 信息传递给 Tiller。Tiller 生成 Release 并更新指定名称的 Release 的 History。Tiller 将 Release 发送给 Kubernetes 用于更新 Release。
Chart Rollback 过程
Helm 将要回滚的 Release 的名称传递给 Tiller。Tiller 根据 Release 的名称查找 History。Tiller 从 History 中获取上一个 Release。Tiller 将上一个 Release 发送给 Kubernetes 用于替换当前 Release。
Chart 处理依赖说明
Tiller 在处理 Chart 时,直接将 Chart 以及其依赖的所有 Charts 合并为一个 Release,同时传递给 Kubernetes。因此 Tiller 并不负责管理依赖之间的启动顺序。Chart 中的应用需要能够自行处理依赖关系。
Helm和charts的主要作用:
应用程序封装版本管理依赖检查便于应用程序分发
安装Helm
前提要求:
Kubernetes1.5以上版本;集群可访问到的镜像仓库;k8s 集群可以正常工作,执行helm命令的主机可以访问到kubernetes集群。
脚本安装
Helm 现在有一个安装 shell 脚本,将自动获取最新版本的 Helm 客户端并在本地安装。可以获取该脚本,然后在本地执行它。这种方法有文档指导,以便可以在运行之前仔细阅读并理解它在做什么。
安装方法
curl > get_helm.shchmod 700 get_helm.sh./get_helm.shorcurl | bash
执行安装
[root@kubm-01 ~]# ./get_helm.shDownloading to install helm and tiller into /usr/local/binhelm installed into /usr/local/bin/helmtiller installed into /usr/local/bin/tillerRun 'helm init' to configure helm.[root@kubm-01 ~]# [root@kubm-01 ~]# [root@kubm-01 ~]# helm initCreating /root/.helm Creating /root/.helm/repository Creating /root/.helm/repository/cache Creating /root/.helm/repository/local Creating /root/.helm/plugins Creating /root/.helm/starters Creating /root/.helm/cache/archive Creating /root/.helm/repository/repositories.yaml Adding stable repo with URL: Adding local repo with URL: $HELM_HOME has been configured at /root/.helm.Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
安装
Helm 的服务器端部分 Tiller 通常运行在 Kubernetes 集群内部。但是对于开发,它也可以在本地运行,并配置为与远程 Kubernetes 群集通信。
创建tiller的serviceaccount和clusterrolebinding
kubectl create serviceaccount --namespace kube-system tillerkubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
应用程序设置serviceAccount:
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
快捷群集内安装
安装 tiller 到群集中最简单的方法就是运行 helm init。这将验证 helm 本地环境设置是否正确(并在必要时进行设置)。然后它会连接到 kubectl 默认连接的任何集群(kubectl config view)。一旦连接,它将安装 tiller 到 kube-system 命名空间中。
你可以通过参数运行 helm init:
--canary-image 参数安装金丝雀版本--tiller-image 安装特定的镜像(版本)--kube-context 使用安装到特定群集--tiller-namespace 用一个特定的命名空间 (namespace) 安装--service-account 使用 Service Account 安装 RBAC enabled clusters)--automount-service-account false 不适用 service account 安装
一旦安装了 Tiller,运行 helm version 会显示客户端和服务器版本。(如果它仅显示客户端版本, helm 则无法连接到服务器, 使用 kubectl 查看是否有任何 tiller Pod 正在运行。)
除非设置 --tiller-namespace 或 TILLER_NAMESPACE 参数,否则 Helm 将在命名空间 kube-system 中查找 Tiller
更新helm镜像仓库地址:
若无法访问 gcr.io,可以使用阿里云镜像,使用-i指定自己的镜像,因为官方的镜像因为某些原因无法拉取,官方镜像地址是:gcr.io/kubernetes-helm/tiller:v2.x.xx,使用helm version可查看helm客户端版本。
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 --stable-repo-url init 以后,可以运行 kubectl get pods --namespace kube-system 并看到 Tiller 正在运行。tiller默认被部署在k8s集群中的kube-system这个namespace下。
[root@kubm-01 ~]# kubectl get pod -n kube-system -l app=helmNAME READY STATUS RESTARTS AGEtiller-deploy-8557598fbc-4ljt2 1/1 Running 0 10d
查看版本
[root@kubm-01 ~]# helm versionClient: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
删除或重新安装 Tiller
由于 Tiller 将其数据存储在 Kubernetes ConfigMaps 中,因此可以安全地删除并重新安装 Tiller,而无需担心丢失任何数据。推荐删除 Tiller 的方法是使用 kubectl delete deployment tiller-deploy --namespace kube-system 或更简洁使用 helm reset。
然后可以从客户端重新安装 Tiller:
$ helm init
参考文档:
https://helm.sh/docs/https://jimmysong.io/kubernetes-handbook/practice/helm.html
http://voidcn.com/article/p-hhtdortf-bxq.html
https://jianshu.com/p/ab26b5762cf5
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~