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的名字等。

  

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

  1. #删除Chart
  2. # 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. 发送邮件报错javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed

    关于使用javaMail发送邮件报错:javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multip ...

  2. Linux(01):linux的起源、应用场景和学习目标

  3. dotnet + LinQ 按照指定的字段 和 排序方式排序

    /// <summary> /// 根据指定属性名称对序列进行排序 /// </summary> /// <typeparam name="TSource&qu ...

  4. Windows下分布式环境搭建以及简单测试

    环境配置: 解压文件: Nginx服务器和Tomcat服务器 Tomcat服务器配置:(conf/server.xml) Nginx配置:(conf/nginx.conf) 安装memcached H ...

  5. 机甲大师S1机器人编程学习

    机甲大师 S1(RoboMaster S1)是大疆新出的教育机器人,很期待.S1支持Scratch和Python编程.(Scratch是麻省理工学院的“终身幼儿园团队”(Lifelong Kinder ...

  6. Go的流程控制

    流程控制 Go语言支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据是否满足条件,有选择的执行相应功能. 循环结构:依据条件是否满足, ...

  7. 一、Hadoop入门概述

    一.Hadoop是什么 Hadoop是一个由Apche基金会所开发的分布式系统基础架构. 主要解决海量数据的存储和海量数据的分析计算问题. 广义上来说,Hadoop通常是指一个更广泛的概念—Hadoo ...

  8. django framework插件类视图方法

    1.使用类视图APIView重写API 类视图APIView,取代@api_view装饰器,代码如下: from rest_framework import status from rest_fram ...

  9. PCI_PCIe_miniPCIe规格说明

    PCI PCI是一种本地总线(并行),规格书名称:PCI Local Bus Specification.并行总线,插槽规格统一. PCI stands for Peripheral Componen ...

  10. Nginx编译安装脚本

      Nginx是高性能的web服务器和反向代理服务器,在互联网公司中被广泛使用.以下是Nginx在centos7系统下的一键编译安装脚本,仅供参考,具体编译参数选项请结合实际生产环境需求进行选择,脚本 ...