我的编程空间,编程开发者的网络收藏夹
学习永远不晚

kubernetes中如何实现Helm

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

kubernetes中如何实现Helm

这篇文章主要介绍kubernetes中如何实现Helm,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一:简介
在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并能为这些容器定制存储,网络等设备,最后设计和编写Deployment,Configmap,Service及Ingress等相关yaml配置文件,再提交给Kubernetes进行部署。这些复杂的过程将逐步被Helm应用包管理工具实现。

Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes上部署复杂应用进行定义,安装和更新。Helm以Chart的方式对应用软件信息描述,可以方便地创建,版本化,共享和发布复杂的应用软件。

二:Helm的主要概念
1. Chart:是Helm管理的安装包,里面包含需要部署的安装包资源。类似于yum中的rpm文件。每个Chart包含下面两部分:包的基本描述文件Chart.yaml放在templates目录中的一个或多个Kubernetes manifest文件模板。
2.Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以安装多次。例如一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基本这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。
3.Repository: 用于存放和共享Chart的仓库。
kubernetes中如何实现Helm

三:Helm的安装

1.Helm由两部分组成,客户端helm和服务的tiller.

2.客户端helm的安装

  1. curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh

  2. chmod 755 get_helm.sh

  3. ./get_helm.sh

在执行get_helm.sh脚本的过程中,如果无法获取helm安装包,可以提前通过https://github.com/kubernetes/helm/releases下载当前最新稳定版本的安装包到当前目录,再执行get_helm.sh文件。    这里使用的是helm-v2.9.1-linux-amd64.tar.gz。

3.客户端tiller安装

创建serviceaccount和clusterrolebinding

  1. kubectl create serviceaccount --namespace kube-system tiller

  2. kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

安装tiller

  1. helm init  -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1

为tiller设置serviceaccount

  1. kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

检查是否安装成功

  1. kubectl -n kube-system get pods|grep tiller

  2. tiller-deploy-59c7578f9b-qqwpm          1/1       Running   0          17h

  1. helm version

  2. Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

  3. Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}


四:Helm的使用

1.helm search: 搜索可用的Chart
Helm初始化完成之后,默认配置为使用官方的Kubernetes Chart仓库。官方仓库包含大量的经过组织和持续维护的Chart,这个仓库通常命名为stable。
可以用helm inspect <chart_name>命令查看Chart的详细信息。kubernetes中如何实现Helm

2.helm create:创建一个chart
helm create nginx
kubernetes中如何实现Helm
templates目录下的deployment.yaml是部署应用的yaml文件,其中的双?括号包扩起来的部分是Go template,其中的Values是在 values.yaml ?件中定义。

a.charts目录中是本chart依赖的chart,当前是空的
b.Chart.yaml这个yaml文件用于描述Chart的基本信息,如名称版本等
c.templates是Kubernetes manifest文件模板目录,模板使用chart配置的值生成Kubernetes manifest文件。模板文件使用的Go语言模板语法
d.templates/NOTES.txt 纯文本文件,可在其中填写chart的使用说明
e.value.yaml 是chart配置的默认值

