一、介绍

Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。可以把Helm比作CentOS的yum工具。

yum不光要解决包之间的依赖关系,还要提供具体的程序包。但是helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如hub.docker.com等;

Helm有如下几个基本概念:

  • Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源。可以把Chart比作CentOS yum使用的rpm文件。每个Chart包含下面两部分:
    • 包的基本描述文件Chart.yaml
    • 放在templates目录中的一个或多个Kubernetes manifest文件模板
  • Release:是chart的部署实例,一个chart在一个Kubernetes集群上可以有多个release,即这个chart可以被安装多次
  • Repository:chart的仓库,用于发布和存储chart

helm提供了一个应用所需要的所有清单文件。比如对于一个nginx,我们需要一个deployment的清单文件、一个service的清单文件、一个hpa的清单文件。我们把这三个文件打包到一起,就是一个应用程序的程序包,我们称之为Chart。

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。

helm是工作在k8s集群之外的。helm不直接操作apiserver,而是和Tiller交互。Tlller再和apiserver交互,最后由Apiserver把chart使用config赋值(值文件),最后部署成为release。

在helm工作中,helm先去检查chart是否存在,存在就把chart下载到helm本机当前用户的家目录下。然后helm把chart交给tiller,tiller再和api server交互。api server一旦把chart部署在k8s集群上,就不再叫chart了,而叫release。

所以,一个chart赋值不同,完全可以部署出多个release出来的,所以我们可以把chart看做是一个安装包的模板。

如果发现chart更新了,helm就自动滚动更新,而且helm还支持一键回滚的操作。

二、安装helm

一般helm是安装在k8s集群之外,这里我们就安装在master上了;

https://github.com/helm/helm/releases

下载压缩包,并解压:

[root@master src]# tar zxf helm-v2.9.1-linux-amd64.tar.gz

[root@master src]# ls
helm-v2.9.1-linux-amd64.tar.gz linux-amd64 [root@master src]# cd linux-amd64/ #解压后名字是 linux-amd64 [root@master linux-amd64]# ls
helm LICENSE README.md [root@master linux-amd64]# mv helm /usr/bin/ #直接就能用 [root@master linux-amd64]# helm -h #查看帮助

 

三、部署Tiller

(1)Tiller运行在K8s集群之上,也必须拥有集群的管理权限,也就是需要一个serviceaccount,创建一个clusterrolebinding到cluster-admin

rbac配置示例文件: https://github.com/helm/helm/blob/master/docs/rbac.md

[root@master helm]# pwd
/root/manifests/helm #资源定义清单
[root@master helm]# vim tiller-rbac.yaml
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 #创建
[root@master helm]# kubectl apply -f tiller-rbac.yaml
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created [root@master helm]# kubectl get sa -n kube-system |grep tiller
tiller 107s

(2)初始化

进行初始化时,会用到gcr.io/kubernetes-helm中的镜像,可以提前去阿里云下载、打标,镜像标签要和Helm版本号相同;

#初始化
[root@master helm]# helm init
Creating /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: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm.
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming! #查看,pod起来了
[root@master helm]# kubectl get pods -n kube-system |grep tiller
tiller-deploy-86c9995bb6-6mnvb / Running 49s #查看server、client
[root@master helm]# helm version
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

四、使用helm

(1)

官方可用的Chart仓库列表: https://hub.kubeapps.com

可以搜索charts

也可以使用helm命令搜索;

[root@master helm]# helm search redis
NAME CHART VERSION APP VERSION DESCRIPTION
stable/prometheus-redis-exporter 1.0. 0.28. Prometheus exporter for Redis metrics
stable/redis 6.4. 4.0. Open source, advanced key-value store. It is of...
stable/redis-ha 3.3. 5.0. Highly available Kubernetes implementation of R...
stable/sensu 0.2. 0.28 Sensu monitoring framework backed by the Redis ...

(2)helm常用命令:

