Helm:
  helm就相当于Linux的包管理工具yum,但它管理的程序包是一些打包好的清单文件。
  其核心术语:
  Chart:一个helm程序包,它里面可理解为,包含了一下定义Pod的清单文件,这些清单包含Service,Deployment,DaemonSet,ReplicaSet,StatefulSet,HPA等配置信息,当然这些东西不一定都有,会根据应用不同,其清单内容也会有所区别,Template是模板文件,因为配置清单要能适用于各种场景,已经能够根据用户使用场景,做一些自定义配置,比如:Nginx配置清单中要配置HTTPS,那就需要配置证书,但证书不可能提前打包到Chart中,这就需要一些机制,能通过传递变量的方式来适应这些自定义需求,而template就是这样的目的而存在的,值列表就是为Template提供传递变量的文件。

  Repository:就是Helm的Chart仓库,它支持HTTPS/HTTP。
  Release:特定的Chart部署于目标K8s集群上的一个实例。

chart到release的过程:
  Chart---》Config ---》 Release

下图为Helm整体应用框架图:
  helm是作为Helm Repository的客户端工具,helm默认工作时,会从本地家目录中去获取chart,只有本地没有chart时,它才会到远端的Helm Repository上去获取Chart,当然你也可以自己在本地做一个Chart,当需要应用chart到K8s上时,就需要helm去联系K8s Cluster上部署的Tiller Server,当helm将应用Chart的请求给Tiller Server时,Tiller Server接受完helm发来的charts(可以是多个chart) 和 chart对应的Config 后,它会自动联系API Server,去请求应用chart中的配置清单文件,最终这些清单文件会被实例化为Pod或其它定义的资源,而这些通过chart创建的资源,统称为release,一个chart可被实例化多次,其中的某些参数是会根据Config规则自动更改,例如Pod的名字等。

  

部署Helm:
#下载helm 二进制文件
wget -c https://get.helm.sh/helm-v2.14.2-linux-amd64.tar.gz #下载完成后,解压后,里面会有helm二进制可执行文件,只需要将helm 放到 PATH 路径下。 #参考示例:
https://github.com/helm/helm/blob/master/docs/rbac.md
#创建一个能在集群级别管理Pod资源的tiller
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system #在进行tiller server安装时,默认是从google镜像仓库中下载的,但国内很多下载不下来,这里可先从阿里云的谷歌镜像仓库下载下来,
#导入自己的harbor中,或直接使用阿里的谷歌镜像仓库也可
#下面是我提前下载了tiller的镜像,推到我的harbor了
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.2 #这是从谷歌镜像仓库下载. helm init --tiller-image harbor.zcf.com/k8s/tiller:v2.14.2 --service-account tiller --history-max #若后期需要升级tiller镜像,可直接使用下面命令
$ export TILLER_TAG=v2.0.0-beta. # Or whatever version you want
$ kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:$TILLER_TAG #初始化完成后,查看版本
# helm version
Client: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.2", GitCommit:"a8b13cc5ab6a7dbef0a58f5061bcc7c0c61598e7", GitTreeState:"clean"} #做helm仓库更新
# helm repo update #测试安装memcached
# helm install stable/memcached #查看安装的Chart

# helm list
  NAME        REVISION   UPDATED            STATUS    CHART       APP VERSION   NAMESPACE
  plucking-buffalo 1      Tue Jul 30 15:55:04 2019  DEPLOYED   memcached-2.9.0 1.5.12      default

#删除Chart
# helm delete --purge plucking-buffalo

#官方可用的helm仓库地址
  https://hub.kubeapps.com

 #这是一个很深入介绍helm的文章:

  https://www.hi-linux.com/posts/21466.html

 

helm原理的更多相关文章

  1. [k8s]helm原理&私有库搭建&monocularui和kubeapp探究

    运行最简单的charts示例 helm的2个chart例子: https://github.com/kubernetes/helm/tree/master/docs/examples/nginx he ...

  2. Helm简介

    什么是Helm 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,作为Kubernetes应用的一个包管理工具,可理解为Kuberne ...

  3. Helm一:简介

    目录 什么是Helm Helm解决的问题 Helm原理 Helm架构 Helm功能 Helm三个重要概念 Helm组件 Helm Client Tiller Server Helm实现 什么是Helm ...

  4. 虚拟化原理到K8s实践经验路线总结

    以下这些内容均为自行学习总结的内容,很多内容没有写概括介绍,看起来可能会有些突兀,但并不影响整体性,我自己的学习经验告诉我,这些内容还仅仅是最精简的核心部分,周边还有很多可扩展内容,主要是操作系统生态 ...

  5. 053.集群管理-Helm部署及使用

    一 Helm概述 1.1 Helm介绍 Helm 是 Kubernetes 的软件包管理工具.包管理器类似 Ubuntu 中使用的apt.Centos中使用的yum 或者Python中的 pip 一样 ...

  6. k8s--发展历程、知识图谱、组件说明

    kubernetes 1.发展历程 基础设施级服务infrastructure as a service 阿里云 平台设施级服务 platform as a service 新浪云 软件设施级服务 s ...

  7. k8s Learning Notes

    Kubernetes - 组件介绍 MESOS APACHE 分布式资源管理框架 2019-5 Twitter > Kubernetes Docker Swarm 2019-07 阿里云宣布 D ...

  8. Kubernetes学习笔记_尚硅谷

    https://www.bilibili.com/video/BV1w4411y7Go?p=1 一.K8s介绍 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部 ...

  9. 十八,helm的原理及基础使用

    目录 helm介绍 核心术语 helm安装 helm安装 Tiller安装 创建tiller相关的rbac helm使用 添加chart源 helm常用命令: 基础命令 自定义chart 一.char ...

随机推荐

  1. [转帖]分布式事务之解决方案(XA和2PC)

    分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案 ...

  2. 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)

    一. 说明 EF版本的事务介绍详见: 第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges.DBContextTransaction.TransactionScope). 本节主 ...

  3. Centos 7.6搭建Skywalking6.5+es6.2.4

    软件包版本1.elasticsearch-6.2.4.tar.gz,下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elastics ...

  4. JS中Map的用法

    声明 var map = new Map(); 设值 map.set("key","value"); 取值 map.get("key"); ...

  5. .NET设计模式-观察者模式

    Observer(观察者模式) 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新. 说白了就是事件. using System; namespa ...

  6. DataGridView 行数据验证:当输入数据无效时不出现红色感叹号的Bug

    private void dgvView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e){       if ...

  7. 基于vue+springboot+docker网站搭建【五】部署vue前端项目

    部署vue前端项目  一.下载项目到本地   https://github.com/macrozheng/mall-admin-web 二.npm install 三.修改api配置,改为你接下来要部 ...

  8. linux sed、awk、grep同时匹配多个条(并且 or 或者)

    同时匹配ABC 和 abc: sed -n '/ABC/{/abc/p}' awk '/ABC/&&/abc/{ print $0 }' grep -E '(ABC.*abc|abc. ...

  9. Vue日历组件的功能

    本来呢,开开心心的写完了这个功能,然后发现elemeng更新了,增加了日历组件这个功能 我的内心机器奔溃,但是,element的日历组件太简单了,我感觉还是手撸一个吧,毕竟也不是很难 实现了显示农历, ...

  10. 完整且易读的最新版小程序登录态和检验注册过没的app.js写法

    目录 0.可参考的官方页面 1.流程 2.app.js代码 3.java后台怎么通过code获取openId 0.可参考的官方页面 获取登录凭证:https://developers.weixin.q ...