linux cpu占用率如何看
275
2022-09-08
k8s实验-helm v3的配置和使用
helm通过将各种kubernets资源打包,类似于linux的apt-get或者yum工具,来完成复杂的软件安装和部署,并且支持部署实例的版本管理等,大大简化了在k8s上部署和管理的应用的复杂程度。
架构和组件
chart:
chart就是helm package,包含了一个k8s app应用运行起来的所有要素,比如service, deployment, configmap, serviceaccount, rbac, 等,这些要素都是以template文件的形式存在,再结合values文件,最终渲染出能够被k8s执行的yaml文件,通常是以.tgz压缩包的形式提供,也可以是文件夹形式.
repository:
仓库是charts的集合,方便进行分享和分发。下面是官网仓库和阿里云仓库的地址,
chart在kubernetes的一个运行实例,你可以用不同的release name多次安装同一个chart,比如:当集群中需要多个redis实例,你可以使用不同的配置文件安装redis chart。
helm与linux软件包对比
helm | apt | |
安装包 | chart | deb |
仓库 | helm repository | apt repository/mirror |
操作系统 | kubernetes | linux |
包依赖 | helm dependency | deb dependency |
包管理工具 | helm client | apt |
运行流程
从chart仓库中获取chart;使用者配置自己的values文件,根据自己的运行环境对values进行修改;默认values文件和使用者values文件会进行一个merge,形成最终的values文件;使用最终的values文件,渲染chart的template,形成可以被kubernetes执行的yaml;调用kube apply提交yaml到kubernetes
helm的安装使用
推荐通过官方脚本安装
$ curl -fsSL -o get_helm.sh chmod 700 get_helm.sh$ ./get_helm.sh
chart仓库使用
#删除默认源helm repo remove stable#添加国内源,使用阿里云helm repo add stable repo list#搜索可部署的chart列表helm search repo stable#
相关仓库搜索命令
查看已经添加的仓库:helm repo list搜索仓库有哪些chart:helm search repo stable更新仓库列表到本地:helm repo update搜索redis:helm search repo redis查看redis chart详情:helm show chart stable/redis查看redis values(values:相当于chart的配置文件):helm show values stable/redis
chart结构说明
helm使用的包格式被称为chart,它是描述所有k8s资源的文件集合.一个完整的chart用于部署一个完整的应用.
chart的目录结构
wordpress/ Chart.yaml # 包含了chart信息的YAML文件 LICENSE # 可选:包含了char许可证的文本文件 README.md # 可选:README文件 values.yaml # chart的默认配置 values.schema.json # 可选:JSON结构values.yaml charts/ # 包含了chart依赖的其他chart crds/ # 自定义资源的定义 templates/ # 模板目录,与values.yaml组合完整的资源对象配置文件 # templates/NOTES.txt # 可选:包含了简要使用说明的文本文件-----------------------------------
chart的yaml文件说明
apiVersion: chart的API版本号,必须name: chart名称,必须version: 应用的版本号,必须kubeVersion: 兼容的kubernetes版本号范围,可选description: 应用描述,可选 type: chart类型,可选keywords: - 关于应用的一组关关键字,可选home: 关于应用的一组关键字,可选sources: - 应用源码的URL地址列表,可选dependencies: # 依赖的一组其他chart信息,可选 - name: chart的名称,如nginx version: chart的版本,如1.2.3 repository: 仓库URL( condition: YAML格式,可选,用于启用或者禁用chart,例如subchart1.enabled) tags: # 可选 - 用于启用或者禁用一组chart的tag enabled: 可选,启用的bool值,确定是否加载chart import-values: # 可选 - ImportValue : 将在子chart中设置的变量和值导入父chart中 alias: 可选,在chart中使用别名,需要多次添加相同的chart时会很有用maintainers: # 可选 - name: 维护者的名称,每个维护者都需要 email: 维护者的邮箱,每个维护者都需要 url: 维护则的URL,每个维护者都需要icon: 用作icon的svg或者png图片的url地址,可选appVersion: 包含的应用版本,可选deprecated: 设置该chart是否已被启用,可选,bool值annotations: example: annotation列表,可选
其他字段忽略.对其中的每个字段的详细说明参考官方说明.
操作实验
从远程仓库部署mariadb
举例,从远程仓库部署一个maraidb应用
自定义创建chart
1 生成空的charts
mkdir -p /root/.helm/cache/archivecd /root/.helm/cache/archivehelm create mychart
注意,该命令能够在当前目录中创建一个名为mychart的图表,建议进入chart下载默认路径创建,默认路径为/root/.helm/cache/archive
确认charts文件目录结构
确认charts元数据文件:
cat Chart.yaml
查看values.yaml为文件,可以看到定义了一个可以直接安装容器化Nginx应用的Charts
2 修改charts以部署自定义服务
vim values.yaml
3 检查chart是否有语法错误,注意在chart所在的目录运行
helm lint mychart
没有报错
4 使用--dry-run和--debug参数调试chart包
helm install --set name=myapp mychart --dry-run --debug ./mychart
5 确认无误后,再次执行命令
helm install --set name=myapp mychart ./mychart/
6 查看helm状态
helm status mychar
7 通过status输出的notes提示运行相关验证服务
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=mychart,app.kubernetes.io/instance=mychart" -o jsnotallow="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsnotallow="{.spec.containers[0].ports[0].containerPort}") echo "Visit to use your application" kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
8 通过helm package打包
helm package mychart
打包完成后,可以使用本地.tgz文件进行helm install命令部署了
helm install mychart mychart-0.1.0.tgz
同时,可以将打包好的chart上传到chart仓库进行保存,供后续分发和部署使用.
升级或者回退一个应用
1 打包自定义应用,修改Chart.yaml文件,将版本号从0.1.0修改为0.2.0,然后使用helm package打包
cd /roo/.helm/cache/archivevi mychart/Chart.yaml
helm package mychart
2 使用 helm upgrade已经部署的release,可以通过--version来指定版本号,如果没有版本号,则自动升级到最新版本.
helm list #查询
3 升级和回退
helm upgrade mychart local/mycharthelm rollback mychart # 查看release历史helm history myapp
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~