helm常用命令:
- helm search: 搜索charts
- helm fetch: 下载charts到本地目录
- helm install: 安装charts
- helm list: 列出charts的所有版本 用法:
helm [command] 命令可用选项:
completion 为指定的shell生成自动补全脚本(bash或zsh)
create 创建一个新的charts
delete 删除指定版本的release
dependency 管理charts的依赖
fetch 下载charts并解压到本地目录
get 下载一个release
history release历史信息
home 显示helm的家目录
init 在客户端和服务端初始化helm
inspect 查看charts的详细信息
install 安装charts
lint 检测包的存在问题
list 列出release
package 将chart目录进行打包
plugin add(增加), list(列出), or remove(移除) Helm 插件
repo add(增加), list(列出), remove(移除), update(更新), and index(索引) chart仓库
reset 卸载tiller
rollback release版本回滚
search 关键字搜索chart
serve 启动一个本地的http server
status 查看release状态信息
template 本地模板
test release测试
upgrade release更新
verify 验证chart的签名和有效期
version 打印客户端和服务端的版本信息

(3)helm仓库

Helm 安装时已经默认配置好了两个仓库:stablelocalstable 是官方仓库,local 是用户存放自己开发的chart的本地仓库。

[root@master .helm]# helm repo list
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/chart

k8s-helm-二十四的更多相关文章

  1. Bootstrap<基础二十四> 缩略图

    Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...

  2. 二十四、Struts2中的UI标签

    二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...

  3. WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?

    原文:WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的? 服务端只有抛出FaultException异常才能被正常地序列化成Fault消息,并实现向客户 ...

  4. VMware vSphere 服务器虚拟化之二十四 桌面虚拟化之手动池管理物理机

    VMware vSphere 服务器虚拟化之二十四 桌面虚拟化之手动池管理物理机 VMwareView手动池可以管理物理计算机 说明: 环境基于实验二十三 1.准备一台Windows 7的物理计算机名 ...

  5. Bootstrap入门(二十四)data属性

    Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...

  6. 3360: [Usaco2004 Jan]算二十四

    3360: [Usaco2004 Jan]算二十四 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 6  Solved: 6[Submit][Statu ...

  7. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  8. 二十四. Python基础(24)--封装

    二十四. Python基础(24)--封装 ● 知识结构   ● 类属性和__slots__属性 class Student(object):     grade = 3 # 也可以写在__slots ...

  9. (C/C++学习笔记) 二十四. 知识补充

    二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...

  10. 第三百二十四节,web爬虫,scrapy模块介绍与使用

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...

随机推荐

  1. 【postman】安装使用说明

    1.下载 下载地址:https://pan.baidu.com/s/1miyYjig?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=& ...

  2. postgresql 导出建表语句的方法-类似describe table

    https://www.youtube.com/watch?v=PMfcsYzj-9M  这个视频不错, The Definitive Guide to Object-Oriented JavaScr ...

  3. 根据wsdl反向生成webservice服务端(3种方法)

    前言 正常情况下,都是我们项目组创建一个webservice服务端,客户通过我们提供的wsdl地址生成客户端并进行访问:但是最近和一个国企做接口对接,他们却只提供给我们wsdl,需要我们根据wsdl生 ...

  4. iPhone 适配之路

    (1)1x时代 2007年,初代iPhone公布,屏幕的宽高是320*480像素.这个分辨率一直到iPhone3GS也保持不变. 那时编写iOS的App应用程序.仅仅支持绝对定位. 比方一个butto ...

  5. Android使用procrank和dumpsys meminfo 、top分析内存占用情况

    如果你想查看所有进程的内存使用情况,可以使用命令procrank.dumpsys meminfo查看,当然也只可以过滤出某个进程如:dumpsys meminfo | grep -i phone 先来 ...

  6. centos下部署项目问题

    最近写了商品管理的后台完成了一部分,用node+koa+mongodb搭建,现在想部署到自己的服务器上,部署的过程中遇到了一些坑.首先就是各种环境的搭建,搭建好了之后要把后台的代码传到服务器上运行,运 ...

  7. W5500EVB TCP Server演示

    之前给大家展示了p=6471" style="margin:0px; padding:0px; border:0px; font-family:inherit; font-size ...

  8. 【iOS系列】-自定义Modar动画

    [iOS系列]-自定义Modar动画.md 我们需要做的最终的modar动画的效果是这样的, 就是点击cell,cell发生位移,慢慢的到第二个界面上的.为了做出这样的动画效果,我们需要以下的知识. ...

  9. LeetCode题解(20)--Valid Parentheses

    https://leetcode.com/problems/valid-parentheses/ 原题: Given a string containing just the characters ' ...

  10. mac Git本地服务器配置

    本文转载至 http://blog.csdn.net/piziliweiguang/article/details/9311791   XCode 默认支持 Git 作为代码仓库,当我们新建一个仓库的 ...