热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十五、kubernetes核心技术Helm

helm引入之前方式部署应用基本过程使用helm可以解决哪些问题?使用helm可以把这些yaml作为一个整体管理实现yaml高效复用使用helm应用级别的版本管理

helm引入

之前方式部署应用基本过程

  • 使用helm可以解决哪些问题?
    • 使用helm可以把这些yaml作为一个整体管理
    • 实现yaml高效复用
    • 使用helm应用级别的版本管理

Helm介绍

Helm是一个Kubernetes的包管理工具,就像Linux中的yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上

Helm三个重要概念

  • helm:是一个命令行客户端工具
  • Chart:把yaml打包,yaml集合
  • Release:基于chart部署实体,应用级别的版本管理

V3版本架构

在这里插入图片描述

1. Helm安装

官方文档https://helm.sh/zh/docs/intro/install/

每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。

  1. 下载 curl -LO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
  2. 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
  3. 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
  4. 添加仓库(helm repo add stable http://mirror.azure.cn/kubernetes/charts)
  5. 仓库查看(helm repo list)

helm 常用命令

命令描述
dependency管理 chart 依赖
get下载一个 release。可用子命令:all、hooks、manifest、notes、values
history获取 release 历史
install安装一个 chart
list列出 release
package将 chart 目录打包到 chart 存档文件中
pull从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql – untar
repo添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、 list、remove、update
rollback从之前版本回滚
search根据关键字搜索 chart。可用子命令:hub、repo
show查看 chart 详细信息。可用子命令:all、chart、readme、values
status显示已命名版本的状态
template本地呈现模板
uninstall卸载一个 release
upgrade更新一个 release
version查看 helm 客户端版本

一键部署weavescope应用

helm search repo weave
helm install ui stable/weave-scope
kubectl get all

在这里插入图片描述

修改weave的service资源 讲ClusterIP改为NodePort

在这里插入图片描述

2. 如何自己创建Chart


2.1 使用命令创建chart

helm create [名称][root@k8s-master01 mychart]# ll
总用量 8
drwxr-xr-x 2 root root 6 5月 14 19:02 charts
-rw-r--r-- 1 root root 905 5月 14 19:02 Chart.yaml # chart属性配置信息
drwxr-xr-x 3 root root 146 5月 14 19:02 templates # 编写yaml文件放到这个目录中
-rw-r--r-- 1 root root 1490 5月 14 19:02 values.yaml # yaml可以使用全局变量

2.2 在templates目录中创建yaml

自行创建

[root@k8s-master01 templates]# ll
总用量 8
-rw-r--r-- 1 root root 389 5月 14 21:52 web01-deployment.yaml
-rw-r--r-- 1 root root 240 5月 14 21:55 web01-svc.yaml

2.3 安装mychart

cd ~
helm install [名称] [目录]
helm install web02 mychart/

2.4 应用升级

helm upgrade [名称] [目录]helm upgrade web1 mychart/

3. 实现yaml高效复用

通过传递参数,动态渲染模板yaml内容动态传入参数生成

3.1 在values.yaml定义变量值


  • yaml 文件大体有几个地方不同

    * image
    * tag
    * label
    * port
    * name

    replicas: 1
    image: nginx
    tag: 1.16
    label: nginx
    port: 80


3.2 在templates的文件使用values.yaml定义变量

通过表达式形式使用全局变量

{{ .Values.变量名称}}

{{ .Release.Name}}

cat > web-deployment.yaml <<-EOF
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: {{ .Values.label}}name: {{ .Release.Name}}-deploy
spec:replicas: 1selector:matchLabels:app: {{ .Values.label}}strategy: {}template:metadata:creationTimestamp: nulllabels:app: {{ .Values.label}}spec:containers:- image: {{ .Values.image}}:{{ .Values.tag}}name: {{ .Release.Name}}-deployresources: {}
status: {}
EOF

cat > web-svc.yaml <<-EOF
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: {{ .Values.label}}name: {{ .Release.Name}}-svc
spec:ports:- port: {{ .Values.port}}protocol: TCPtargetPort: {{ .Values.port}}selector:app: {{ .Values.label}}type: NodePort
status:loadBalancer: {}EOF

安装并执行

helm install web03 mychart/
helm install web04 mychart/

在这里插入图片描述


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
author-avatar
李2502933835
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有