当前位置: 首页 > news >正文

Kubernetes软件包管理系统-Helm架构

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Kubernetes Helm 架构

Helm Chart简介

Helm是一个用于Kubernetes的包管理工具。 
每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。 
一个Chart是Kubernetes部署文件的集合,使用Chart可以方便的在Kubernetes中部署一组应用。

Helm组件

Helm:

Helm是一个cli客户端,可以完成如下内容:

  • 创建Chart
  • 打包Chart,打包成name-version.tgz格式
  • 调试Chart
  • 创建本地Chart仓库
  • 管理本地和远程Chart仓库
  • 与Tiller通信并完成Chart的安装,升级,删除,回滚,查看等操作

Tiller

Tiller是一个Chart管理服务端,Tiller接收Helm的请求,并根据Chart生成Kubernetes的部署文件(称为一个Release),然后提交给Kubernetes创建应用。 
Tiller有如下功能:

  • 监听来自Helm的请求
  • 根据请求提交的Chart与Config生成一个Release
  • 将Release提交给Kubernetes,并且跟踪Release的状态
  • 提供Release的升级,删除,回滚等功能

Helm通信过程

Helm过程

Chart Install 过程:

  1. Helm从指定的目录或者tgz文件中解析出Chart结构信息
  2. Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller
  3. Tiller根据Chart和Values生成一个Release
  4. Tiller将Release发送给Kubernetes用于生成Release

Chart Update过程:

  1. Helm从指定的目录或者tgz文件中解析出Chart结构信息
  2. Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller
  3. Tiller生成Release并更新指定名称的Release的History
  4. Tiller将Release发送给Kubernetes用于更新Release

Chart Rollback过程:

  1. Helm将要回滚的Release的名称传递给Tiller
  2. Tiller根据Release的名称查找History
  3. Tiller从History中获取上一个Release
  4. Tiller将上一个Release发送给Kubernetes用于替换当前Release

Chart依赖说明: 
Tiller在处理Chart时,直接将Chart以及其依赖的所有Charts合并为一个Release,同时传递给Kubernetes。因此Tiller并不负责管理依赖之间的启动顺序。Chart中的应用需要能够自行处理依赖关系。

  • 上一篇:Kubernetes Port Forward机制
  • 下一篇:Helm Chart 结构
  • 发表时间:2016-11-24 11:34:03
  • 更新时间:2016-11-25 10:29:34
  • 文章分类:Docker&Kubernetes
  • 版权声明:自由转载-非商用-非衍生-保持署名(CC 3.0)

转载于:https://my.oschina.net/u/2306127/blog/1788678

相关文章:

  • A - 夹角有多大(题目已修改,注意读题)
  • 卸载openssl后yum无法使用,ssh无法连接的解决办法
  • 春雪
  • (16)Reactor的测试——响应式Spring的道法术器
  • Oracle 谈 JavaFX 及 Java 客户端技术的未来
  • [译] React 中的受控组件和非受控组件
  • drbd配置简述
  • 聊聊编译时注解
  • 微服务架构—高级设计篇
  • 漫谈版本控制系统
  • pandas(一)操作Series和DataFrame的基本功能
  • Redhat6.5匿名访问win10共享文件夹.
  • 从零开始在ubuntu上搭建node开发环境
  • 《CDN 之我见》原理篇——CDN的由来与调度
  • 汇编语言第三版答案(王爽)
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • eclipse(luna)创建web工程
  • go语言学习初探(一)
  • JavaScript函数式编程(一)
  • JS学习笔记——闭包
  • learning koa2.x
  • Mithril.js 入门介绍
  • MySQL用户中的%到底包不包括localhost?
  • Otto开发初探——微服务依赖管理新利器
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 高性能JavaScript阅读简记(三)
  • 给github项目添加CI badge
  • 关于 Cirru Editor 存储格式
  • 阿里云服务器如何修改远程端口?
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​Python 3 新特性:类型注解
  • ​TypeScript都不会用,也敢说会前端?
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (07)Hive——窗口函数详解
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) 两个矩阵 “相似” 是什么意思?
  • (LeetCode) T14. Longest Common Prefix
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)UDP基本编程步骤
  • (转)编辑寄语:因为爱心,所以美丽
  • **python多态
  • *上位机的定义
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /run/containerd/containerd.sock connect: connection refused
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @Autowired @Resource @Qualifier的区别
  • @RequestBody的使用
  • [ 蓝桥杯Web真题 ]-布局切换