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搭建和管理企业级网站应用
          相关文章
          |
          2天前
          |
          存储 Kubernetes 容器
          K8S部署nexus
          该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
          |
          11天前
          |
          人工智能 Kubernetes 安全
          赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
          赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
          51 13
          |
          11天前
          |
          存储 Kubernetes 关系型数据库
          阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
          本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
          |
          25天前
          |
          Kubernetes Cloud Native 微服务
          云原生入门与实践:Kubernetes的简易部署
          云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
          |
          1月前
          |
          Kubernetes 监控 安全
          容器化技术:Docker与Kubernetes的实战应用
          容器化技术:Docker与Kubernetes的实战应用
          |
          1月前
          |
          存储 Kubernetes Devops
          Kubernetes集群管理和服务部署实战
          Kubernetes集群管理和服务部署实战
          48 0
          |
          1月前
          |
          Kubernetes 监控 Cloud Native
          Kubernetes集群的高可用性与伸缩性实践
          Kubernetes集群的高可用性与伸缩性实践
          71 1
          |
          2月前
          |
          JSON Kubernetes 容灾
          ACK One应用分发上线:高效管理多集群应用
          ACK One应用分发上线,主要介绍了新能力的使用场景
          |
          2月前
          |
          Kubernetes 持续交付 开发工具
          ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
          ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
          |
          2月前
          |
          Kubernetes Ubuntu Linux
          Centos7 搭建 kubernetes集群
          本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
          203 4
          下一篇
          DataWorks