龙岗公司做网站,建设银行大厂支行网站,做ptt网站,计算机培训机构排名前十一、helm的介绍
1#xff0c;helm的价值概述 如下图所示#xff0c;在一个企业中#xff0c;可能存在多个不同的应用业务#xff0c;每个业务可能包含多至十几、甚至几十个资源清单#xff0c;那么对于“运维”和“研发”人员来讲#xff0c;这么多的资源清单#xff0…一、helm的介绍
1helm的价值概述 如下图所示在一个企业中可能存在多个不同的应用业务每个业务可能包含多至十几、甚至几十个资源清单那么对于“运维”和“研发”人员来讲这么多的资源清单通过人力去区分辨别即便有“名称空间namespace”和不同“路径目录”来进行区分也是非常吃力的 所以我们就需要借助k8s资源清单的管理工具进行以业务为单位的资源清单管理通过一些手段来实现业务的升级、回滚等等操作在一个文件上通过helm的values.yaml文件一个文件就能够管理一套业务体系进而压缩、减轻了运维压力实现高效管理业务的目的 2helm的关键名词 chart 应用描述在helm中一个chart代表一个业务的资源清单相关文件的合集 release 基于chart的部署实体一个chart被helm运行后会生成一个release实体这个release实体会在k8s集群中创建对应的资源对象 二、安装部署helm 给大家准备了软件包在百度云盘 链接https://pan.baidu.com/s/1SKab_auMeRWxUJgpEsNHVg?pwd1l6w 提取码1l6w 1上传软件包 [rootk8s231 helm]# rz -E [rootk8s231 helm]# ll total 15656 -rw-r--r-- 1 root root 16028423 Nov 8 00:35 helm-v3.12.3-linux-amd64.tar.gz 2解压安装包 [rootk8s231 helm]# tar xf helm-v3.12.3-linux-amd64.tar.gz -C /usr/local/bin/ [rootk8s231 helm]# cd /usr/local/bin/linux-amd64/ [rootk8s231 linux-amd64]# ll total 49428 -rwxr-xr-x 1 1001 123 50597888 Aug 11 2023 helm -rw-r--r-- 1 1001 123 11373 Aug 11 2023 LICENSE -rw-r--r-- 1 1001 123 3397 Aug 11 2023 README.md 3设置helm全局命令 [rootk8s231 linux-amd64]# mv helm /usr/local/bin/ [rootk8s231 linux-amd64]# helm --help 4添加命令补全设置 [rootk8s231 linux-amd64]# helm completion bash /etc/bash_completion.d/helm 至此安装helm成功
三、使用helm部署服务管理
1使用helm创建chart
· 创建工作目录 [rootk8s231 xinjizhiwa01-chart]# mkdir /xinjizhiwa/chart [rootk8s231 xinjizhiwa01-chart]# cd /xinjizhiwa/chart · helm创建chart [rootk8s231 chart]# helm create xinjizhiwa01 Creating xinjizhiwa01 查看目录发现多出来一个xinjizhiwa01的目录在查看xinjizhiwa01这个目录下发现有文件和袭击目录 [rootk8s231 chart]# ll total 0 drwxr-xr-x 4 root root 93 Feb 25 21:06 xinjizhiwa01 [rootk8s231 chart]# ll xinjizhiwa01/ total 8 drwxr-xr-x 2 root root 6 Feb 25 21:06 charts -rw-r--r-- 1 root root 1148 Feb 25 21:06 Chart.yaml drwxr-xr-x 3 root root 162 Feb 25 21:06 templates -rw-r--r-- 1 root root 1879 Feb 25 21:06 values.yaml 2响应式创建名称空间 [rootk8s231 chart]# kubectl create ns helm-xjzw01 namespace/helm-xjzw01 created [rootk8s231 chart]# kubectl get ns NAME STATUS AGE ........... helm-xjzw01 Active 5s 3安装chart到名称空间 【helm install 自定义名称 chart名称 名称空间】
本次起名叫xjzw [rootk8s231 chart]# helm install xjzw xinjizhiwa01 -n helm-xjzw01 查看名称空间中的pod [rootk8s231 chart]# kubectl get pods -o wide -n helm-xjzw01 模拟访问这个pod [rootk8s231 chart]# curl -I 10.100.2.4 4使用helm命令查看名称空间下的资源 [rootk8s231 chart]# helm list -n helm-xjzw01 至此部署服务就结束了
我们继续深入下去我们不知为何就部署了一个nginx1.16的版本服务我们接下来改变一下nginx的版本我们将nginx的版本修改为1.20.1
5修改服务的版本
· 修改values.yaml中的tag标签版本 [rootk8s231 chart]# vim xinjizhiwa01/values.yaml ............... image: repository: nginx pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. #我们将tag修改为1.20.1-alpine这个就是服务的版本修改 tag: 1.20.1-alpine · 再次安装chart到名称空间
这次名称叫xjzw02 [rootk8s231 chart]# helm install xjzw02 xinjizhiwa01 -n helm-xjzw01 查看名称空间下的pod [rootk8s231 chart]# kubectl get pods -o wide -n helm-xjzw01 模拟访问新的release的pod [rootk8s231 chart]# curl -I 10.100.2.5 我们修改了values.yaml的tag再次安装得到的pod旧村nginx的1.16版本变成了1.20版本 6卸载chart [rootk8s231 chart]# helm uninstall xjzw -n helm-xjzw01 release xjzw uninstalled 查看helm的chart是否被卸载 [rootk8s231 chart]# helm list -n helm-xjzw01 发现没有第一个chart的release名称了【xjzw】 四、认识helm的文件组成
1流程梳理 2查看目录解释说明 tempate目录业务相关所有资源清单NOTES.txt NOTES.txt安装chart成功后的提示信息 values.yaml给业务资源清单传递写好的变量 五、自定义chart服务的部署
1编辑value.yaml文件设置变量
本质上就是设置变量 [rootk8s231 chart]# vim 111/values.yaml replicaCount: 6 image: nginx: repository: nginx tag: 1.20.1-alpine xjzwlables: k8s: xinjizhiwa kubernetes: k8s name: xinjizhiwaname version: v1.0 office: https:/www.xinjizhiwa.com 2资源清单引入变量 [rootk8s231 chart]# cat 111/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: xjzw-dm spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: k8s: {{ .Values.xjzwlables.k8s }} template: metadata: labels: k8s: {{ .Values.xjzwlables.k8s }} spec: containers: - name: c1 image: {{ .Values.image.nginx.repository }}:{{ .Values.image.nginx.tag }} 安装成功的提示信息已经显示出来 [rootk8s231 chart]# helm install xin 111 -n helm-xjzw01 NAME: xin LAST DEPLOYED: Mon Feb 26 01:28:50 2024 NAMESPACE: helm-xjzw01 STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: 恭喜你安装成功了 安装的服务名称是: xinjizhiwaname 安装的服务版本是v1.0 官网地址https:/www.xinjizhiwa.com 3查看验证
·查看pod副本数 [rootk8s231 chart]# kubectl get pods -n helm-xjzw01 -o wide 六、helm对业务的升级和回滚
1业务升级
· 查看现有chart [rootk8s231 chart]# helm list -n helm-xjzw01 · 修改变量文件values.yaml [rootk8s231 chart]# vim 111/values.yaml replicaCount: 6 image: nginx: repository: nginx #将nginx1.20版本升级到1.24版本 #tag: 1.20.1-alpine tag: 1.24.0-alpine xjzwlables: k8s: xinjizhiwa kubernetes: k8s name: xinjizhiwaname version: v1.0 office: https:/www.xinjizhiwa.com · 基于values.yaml文件升级业务 [rootk8s231 chart]# helm upgrade xin 111 -n helm-xjzw01 总结我们把values.yaml文件中nginx版本从1.20替换成1.24,在upgrade升级一下再次查看发现更新成功同时使用helm list发现version从1变成了2
· 再次修改values.yaml文件
这次修改副本数、nginx版本及version版本的变量 [rootk8s231 chart]# vim 111/values.yaml #replicaCount: 6 replicaCount: 3 image: nginx: repository: nginx #tag: 1.20.1-alpine #tag: 1.24 tag: 1.16 xjzwlables: k8s: xinjizhiwa kubernetes: k8s name: xinjizhiwaname version: v2.0 office: https:/www.xinjizhiwa.com · 再次升级 [rootk8s231 chart]# helm upgrade xin 111 -n helm-xjzw01 再次查看 2业务回滚
· 回到上一个版本 [rootk8s231 chart]# helm rollback xin -n helm-xjzw01 Rollback was a success! Happy Helming! · 验证是否回到上一版本 [rootk8s231 chart]# kubectl get pods -o wide -n helm-xjzw01 [rootk8s231 chart]# curl -I 10.100.2.19 此时发现回到了上一个版本1.24版本及对应6个副本
· 回滚到指定版本
我们目前是从1.20--1.24--1.16--1.24共计4个版本如何回到指定版本呐 [rootk8s231 chart]# helm rollback xin 1 -n helm-xjzw01 Rollback was a success! Happy Helming! 七、补充chart.yaml文件 apiVersion: v2 #chart名称 name: 111 description: A Helm chart for Kubernetes type: application #helm list查询时的CHART字段下的后缀 version: 0.1.0 #helm list 查询时的APP VERSION appVersion: 1.16.0 也就是说我们可以通过配置这个文件来控制显示helm list的元数据信息当然也可以在values.yaml中设置这两个变量哦 八、helm的共有仓库和私有仓库 我们知道docker拉取镜像是有共有仓库阿里云、华为云、清华源..和私有仓库harbor.... 同理helm也有这个机制
1主流的chart仓库 - 互联网公开的chart仓库可以直接使用他们制作好的包 1微软仓库Index of /kubernetes/charts/ 2阿里云仓库https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 2添加仓库的方式
· 查看现有仓库的信息 默认情况下是没有任何仓库地址的 [rootk8s231 chart]# helm repo list Error: no repositories to show · 添加共有仓库 添加微软云的helm仓库 [rootk8s231 chart]# helm repo add azure http://mirror.azure.cn/kubernetes/charts/ azure has been added to your repositories 添加阿里云的helm仓库 [rootk8s231 chart]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts aliyun has been added to your repositories · 更新仓库信息 [rootk8s231 chart]# helm repo update Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the aliyun chart repository ...Successfully got an update from the azure chart repository Update Complete. ⎈Happy Helming!⎈ · 再次查看仓库信息 [rootk8s231 chart]# helm repo list NAME URL azure http://mirror.azure.cn/kubernetes/charts/ aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 3搜索想要的chart
查一下有没有es的chart [rootk8s231 chart]# helm search repo elasticsearch 4拉取仓库的chart [rootk8s231 chart]# helm pull aliyun/elasticsearch-exporter 5解压第三方的chart压缩包 [rootk8s231 chart]# tar xf elasticsearch-exporter-0.1.2.tgz 安装chart到默认名称空间 [rootk8s231 chart]# helm install es elasticsearch-exporter 注意你安装chart的时候可能失败因为chart中的k8s对应api-server版本可能不一样所以对应的资源清单的一级字段也不一样导致安装失败发现这个问题就去看看资源清单的api版本是否与目前你使用的k8s的api版本相同否则就需要修改资源清单的api版本了。
· 私有的helm仓库了解 尽情期待提示chartmuseum项目还不错哟 推荐阅读: https://github.com/helm/chartmuseum https://hub.docker.com/r/chartmuseum/chartmuseum 至此helm的学习就到此位置