3. helm install –dry-run –debug ./: 验证模板和配置

  1. [debug] Created tunnel using local port: '44785'

  2. [debug] SERVER: "127.0.0.1:44785"

  3. [debug] Original chart version: ""

  4. [debug] CHART PATH: /root/helm/nginx

  5. NAME: listless-blackbird

  6. REVISION: 1

  7. RELEASED: Wed Jun  6 10:00:49 2018

  8. CHART: nginx-0.1.0

  9. USER-SUPPLIED VALUES:

  10. {}

  11. COMPUTED VALUES:

  12. affinity: {}

  13. image:

  14.   pullPolicy: IfNotPresent

  15.   repository: nginx

  16.   tag: stable

  17. ingress:

  18.   annotations: {}

  19.   enabled: false

  20.   hosts:

  21.   - chart-example.local

  22.   path: /

  23.   tls: []

  24. nodeSelector: {}

  25. replicaCount: 1

  26. resources: {}

  27. service:

  28.   port: 80

  29.   type: ClusterIP

  30. tolerations: []

  31. HOOKS:

  32. MANIFEST:

  33. ---

  34. # Source: nginx/templates/service.yaml

  35. apiVersion: v1

  36. kind: Service

  37. metadata:

  38.   name: listless-blackbird-nginx

  39.   labels:

  40.     app: nginx

  41.     chart: nginx-0.1.0

  42.     release: listless-blackbird

  43.     heritage: Tiller

  44. spec:

  45.   type: ClusterIP

  46.   ports:

  47.     - port: 80

  48.       targetPort: http

  49.       protocol: TCP

  50.       name: http

  51.   selector:

  52.     app: nginx

  53.     release: listless-blackbird

  54. ---

  55. # Source: nginx/templates/deployment.yaml

  56. apiVersion: apps/v1beta2

  57. kind: Deployment

  58. metadata:

  59.   name: listless-blackbird-nginx

  60.   labels:

  61.     app: nginx

  62.     chart: nginx-0.1.0

  63.     release: listless-blackbird

  64.     heritage: Tiller

  65. spec:

  66.   replicas: 1

  67.   selector:

  68.     matchLabels:

  69.       app: nginx

  70.       release: listless-blackbird

  71.   template:

  72.     metadata:

  73.       labels:

  74.         app: nginx

  75.         release: listless-blackbird

  76.     spec:

  77.       containers:

  78.         - name: nginx

  79.           image: "nginx:stable"

  80.           imagePullPolicy: IfNotPresent

  81.           ports:

  82.             - name: http

  83.               containerPort: 80

  84.               protocol: TCP

  85.           livenessProbe:

  86.             httpGet:

  87.               path: /

  88.               port: http

  89.           readinessProbe:

  90.             httpGet:

  91.               path: /

  92.               port: http

  93.           resources:

  94.             {}

4.helm install : 安装Chart
在安装过程中,Helm客户端会输出一些有用的信息,例如Release的状态,以及额外的配置步骤等。在helm install过程中,可以使用helm status命令来跟踪release状态。

5.自定义Chart配置
a.--values 或者-f: 使用yaml配置文件进行参数配置,可以配置多个文件,最后一个优先生效。多个文件中重复的value会进行覆盖操作,不同的value会叠加生效。
b.--set: 在命令行直接设置参数
举例:
helm install stable/mariadb -f config.yaml -f config2.yaml
helm install stable/mariadb --set mariadbDatabase=firstdb,mariadbRootPassword=abcdefg

6.helm upgrade和helm rollback: 应用的更新或回滚

helm upgrade会利用用户提供的更新信息来对Release进行更新。应为Kubernetes Chart可能会有很大的规模或者相对复杂的关系,helm 会尝试进行最小影响的更新,只更新相对于上一个release来说发生变化的内容。

7.helm delete : 删除一个Release

8.helm repo : 仓库的使用
a. helm repo list : 列出所有仓库

  1. NAME      URL

  2. stable    https://kubernetes-charts.storage.googleapis.com

  3. local     http://127.0.0.1:8879/charts

b. helm repo add : 添加仓库

c.helm repo update : 更新仓库中的Chart信息

9.快速制作自定义的Chart
同其它软件开发过程一样,快速制作一个简单Chart的方法,就是从其它项目中复制并修改。例如我们要简单地改写前面MariaDB的Chart 令其使用本地的私有镜像仓库,可以按照如下步骤进行:
a. 下载Chart: 使用helm fetch stable/mariadb命令下载这一Chart的压缩包
b.编辑Chart
c.利用tar 解压后,将目录重新命名为mymariadb
d.修改templates中的deployment.yaml
e.将Chart.yaml 中的版本号修改为0.1.1 name为mymariadb
f.使用helm package mymariadb打包chart,并生成一个名为mymariadb-0.11.tgz的压缩包
g.安装chart 通过helm install mymariadb-0.1.1.tgz命令将新生成的Chart安装到集群当中。

