helm的部署和简单使用


本篇内容主要讲解“helm的部署和简单使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“helm的部署和简单使用”吧!Helm通过软件打包的形式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用部署和管理的复杂性。随着业务容器化与向微服务架构转变,通过分解巨大的单体应用为多个服务的方式,分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加,对于Kubernetest编排来说,每个组件有自己的资源文件,并且可以独立的部署与伸缩,这给采用Kubernetes做应用编排带来了诸多挑战:管理、编辑与更新大量的K8s配置文件部署一个含有大量配置文件的复杂K8s应用分享和复用K8s配置和应用参数化配置模板支持多个环境管理应用的发布:回滚、diff和查看发布历史控制一个部署周期中的某一些环节发布后的验证而Helm恰好可以帮助我们解决上面问题。Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。本文简单介绍了Helm的用途、架构、安装和使用。做为Kubernetes的一个包管理工具,Helm具有如下功能:创建新的chartchart打包成tgz格式上传chart到chart仓库或从仓库中下载chart在Kubernetes集群中安装或卸载chart管理用Helm安装的chart的发布周期Helm有三个重要概念:chart:包含了创建Kubernetes的一个应用实例的必要信息config:包含了应用发布配置信息release:是一个chart及其配置的一个运行实例Helm有以下两个组成部分:Helm Client是用户命令行工具,其主要负责如下:本地chart开发仓库管理与Tiller sever交互发送预安装的chart查询release信息要求升级或卸载已存在的releaseTiller server是一个部署在Kubernetes集群内部的server,其与Helm client、Kubernetes API server进行交互,主要负责如下:监听来自Helm client的请求通过chart及其配置构建一次发布安装chart到Kubernetes集群,并跟踪随后的发布通过与Kubernetes交互升级或卸载chart简单的说,client管理charts,而server管理发布release。Helm clientHelm client采用go语言编写,采用gRPC协议与Tiller server交互。Helm serverTiller server也同样采用go语言编写,提供了gRPC server与helm client进行交互,利用Kubernetes client 库与Kubernetes进行通信,当前库使用了REST+JSON格式。Tiller server 没有自己的数据库,目前使用Kubernetes的ConfigMaps存储相关信息说明:配置文件尽可能使用YAM格式如果与我的情况不同,请阅读官方的quick guide,了安装的核心流程和多种情况。Helm Release地址kubernetes集群了解kubernetes的Context安全机制下载helm的安装包wget https://storage.googleapis.com/kubernetes-helm/helm-v2.11.0-linux-amd64.tar.gz我的环境使用了RBAC(Role-Based Access Control )的授权方式,需要先配置ServiceAccount和规则,然后再安装helm。官方配置参考Role-based Access Control文档。权限管理yml:cluster-admin 是kubernetes默认创建的角色。不需要重新定义。安装helm:运行结果:实验环境建议使用本方式安装,然后安装ingress-nginx等系统组件。配置helm 安装在helm-system namespace,允许Tiller发布应用到kube-public namespace。创建helm-system namespace,使用命令kubectl create namespace helm-system定义ServiceAccount创建一个Role,拥有namespace kube-public的所有权限。将Tiller的ServiceAccount绑定到这个角色上,允许Tiller 管理kube-public namespace 所有的资源。Helm中的Release信息存储在Tiller安装的namespace中的ConfigMap,即helm-system,需要允许Tiller操作helm-systemConfigMap。所以创建Role helm-system.tiller-manager,并绑定到ServiceAccounthelm-system.tillerhelm init 参数说明:--service-account:指定helm Tiller的ServiceAccount,对于启用了kubernetesRBAC的集群适用。--tiller-namespace:将helm 安装到指定的namespace中;--tiller-image:指定helm镜像--kube-context:将helm Tiller安装到特定的kubernetes集群中;第一次运行出现问题:这个是由于google的都被墙了,修改Hosts,指定storage.googleapis.com对应的课访问的IP即可。最新的国内可访问google的Hosts配置见github项目googlehosts/hosts的hosts/hosts-files/hosts文件。再次运行init helm命令,成功安装。查看Tiller的Pod状态时,发现Pod出现错误ImagePullBackOff,如下:查看pod的详细信息kubectl describe pod tiller-deploy-cdcd5dcb5-fqm57 -n helm-system,发现Pod依赖镜像gcr.io/kubernetes-helm/tiller:v2.11.0。查询docker hub上是否有人复制过改镜像,如图:同样使用hub.docker.commirrorgooglecontainers加速的google镜像,然后改镜像的名字。每个Node节点都需要安装。镜像下载不下来:使用他人同步到docker hub上面的镜像;使用docker search $NAME:$VERSION使用Hosts翻墙实现。问题提示:使用helm repo update 后,并没有解决问题。如下:可能的原因:没有nginx这个chart:使用helm search nginx 查询nginx chart信息。网络连接问题,下载不了。这种情况下,等待一定超时后,helm会提示。添加aliyun, github 和官方incubator charts repository。本小结的$NAME表示helm的repo/chart_name。查询charts: helm search $NAME查看release的列表:helm ls [--tiller-namespace $TILLER_NAMESPACE]查询package 信息: helm inspect $NAME查询package支持的选项:helm inspect values $NAME部署chart:helm install $NAME [--tiller-namespace $TILLER_NAMESPACE] [--namespace $CHART_DEKPLOY_NAMESPACE]删除release:helm开发云主机域名 delete $RELEASE_NAME [--purge] [--tiller-namespace $TILLER_NAMESPACE]更新:helm upgrade --set $PARAM_NAME=$PARAM_VALUE $RELEASE_NAME $NAME [--tiller-namespace $TILLER_NAMESPACE] 回滚:helm rollback $RELEASE_NAME $REVERSION [--tiller-namespace $TILLER_NAMESPACE] 删除release时,不使用--purge参数,会仅撤销pod部署,不会删除release的基本信息,不能release同名的chart。部署mysql时,查询参数并配置相应的参数。查询可配置的参数:例如我们需要配置mysql的root密码,那么可以直接使用--set参数设置选项,例如roo密码设置:--set mysqlRootPassword=hgfgood。通过mysql选项的说明中persistence参数,可以看出mysql 需要持久化存储,所以需要给kubernetes配置持久化存储卷PV。创建PV:完整的release chart命令如下:helm install --name mysql-dev --set mysqlRootPassword=hgfgood aliyun/mysql --tiller-namespace helm-system --namespace kube-public。查看已经release的chart列表:正常情况下,dashboard监控的情况如下图:运行此mysql chart 需要busybox镜像,偶尔会出现下图所示的问题,这是docker默认访问国外的docker hub导致的。需要先下载busybox镜像。上例中,安装完mysql,使用的root密码为hgfgood。本例中将其更新为hgf然后回滚到原始的密码hgfgood。查询mysql安装后的密码:更新mysql的root密码,helm upgrade --set mysqlRootPassword=hgf mysql-dev mysql --tiller-namespace helm-system更新完成后再次查询mysql的root用户密码查看RELEASE的信息:查看REVISION,可以目前mysql-dev有两个版本。回滚到版本1:通过上述输出可以发现RELEASE已经回滚。Error: could not find tiller,使用helm client,需要与tiller 交互时,需要制定tiller的namespace,使用参数--tiller-namespace helm-system,此参数默认时kube-system。由于网络问题下载会失败的问题,例如:进入本地charts保存的目录使用阿里云fetch对应的chart例如 安装mysql。然后再次运行helm install 安装mysql chart。可以使用--debug参数,打开debug信息。[ ] 详细的打包实验。到此,相信大家对“helm的部署和简单使用”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Win10数字权利永久激活神器—HWIDGen v10.11汉化版

HWIDGen v10.24汉化版是Windows 10数字权利激活工具,是一款win10永久激活工具,由国外网友制作。HWIDGen激活工具可以自动获取Windows10数字许可证激活,内置win10各个版本产品密钥,以最简单的方式永久激活。HWIDGen激…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/20 19:59
Next 05/20 19:59

相关推荐