首页 > 其他分享 >Kubernetes14-Helm:Kubernetes应用包管理

Kubernetes14-Helm:Kubernetes应用包管理

时间:2022-10-09 11:58:29浏览次数:49  
标签:Kubernetes Kubernetes14 Chart helm Helm release Tiller

1、Helm概述

1.1、Helm介绍

  • 随着容器技术逐渐被企业接受,在Kubernetes上已经能便捷地部署简单的应用了。但对于复杂的应用中间件,在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求、环境变量等内容,并能为这些容器定制存储、网络等设置,最后设计和编写Deployment、ConfigMap、Service及Ingress等相关YAML配置文件,再提交给Kubernetes部署。这些复杂的过程将逐步被Helm应用包管理工具实现。
  • Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes上部署的复杂应用进行定义、安装和更新。Helm以Chart的方式对应用软件进行描述,可以方便地创建、版本化、共享和发布复杂的应用软件。
  • Helm是Kubernetes的软件包管理工具。包管理器类似Centos中使用的yum或者Python中的pip一样,能快速查找、下载和安装软件包。

1.2、Helm相关组件及概念

  • Chart:一个Helm包,其中包含运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义。可以理解为包含了一组定义 Kubernetes 资源相关的YAML文件。
  • Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以被安装多次。例如有一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。
  • Repository:Helm chart的仓库,Repository本质上是一个Web服务器,该服务器保存了一系列的Chart软件包以供用户下载,并且提供了一个该Repository的Chart包的清单文件以供查询。Helm可以同时管理多个不同的Repository。
  • 简单来说,Helm整个系统的主要任务就是,在仓库中查找需要的Chart,然后将Chart以Release的形式安装到Kubernetes集群中。

1.3、Helm原理

  • helm架构图

1、Helm主要过程

  • 创建release过程:
    • helm客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息;
    • helm客户端指定的chart结构和values信息通过gRPC传递给Tiller;
    • Tiller服务端根据chart和values生成一个release;
    • Tiller将installrelease请求直接传递给kube-apiserver。
  • 删除release:
    • helm客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息;
    • helm客户端指定的chart结构和values信息通过gRPC传递给Tiller;
    • Tiller服务端根据chart和values生成一个release;
    • Tiller将deleterelease请求直接传递给kube-apiserver。
  • 更新release:
    • helm客户端将需要更新的chart的release名称、chart结构和value信息传给Tiller;
    • Tiller将收到的信息生成新的release,并同时更新这个release的history;
    • Tiller将新的release传递给kube-apiserver进行更新。

2、安装Helm

  • Helm由HelmClient和TillerServer两个组件组成。

2.1、HelmClient

  • HelmClient是一个客户端,拥有对Repository、Chart、Release等对象的管理能力。
  • 使用二进制包安装helm
    • 下载HelmClient:https://get.helm.sh/helm-v3.8.2-linux-amd64.tar.gz
]# tar zvfx helm-v3.8.2-linux-amd64.tar.gz

//helm是一个命令行工具
]# ls -l ./linux-amd64/
-rwxr-xr-x 1 3434 3434 44630016 4月  14 01:47 helm
-rw-r--r-- 1 3434 3434    11373 4月  14 01:56 LICENSE
-rw-r--r-- 1 3434 3434     3367 4月  14 01:56 README.md

//将helm放到bin目录下
]# cp linux-amd64/helm /usr/local/bin/
  • 查看安装版本
]# helm version
version.BuildInfo{Version:"v3.8.2", GitCommit:"6e3701edea09e5d55a8ca2aae03a68917630e91b", GitTreeState:"clean", GoVersion:"go1.17.5"}

2.2、

1

#                                                                                                                                       #

标签:Kubernetes,Kubernetes14,Chart,helm,Helm,release,Tiller
From: https://www.cnblogs.com/maiblogs/p/16771609.html

相关文章

  • Docker Desktop 可以直接启用Kubernetes 1.25 了
    作为目前事实上的容器编排系统标准,K8s无疑是现代云原生应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个K8s的环境,DockerDesktop自带了Kubernetes服务,但是在......
  • Docker Desktop 可以直接启用Kubernetes 1.25 了
    作为目前事实上的容器编排系统标准,K8s无疑是现代云原生应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个K8s的环境,DockerDesktop自带了Kubernetes服务,但是......
  • [云原生] Kubernetes 控制平面组件:etcd
    EtcdEtcd是CoreOS基于Raft开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。在分布式系统中,如何管理节点间的状态一直是一个......
  • [云原生] Kubernetes 控制平面组件:生命周期管理和服务发现
    Pod的生命周期包括初始化容器,容器启动之后钩子函数,就绪探测,存活探测,容器关闭前Hook函数,对应的流程图如下:Pod周期的过程如下5步:1.初始化容器阶段初始化pod中每一个容器,......
  • 深入剖析 Kubernetes-1容器技术概念入门
    1从进程说开去1.1前言容器技术的兴起来源于PaaS技术的普及Docker公司发布的Docker项目具有里程碑式的意义Docker项目通过“容器镜像”,解决了应用打包这个根本性难题......
  • Kubernetes资源管理方式和Namespace、pod、label、deployment、service资源介绍
    kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。kubernetes......
  • Kubernetes--LoadBalancer类型的Service资源和ExternalName Service
    LoadBalancer类型的Service资源NodePort类型的Service资源虽然能够于集群外部访问得到,但外部客户端必须得事先得知NodePort和集群中至少一个节点的IP地址,且选定的节点发......
  • kubernetes 网络组件cilium
    1.12配置Linux内核(cilium必选)cilium和其他的cni组件最大的不同在于其底层使用了ebpf技术,而该技术对于Linux的系统内核版本有较高的要求,完成的要求可以查看官网的详细链接,这......
  • 【 云原生 | kubernetes 】- tekton构建CI/CD流水线(一)
    ​ Tekton是用于构建CI/CD管道的云原生解决方案。它由提供构建块的TektonPipelines和支持组件(例如TektonCLI和TektonCatalog)组成,它们使Tekton成为一个完整的生......
  • Kubernetes--NodePort类型的Service资源
    NodePort类型的Service资源NodePort即节点Port,通常在安装部署Kubernetes集群系统时会预留一个端口范围用于NodePort,默认为30000~32767之间的端口。与ClusterIP类型的可省......