每天五分钟玩转K8S(十)
今天我们来了解一下k8s的包管理工具,helm。一、helm的架构Helm有两个重要的概念: chart和release。chart是创建一个应用的信息集合, 包括各种Kubernetes对象的配置模板、 参数定义、 依赖关系、 文档说明等。 chart是应用部署的自包含逻辑单元。 可以将chart想象成apt、 yum中的软件安装包。release是chart的运行实例, 代表了一个正在运行的应
今天我们来了解一下k8s的包管理工具,helm。
一、helm的架构
Helm有两个重要的概念: chart和release。
- chart是创建一个应用的信息集合, 包括各种Kubernetes对象的配置模板、 参数定义、 依赖关系、 文档说明等。 chart是应用部署的自包含逻辑单元。 可以将chart想象成apt、 yum中的软件安装包。
- release是chart的运行实例, 代表了一个正在运行的应用。 当chart被安装到Kubernetes集群, 就生成一个release。 chart能够多次安装到同一个集群, 每次安装都是一个release。
(这里有点类似程序与进程的区别,一个是静态,一个是动态)
Helm是包管理工具, 这里的包就是指的chart。 Helm能够:
- 从零创建新chart。
- 与存储chart的仓库交互, 拉取、 保存和更新chart。
- 在Kubernetes集群中安装和卸载release。
- 更新、 回滚和测试release。
Helm包含两个组件: Helm客户端和Tiller服务器, 如图所示
简单地讲, Helm客户端负责管理chart, Tiller服务器负责管理release。
二、安装helm
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
检查版本
安装tiller服务器,
三、使用helm
可以查询当前可安装的chart(非常多,就不全部展示了- -)
helm犹如docker仓库一样,有自己的仓库
也是有分官方还有本地仓库,用户可以通过helm repo add添加更多的仓库,如企业的私有仓库。
helm支持关键字搜索,如
安装chart也很简单,执行如下命令即可安装mysql
helm install stable/mysql
出现以下报错,是因为tiller服务器的权限不足
需要执行如下命名添加权限:
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
然后重新执行安装mysql的命令,有以下效果
1、chart本次部署的描述信息。
- NAME是release的名字, 因为我们没用-n参数指定, 所以Helm随机生成了一个, 这里是incline-puffin。
- NAMESPACE是release部署的namespace, 默认是default, 也可以通过–namespace指定。
- STATUS为DEPLOYED, 表示已经将chart部署到集群。
2、当前release包含的资源: Service、 Deployment、 Secret和PersistentVolumeClaim, 其名字都是fun-zorse-mysql, 命名的格式为ReleasName-ChartName。
3、NOTES部分显示的是release的使用方法, 比如如何访问Service、 如何获取数据库密码以及如何连接数据库等。
可以使用之前的kubectl get来查询各个release对象。
也可以使用
helm list
来查询后已经部署了的release
四、chart详解
书上写的比较详细,可以直接看书
五、构建自己的chart
操作就是书上的流程,在传输文件的时候记得给源文件和目的文件夹都给出权限,要不传不过去。
更多推荐
所有评论(0)