1. Helm简介

       为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。

  Helm 采用客户端/服务器架构,如下组件:

  • Helm CLI:命令行客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
  • Tiller:是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。
  • Chart:Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
  • Repoistory:Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
  • Release:使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。

    注:需要注意的是:Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例。
 

 

2. Helm工作原理

      Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

helm 安装mysql sc helm 安装ceph_helm 安装mysql sc

 

Chart Install 过程:

  • Helm从指定的目录或者tgz文件中解析出Chart结构信息
  • Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller
  • Tiller根据Chart和Values生成一个Release
  • Tiller将Release发送给Kubernetes用于生成Release
     

 

3. Helm安装

     k8s所在机器上先安装依赖socat

 

    3.1  客户端安装

      下载地址:https://github.com/kubernetes/helm/releases

       解压并至/usr/bin/目录下,执行命令发现tiller没有安装,接着安装服务端tiller

$ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Error: could not find tiller

    3.2  服务端安装

        使用阿里镜像来安装Tiller。

   $ helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

helm 安装mysql sc helm 安装ceph_服务端_02

$ helm serve &
$ helm repo add local http://localhost:8879/charts

    3.3 添加Ceph-Helm charts到本地repo

$ git clone https://github.com/ceph/ceph-helm
$ cd ceph-helm/ceph
$ make

    3.4 配置Ceph集群

$ cat ceph-overrides.yaml 
 network:
   public:  192.168.74.57/22    # 主机机器的ip  而不是k8s集群的ip范围
   cluster: 192.168.74.57/22     # 必须与public相同osd_devices:
   - name: dev-sdb   
     device: /dev/sdb      # 使用前或者重新安装前都要mkfs.ext4   /dev/vdb格式化,会自动分为两个分区
     zap: "1"storageclass:
   name: ceph-rbd
   pool: rbd
   user_id: admin

    3.5 配置RBAC权限

     

kubectl apply -f ceph-helm/ceph/rbac.yaml

    3.6 helm部署安装

 

helm install --name=ceph local/ceph --namespace=ceph -f ceph-overrides.yaml

 

QA

  1. Helm查看版本出错

helm version
 Client: &version.Version{SemVer:”v2.11.0″, GitCommit:”2e55dbe1fdb5fdb96b75ff144a339489417b146b”, GitTreeState:”clean”}
 E1123 17:48:57.894265 12852 portforward.go:331] an error occurred forwarding 46664 -> 44134: error forwarding port 44134 to pod 6a33f6504eea56ab22cdce9e75e2fc044451831171eeac2fcd990b56e4ce042b, uid : unable to do port forwarding: socat not found.
 Error: cannot connect to Tiller

    解决所有k8s node节点安装 yum install -y socat 

 

参考:

   http://docs.ceph.com/docs/master/start/kube-helm/