当前位置:主页 > 查看内容

在CCE中对接Kubernetes的包管理器Helm_云容器引擎 CCE_最佳实践_

发布时间:2021-09-23 00:00| 位朋友查看

简介:概述 Helm是Kubernetes的包管理器,主要用来管理Charts。Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。可以在您部署应用的时候自定义应用程序的一些Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过Helm打包应用、管理应用依……

概述

Helm是Kubernetes的包管理器,主要用来管理Charts。Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。可以在您部署应用的时候自定义应用程序的一些Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过Helm打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用Helm后不用需要编写复杂的应用部署文件,可以以简单的方式在Kubernetes上查找、安装、升级、回滚、卸载应用程序。

Helm和Kubernetes之间的关系可以如下类比:

  • Helm <–> Kubernetes
  • Apt <–> Ubuntu
  • Yum <–> CentOS
  • Pip <–> Python

Helm的整体架构如下图:

Kubernetes的应用编排存在着一些问题,Helm可以用来解决这些问题,如下:

  • 管理、编辑与更新大量的Kubernetes配置文件。
  • 部署一个含有大量配置文件的复杂Kubernetes应用。
  • 分享和复用Kubernetes配置和应用。
  • 参数化配置模板支持多个环境。
  • 管理应用的发布:回滚、diff和查看发布历史。
  • 控制一个部署周期中的某一些环节。
  • 发布后的测试验证。

前提条件

在CCE中创建的Kubernetes集群已对接kubectl,具体请参见通过kubectl连接集群

安装Helm

本文档将在CCE的节点上安装helm。

Helm下载链接:https://github.com/helm/helm/releases,请选择合适的版本,本文以helm v3.3.0为例进行演示。

  1. 在CCE节点上下载Helm客户端。

    wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz

  2. 解压Helm包。

    tar -xzvf helm-v3.3.0-linux-amd64.tar.gz

    命令行终端显示如下信息:

  3. 将helm拷贝到系统path路径下,以下为/usr/local/bin/helm。

    mv linux-amd64/helm /usr/local/bin/helm

  4. 查看helm版本。

    helm version
    version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}

  5. helm v3.0.0版本无需安装tiller。

    Helm v3.0.0及以上版本已经取消Tiller,所以不需要安装Tiller,Helm默认读取~/.kube/config进行Kubernetes连接。

安装Helm模板chart包

CCE提供的模板不能满足要求时,可下载模板的chart包进行安装。

在https://github.com/helm/charts的stable目录中查找您需要的chart包,下载后将chart包上传至节点。
  1. 下载并解压已获取的chart包,一般chart包格式为.zip。

    unzip chart.zip

  2. 安装Helm模板。

    helm install aerospike/ --generate-name

  3. 安装完成后,执行helm list查看已经安装的模板实例状态。

云上实践

根据创建的资源来修改chart包中的文件,chart包由chart.yaml、README.md、values.yaml、.helmianore和templates文件夹组成。修改chart包主要是根据templates文件夹内的deployment.yaml、statefulset.yaml、service.yaml文件来修改values.yaml中的参数。

  1. 修改values中的镜像参数,可根据帐号中已存在的镜像与版本来修改。
  2. 使用云硬盘,具体请参见使用华为云硬盘
  3. 使用弹性负载均衡,具体请参见使用华为云弹性负载均衡
  4. 修改values中service如下参数。

    • 将kubernetes.io/elb.class的key值修改为union,即使用共享型负载均衡实例。
    • 将loadBlancerIP的key值修改为指定ELB实例的地址。

常见问题

  • 执行Helm version时,提示如下错误信息:
    Client:
    &version.Version{SemVer:"v3.3.0",
    GitCommit:"012cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"}
    E0718 11:46:10.132102    7023 portforward.go:332] an error occurred
    forwarding 41458 -> 44134: error forwarding port 44134 to pod
    d566b78f997eea6c4b1c0322b34ce8052c6c2001e8edff243647748464cd7919, uid : unable
    to do port forwarding: socat not found.
    Error: cannot connect to Tiller

    出现上述问题,说明未安装socat,请执行如下命令安装socat。

    yum install socat -y

  • socat已安装,执行Helm version时,提示如下错误信息:
    test@local:~/k8s/helm/test$ helm version
    Client: &version.Version{SemVer:"v3.3.0", GitCommit:"021cb0ac1a1b2f888144ef5a67b8dab6c2d45be6", GitTreeState:"clean"}
    Error: cannot connect to Tiller

    Helm模板从“.Kube/config”中读取配置证书和kubernetes进行通讯,出现上述错误信息说明kubectl配置有误,请重新对接kubectl,具体请参见通过kubectl连接集群

  • 对接云存储后,存储未创建成功。

    出现上述问题可能是创建的pvc中annotation字段导致的,请修改模板名称后再次进行安装。

  • 如果kubectl没有配置好,helm install时会出现如下报错:
    [root@prometheus-57046 ~]# helm install prometheus/ --generate-name
    WARNING: This chart is deprecated
    Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused

    解决办法:给节点配置kubeconfig,配置方法请参见通过kubectl连接集群


本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