10. 搭建私有Repository
Chart仓库主要由Chart压缩包和索引文件构成,通过HTTP/HTTPS 对外提供服务。
通过 helm repo index 创建索引

以上是“kubernetes中如何实现Helm”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

kubernetes中如何实现Helm

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

kubernetes中如何实现Helm

这篇文章主要介绍kubernetes中如何实现Helm,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:简介在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并
2023-06-04

Helm如何解决Kubernetes中部署应用的问题

这篇文章将为大家详细讲解有关Helm如何解决Kubernetes中部署应用的问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、背景Kubernetes(k8s)是一个基于容器技术的分布式
2023-06-04

docker中如何使用helm

这篇文章将为大家详细讲解有关docker中如何使用helm,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在k8s中,我们对无状态应用如nginx、myapp,我们可以使用deployment控制器
2023-06-04

kubernetes中如何实现Pod健康检查

小编给大家分享一下kubernetes中如何实现Pod健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:前言对Pod的健康状态检查可以通过两类探针来检查:
2023-06-04

kubernetes中如何实现Istio流量管理

这篇文章主要为大家展示了“kubernetes中如何实现Istio流量管理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes中如何实现Istio流量管理”这篇文章吧。一:简介Is
2023-06-04

kubernetes如何实现Service中的故障排查

这篇文章主要为大家展示了“kubernetes如何实现Service中的故障排查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes如何实现Service中的故障排查”这篇文章吧。
2023-06-04

kubernetes中如何实现RBAC 角色访问控制

小编给大家分享一下kubernetes中如何实现RBAC 角色访问控制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:RBAC体系结构二:RBAC角色绑定流程三:说明1.RBAC的优势a.对集群中的资源和非资源权限均有完
2023-06-04

kubernetes中如何实现Pod自动扩容与缩容

小编给大家分享一下kubernetes中如何实现Pod自动扩容与缩容,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:简介Kubernetes通过HPA控制器,用于实现基本CPU使用率进行自动Pod扩容和缩容的功能。HAP
2023-06-04

kubernetes中如何实现分布式负载测试Locust

这篇文章主要介绍了kubernetes中如何实现分布式负载测试Locust,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一: 前言 本文介绍如何在Kubernetes集群中
2023-06-04

揭秘:如何为 Kubernetes 实现原地升级

作者 | 王思宇(酒祝) 阿里云技术专家参与阿里巴巴云原生文末留言互动,即有机会获得赠书福利及作者答疑!概念介绍原地升级一词中,“升级”不难理解,是将应用实例的版本由旧版替换为新版。那么如何结合 Kubernetes 环境来理解“原地”呢
2023-06-04

Kubernetes中如何部署Spark

小编给大家分享一下Kubernetes中如何部署Spark,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Spark是新一代分布式内存计算框架,Apache开源的顶
2023-06-27

kubernetes中Secret如何使用

小编给大家分享一下kubernetes中Secret如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一: 简介Secret 可以作为数据卷被挂载,或作为环境
2023-06-04

Azure中如何部署Kubernetes

这篇文章将为大家详细讲解有关Azure中如何部署Kubernetes,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨
2023-06-27

helm 中的“if 和 (ne)”运算符如何工作?

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《helm 中的“if 和 (ne)”运算符如何工作?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮
helm 中的“if 和 (ne)”运算符如何工作?
2024-04-05

kubernetes中如何使用PodPreset

这篇文章主要介绍了kubernetes中如何使用PodPreset,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:简介 PodPreset 资源对象只有 kubern
2023-06-04

如何将变量值传递给 Helm 图表中的 .Files.Glob?

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天编程网就整理分享《如何将变量值传递给 Helm 图表中的 .Files.Glob?》,聊聊,希望可以帮
如何将变量值传递给 Helm 图表中的 .Files.Glob?
2024-04-05

如何进行kubernetes scheduler基于map/reduce模式实现

如何进行kubernetes scheduler基于map/reduce模式实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。优选阶段通过分map/reduce
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录