千家信息网

k8s之安装配置Helm工具

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,一、helm介绍在Kubernetes中部署容器云的应用也是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升
千家信息网最后更新 2024年11月25日k8s之安装配置Helm工具

一、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是管理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[root@master ~]# wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz #解包,只需要包中的一个命令[root@master ~]# tar zxf helm-v2.14.3-linux-amd64.tar.gz    [root@master ~]# mv linux-amd64/helm /usr/local/bin/[root@master ~]# chmod +x /usr/local/bin/helm #设置命令自动补全[root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile[root@master ~]# . /etc/profile    #重载环境变量

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

[root@master ~]# vim tiller-rbac.yaml   #创建授权用户apiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:  name: tillerroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:  - kind: ServiceAccount    name: tiller    namespace: kube-system[root@master ~]# kubectl apply -f tiller-rbac.yaml    #执行yaml文件[root@master ~]# helm init --service-account=tiller   #Tiller server的环境初始化#helm的服务端就是Tiller[root@master ~]# kubectl get pod -n kube-system |  grep tiller   #查看tiller的pod名称tiller-deploy-8557598fbc-tvfsj   0/1     ContainerCreating   0          2m16s[root@master ~]# kubectl edit pod tiller-deploy-8557598fbc-tvfsj -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#修改后,保存退出即可,它会去自动下载新镜像(如果没有自动下载,就想办法吧,比如说在tiller容器所在的节点手动下载下来镜像,然后重启该节点的kubelet,或重启该容器)[root@master ~]# kubectl get pod -n kube-system | grep tiller#只要保证tiller的pod正常运行即可tiller-deploy-8557598fbc-m986t   1/1     Running   0          7m54s

3、配置helm仓库

[root@master ~]# helm repo list      #查看其仓库信息NAME    URL                                             stable  https://kubernetes-charts.storage.googleapis.com#如上,默认是Google,在国外,速度特别慢local   http://127.0.0.1:8879/charts    #执行下面命令,更改为国内阿里云的仓库[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts[root@master ~]# helm repo list   #再次查看,可以发现更改生效了NAME    URL                                                   stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartslocal   http://127.0.0.1:8879/charts        [root@master ~]# helm repo update      #更新一下helm仓库[root@master ~]# helm version     #查看helm版本信息,必须保证可以查看出来client和server,才可正常使用helmClient: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}

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

[root@master ~]# helm search mysql      #搜索MySQL#查看到的是charts包文件,查出来的版本是helm的Charts包的版本[root@master ~]# helm inspect stable/mysql    #查看其详细信息[root@master ~]# helm fetch stable/mysql        #下载搜索到的包到本地[root@master templates]# helm install stable/mysql       #在线安装这个MySQL

如果上述测试命令都可以正常执行,则表示helm配置无误。

-------- 本文至此结束,感谢阅读 --------

仓库 客户 应用 服务 客户端 服务器 信息 命令 容器 镜像 文件 版本 配置 集群 工具 实例 架构 用户 工作 更新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大学生校园网络安全措施 l老师网络安全讲话 甘肃网络安全图片 手机号数据库字段类型 学网络技术去哪个国家 perl脚本链接td数据库 vfp数据库基本操作视频 控制与网络技术集成工作前景 网络安全预案小学 php支持主流数据库还是非主流 这些年我们一起追过的数据库 网易我的世界很火的服务器 青少年互联网络安全 软件开发项目分类二次开发 传奇服务器要装防护软件吗 信息网络安全心得 电子网络技术专科大学 徐州手机软件开发服务 乌鲁木齐软件开发费用 软件开发培训班哪家好 怎么解压服务器上的war包 软件开发项目经理能力要求 控制与网络技术集成工作前景 php获取数据库版本信息 无线路由器上面显示服务器无响应 上海轩河网络技术服务有限公司 互联网科技公司怎么找项目 网络安全应急处置落实情况 网络技术与处理 将网页部署到服务器上
0