kubernetes helm

每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

Helm 有两个重要的概念:chart 和 release。

(1)、chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。

(2)、release 是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 Kubernetes 集群,就生成一个 release。chart 能够多次安装到同一个集群,每次安装都是一个 release。

Helm 是包管理工具,这里的包就是指的 chart。

Helm 包含两个组件:Helm 客户端 和 Tiller 服务器。

简单的讲:Helm 客户端负责管理 chart;Tiller 服务器负责管理 release。

Helm 安装:

(1)、将 Helm 客户端安装在能够执行 kubectl 命令的节点上 (通过官方脚本安装)

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

(2)、通过源码安装

在helm官网找到合适的版本下载(amd64):https://github.com/helm/helm/releases

wget https://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz

tar -zxvf helm-v2.8.2-linux-amd64.tar.gz

cd linux-amd64

cp helm /usr/local/bin/helm

备注:安装helm和tiller需要保持版本一致,如果版本不一致的话是无法成功安装软件的

Tiller安装:

Tiller 服务器安装非常简单,只需要执行 helm init

错误排查:

1、在安装tiller的过程中,可能会遇到tiller镜像由于网络原因无法下载,当检查到tiller-deploy无法启动的时候,需要修改tiller-deploy对应的镜像,等待tiller镜像启动。(执行命令 helm version的时候会提示没有准备好的pod,则对应tiller pod没有成功启动)

registry.cn-shanghai.aliyuncs.com/kubernetes_djb/tiller:v1.10.1

2、如果提示 Error: cannot connect to Tiller ,那么需要安装插件 socat

yum install socat -y

版本检查:

helm version

Client: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"}

Helm使用:

1、查看当前可安装的chart

helm search mysql

2、查看helm仓库

helm repo list

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

3、安装

helm install stable/mysql

4、创建自定义chart

(1)、创建chart包

helm create myapp

cd myapp/

ls -lah

drwxr-xr-x 4 root root  93 Feb 15 13:34 .

drwxr-xr-x 3 root root  66 Feb 15 13:34 ..

drwxr-xr-x 2 root root   6 Feb 15 11:46 charts

-rw-r--r-- 1 root root 201 Feb 15 13:32 Chart.yaml

-rw-r--r-- 1 root root 333 Feb 15 11:46 .helmignore

drwxr-xr-x 2 root root 106 Feb 15 11:46 templates

-rw-r--r-- 1 root root 913 Feb 15 13:34 values.yaml

执行完上面的命令会在myapp目录下生成如上说是的文件以及目录

(2)、修改Chart.yaml文件 (应用的基本信息)

可以将Chart.yaml文件理解成对于镜像的服务的说明文件

(3)、修改values.yaml文件 (模板默认值)

values.yaml文件中配置实际应用的相关参数:镜像、serivce、ingress、副本等

(4)、测试打包

cd .. 

helm lint ./myapp 

helm package myapp/

(5)、创建代理

注意这里需要在 myapp-0.0.1.tgz 同级上执行,这里会启动一个web服务,端口为 8879

helm serve

(6)、打开一个新的终端,进行安装

helm install --name myapp1 local/myapp

安装完毕之后,测试访问:curl 192.168.56.15

这个时候通过 helm search 搜索chart,是能在库local下发现自定义的包的。

5、拉取chart到本地

helm search | grep chart_name

helm fetch chart_name

拉取到本地的chart是一个压缩包,需要通过tar命令进行解压。

6、查询安装在本地的release 列表

helm ls

7、删除release (也就是删除通过helm安装的应用)

helm delete --purge chart_name

8、升级回滚release

# 升级

helm upgrade --set mysqlRootPassword=passwd db-mysql stable/mysql

# 回滚

helm rollback db-mysql 1

更多内容请关注我的知乎账号:https://www.zhihu.com/people/dengjiabo/activities

你可能感兴趣的:(kubernetes helm)