helm安装和使用-通过helm部署k8s应用

简介: helm安装和使用-通过helm部署k8s应用

helm安装

Helm相当于linux环境下的yum包管理工具。helm是k8s中的一个命令行客户端工具,helm是tiller的客户端,tiller是一个守护进程,接收helm的请求,helm把请求交给tiller,tiler和apiserver交互,由apiserver负责完成创建,我们用哪个chart需要下载到本地,基于本地这个chart部署实例,这个部署的实例叫做release。

1.chart是什么?

一个helm程序包,比方说我们部署nginx,需要deployment的yaml,需要service的yaml,这两个清单文件就是一个helm程序包,在k8s中把这些yaml清单文件叫做chart图表

2.values.yaml文件

values.yaml文件为模板中的文件赋值,可以实现我们自定义安装,如果是chart开发者需要自定义模板,如果是chart使用者只需要修改values.yaml即可。

3.helm可理解如下

helm把kubernetes资源打包到一个chart中,制作并完成各个chart和chart本身依赖关系并利用chart仓库实现对外分发,而helm还可实现可配置的对外发布,通过values.yaml文件完成可配置的发布,如果chart版本更新了,helm自动支持滚更更新机制,还可以一键回滚,但是不是适合在生产环境使用,除非具有定义自制chart的能力,helm属于kubernetes一个项目,下载地址:

https://github.com/helm/helm/releases

找这个checksum的,解压之后按下面解压即可

helm官方网站:

https://helm.sh/

helm 官方的chart站点:

https://hub.kubeapps.com/

4.repository、release、chart关系


repository:存放chart图表的仓库,提供部署k8s应用程序需要的那些yaml清单文件

release:特定的chart部署于目标集群上的一个实例

chart--->通过values.yaml这个文件赋值-->生成release实例

helm也是go语言开发的

5.安装helm客户端,在k8s的master节点操作

下载软件包,软件包所在百度网盘地址如下:

    链接:https://pan.baidu.com/s/15Qlcng6--QwCxoZjt1TGeA
    提取码:c70b

    tar -xzvf  helm-v2.13.1-linux-amd64.tar.gz

    cd linux-amd64

    cp helm /usr/local/bin

    helm version

      报错,显示没有tiller server端

      安装helm的服务端tiller

      安装helm服务端tiller

      rbac.yaml参考链接如下:

      https://github.com/helm/helm/blob/master/docs/rbac.md

      cat rbac.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: tiller
        namespace: kube-system
      ---
      apiVersion: rbac.authorization.k8s.io/v1beta1
      kind: ClusterRoleBinding
      metadata:
        name: tiller
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
        - kind: ServiceAccount
          name: tiller
          namespace: kube-system

      更新yaml文件

      kubectl apply -f rbac.yaml


      把tiller的镜像压缩包传到k8s的各个node节点,然后手动docker load  -i 把镜像解压到本地,镜像所在百度网盘地址如下:

        链接:https://pan.baidu.com/s/1Z_yuava-8W65mn5tla7cFw 
        提取码:bd2n

        在k8s的node节点解压镜像

        docker load -i tiler_2_13_1.tar.gz

        cat tiller.yaml

        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          creationTimestamp: null
          labels:
            app: helm
            name: tiller
          name: tiller-deploy
          namespace: kube-system
        spec:
          selector:
            matchLabels:
             app: helm
             name: tiller
          replicas: 1
          strategy: {}
          template:
            metadata:
              creationTimestamp: null
              labels:
                app: helm
                name: tiller
            spec:
              automountServiceAccountToken: true
              serviceAccount:  tiller
              containers:
              - env:
                - name: TILLER_NAMESPACE
                  value: kube-system
                - name: TILLER_HISTORY_MAX
                  value: "0"
                image: gcr.io/kubernetes-helm/tiller:v2.13.1
                imagePullPolicy: IfNotPresent
                livenessProbe:
                  httpGet:
                    path: /liveness
                    port: 44135
                  initialDelaySeconds: 1
                  timeoutSeconds: 1
                name: tiller
                ports:
                - containerPort: 44134
                  name: tiller
                - containerPort: 44135
                  name: http
                readinessProbe:
                  httpGet:
                    path: /readiness
                    port: 44135
                  initialDelaySeconds: 1
                  timeoutSeconds: 1
                resources: {}
        status: {}
        ---
        apiVersion: v1
        kind: Service
        metadata:
          creationTimestamp: null
          labels:
            app: helm
            name: tiller
          name: tiller-deploy
          namespace: kube-system
        spec:
          ports:
          - name: tiller
            port: 44134
            targetPort: tiller
          selector:
            app: helm
            name: tiller
          type: ClusterIP
        status:
          loadBalancer: {}
        ...

        更新yaml文件

        kubectl apply -f tiller.yaml


        验证tiller是否部署成功:

        kubectl get pods -n kube-system
        显示如下,说明部署成功

          tiller-deploy-7bd89687c8-tv7cn    1/1     Running   0          2d8h


          验证helm版本

          helm version

          可看到如下:

          Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
          Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

          上面结果可看到helm客户端和服务端版本一致,都安装好了

          helm常用命令如下

          (1)和release相关的

          升级一个版本

          helm upgrade

          helm upgrade [RELEASE] [CHART] [flags]

          回滚一个版本

          helm rollback

          helm rollback [flags] [RELEASE] [REVISION]

          创建一个release实例

          helm install

          删除一个release

          helm delete

          查看历史

          helm  history

          (2)和chart相关的

          查看chart的详细信息

          helm inspect

          把chart下载下来

          helm  fetch

          把chart打包

          helm  package

          相关实践学习
          深入解析Docker容器化技术
          Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
          相关文章
          |
          8月前
          |
          存储 Kubernetes 开发工具
          使用ArgoCD管理Kubernetes部署指南
          ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
          489 0
          |
          7月前
          |
          存储 Kubernetes 异构计算
          Qwen3 大模型在阿里云容器服务上的极简部署教程
          通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
          |
          8月前
          |
          存储 Kubernetes 监控
          K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
          总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
          795 33
          |
          8月前
          |
          Kubernetes 开发者 Docker
          集群部署:使用Rancher部署Kubernetes集群。
          以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
          459 19
          |
          28天前
          |
          人工智能 算法 调度
          阿里云ACK托管集群Pro版共享GPU调度操作指南
          本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
          186 1
          |
          1月前
          |
          弹性计算 监控 调度
          ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
          ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
          213 89
          |
          6月前
          |
          资源调度 Kubernetes 调度
          从单集群到多集群的快速无损转型:ACK One 多集群应用分发
          ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
          257 9
          |
          6月前
          |
          资源调度 Kubernetes 调度
          从单集群到多集群的快速无损转型:ACK One 多集群应用分发
          本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
          |
          8月前
          |
          人工智能 分布式计算 调度
          打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
          ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
          |
          11月前
          |
          Prometheus Kubernetes 监控
          OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
          聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。

          热门文章

          最新文章

          推荐镜像

          更多