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

          相关实践学习
          通过Ingress进行灰度发布
          本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
          容器应用与集群管理
          欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
          目录
          打赏
          0
          0
          0
          0
          36
          分享
          相关文章
          部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
          借助阿里云ACK One注册集群,充分利用阿里云强大ACS GPU算力,实现DeepSeek推理模型高效部署。
          部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
          介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
          阿里云ACK+GitLab企业级部署实战教程
          GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
          大道至简-基于ACK的Deepseek满血版分布式推理部署实战
          本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
          ACK One多集群Service帮助大批量应用跨集群无缝迁移
          ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
          ACK One多集群网关:实现高效容灾方案
          ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
          ubuntu使用kubeadm搭建k8s集群
          通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
          167 12
          OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
          聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
          Kubernetes Ingress:灵活的集群外部网络访问的利器
          《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
          92 2
          阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
          本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。

          热门文章

          最新文章

          AI助理

          你好,我是AI助理

          可以解答问题、推荐解决方案等