前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Helm工具安装配置——2.14.3

Helm工具安装配置——2.14.3

作者头像
小手冰凉
发布2020-09-18 10:47:16
1.1K0
发布2020-09-18 10:47:16
举报
文章被收录于专栏:小手冰凉小手冰凉

一、helm

在Kubernetes中部署容器云的应用也是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用,同时,也可以通过helm进行容器云应用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等常见的应用,通过helm可以使用一条命令就能够将其部署安装在自己的Kubernetes集群中。

1、helm架构

helm的整体架构如下图所示,Helm架构由Helm客户端、Tiller服务器端和Chart仓库所组成;Tiller部署在Kubernetes中,Helm客户端从Chart仓库中获取Chart安装包,并将其安装部署到Kubernetes集群中。

Helm工具安装配置——2.14.3
Helm工具安装配置——2.14.3

Helm是管理Kubernetes包的工具,Helm能提供下面的能力:

  • 创建新的charts;
  • 将charts打包成tgz文件;
  • 与chart仓库交互;
  • 安装和卸载Kubernetes的应用;
  • 管理使用Helm安装的charts的生命周期;

2、helm概念

在Helm中,有以下三个重要概念需要了解:

  • Charts:是创建Kubernetes应用实例的信息集合,也就是一个helm的程序包,它包含了运行一个k8s应用所有需要的镜像、依赖关系和资源定义等,必要时还会包含Service资源定义,它类似于yum的rpm文件;
  • Repository:Chart仓库,用于集中存储和分发Charts。
  • Config:应用程序实例化安装时运行使用的配置信息;
  • Release:chart的运行实例,包含特定的config;

在同一个集群中,一个Charts可以使用不同的config重复安装多次,每次安装都会创建一个新的Release。

3、helm组件

在Helm中有两个主要的组件,即Helm客户端和Tiller服务器:

Helm客户端:是一个供终端用户使用的命令行工具。

客户端负责如下的工作:

  • 本地chart开发;
  • 管理仓库
  • 与Tiller服务器交互(发送需要被安装的charts、请求关于发布版本的信息、请求更新或者卸载已安装的发布版本)

Tiller服务器: Tiller服务部署在Kubernetes集群中,Helm客户端通过与Tiller服务器进行交互,并最终与Kubernetes API服务器进行交互。

Tiller服务器负责如下的工作:

  • 监听来自于Helm客户端的请求
  • 组合chart和配置来构建一个发布
  • 在Kubernetes中安装,并跟踪后续的发布
  • 通过与Kubernetes交互,更新或者chart

二、部署helm

1、安装helm客户端

//github搜索helm

代码语言:javascript
复制
[root@docker-k8s01 ~]# wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
//解包
[root@docker-k8s01 ~]# tar zxf helm-v2.14.3-linux-amd64.tar.gz 
[root@docker-k8s01 ~]# cd linux-amd64/
//只需要该目录下的helm命令
[root@docker-k8s01 linux-amd64]# ls
helm  LICENSE  README.md  tiller
[root@docker-k8s01 linux-amd64]# mv helm /usr/local/bin/
//赋予权限
[root@docker-k8s01 linux-amd64]# chmod +x /usr/local/bin/helm 
//配置命令自动补全
[root@docker-k8s01 linux-amd64]# echo 'source <(helm completion bash)' >> /etc/profile
[root@docker-k8s01 linux-amd64]# . /etc/profile

2、安装Tiller server(需要创建授权用户)

代码语言:javascript
复制
//创建授权用户,编写yaml文件
[root@docker-k8s01 ~]# cat tiller-rbac.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
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@docker-k8s01 ~]# kubectl apply -f tiller-rbac.yaml 
代码语言:javascript
复制
//Tiller server的环境初始化
[root@docker-k8s01 ~]# helm init --service-account=tiller 
//helm的服务端就是Tiller
//查看tiller的pod名称
[root@docker-k8s01 ~]# kubectl get pod -n kube-system | grep tiller
tiller-deploy-8557598fbc-z6n2w         0/1     ImagePullBackOff   0          91s
[root@docker-k8s01 ~]# kubectl edit pod tiller-deploy-8557598fbc-z6n2w -n kube-system 
//编辑pod的yaml文件,将其使用的镜像改为国内阿里云的,默认是Google的镜像,下载不下来
//修改spec字段的image指定的镜像,如下:
 image: gcr.io/kubernetes-helm/tiller:v2.14.3
//修改如下:
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
//当然也可以直接在节点上下载也可以
[root@docker-k8s02 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
//保证tiller的pod正常运行即可
[root@docker-k8s01 ~]# kubectl get pod -n kube-system  | grep tiller 
tiller-deploy-8557598fbc-z6n2w         1/1     Running   0          21m

3、配置helm仓库

代码语言:javascript
复制
//查看其仓库信息
[root@docker-k8s01 ~]# helm repo list
NAME    URL                                     
stable  https://kubernetes-charts.storage.googleapis.com
//如上,默认是Google,在国外,速度特别慢,所以需要更换为国内源
[root@docker-k8s01 ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
//再次查看可以看到已经更换为了杭州阿里云
[root@docker-k8s01 ~]# helm repo list
NAME    URL                                    
stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@docker-k8s01 ~]# helm repo update 
//查看helm版本信息,必须保证可以查看出来client和server,才可正常使用helm
[root@docker-k8s01 ~]# helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

4、测试helm是否可以正常使用

代码语言:javascript
复制
//搜索MySQL
[root@docker-k8s01 ~]# helm search mysql
//查看到的是charts包文件,查出来的版本是helm的Charts包的版本
//查看其详细信息
[root@docker-k8s01 ~]# helm inspect stable/mysql
//下载搜索到的包到本地
[root@docker-k8s01 ~]# helm fetch stable/mysql
//在线安装这个MySQL
[root@docker-k8s01 templates]# helm install stable/mysql
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、helm
    • 1、helm架构
      • 2、helm概念
        • 3、helm组件
        • 二、部署helm
          • 1、安装helm客户端
            • 2、安装Tiller server(需要创建授权用户)
              • 3、配置helm仓库
                • 4、测试helm是否可以正常使用
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档