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

          相关实践学习
          容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
          通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
          云原生实践公开课
          课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
          相关文章
          |
          21天前
          |
          Kubernetes 搜索推荐 网络协议
          使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
          使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案
          36 8
          |
          2天前
          |
          Kubernetes 网络协议 Python
          一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)
          一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)
          |
          2天前
          |
          Kubernetes 应用服务中间件 开发工具
          一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(一)
          一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(一)
          |
          6天前
          |
          Kubernetes 负载均衡 应用服务中间件
          部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
          部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
          部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
          |
          6天前
          |
          Kubernetes 安全 前端开发
          部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)上
          部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)上
          |
          7天前
          |
          Kubernetes Shell 网络安全
          Shell脚本快速部署Kubernetes(K8S v1.1版本)集群系统
          Shell脚本快速部署Kubernetes(K8S v1.1版本)集群系统
          |
          9天前
          |
          敏捷开发 存储 缓存
          云效产品使用常见问题之通过vpc内网部署到ack失败如何解决
          云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
          |
          17天前
          |
          Kubernetes Linux 网络安全
          kubeadm安装k8s
          该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
          77 1
          |
          17天前
          |
          Kubernetes 监控 Cloud Native
          构建高效云原生应用:基于Kubernetes的微服务治理实践
          【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
          18 4
          |
          18天前
          |
          JSON Kubernetes Go
          无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
          无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
          28 0
          无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用