美文网首页
k8s helm 学习笔记

k8s helm 学习笔记

作者: 华阳_3bcf | 来源:发表于2018-10-04 09:00 被阅读0次

    Helm 是什么

    每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

    Helm 的架构

    Helm 有两个重要的概念:chartrelease

    chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、yum 中的软件安装包。

    release 是 chart 的运行实例,代表了一个正在运行的应用。当 chart 被安装到 Kubernetes 集群,就生成一个 release。chart 能够多次安装到同一个集群,每次安装都是一个 release。

    Helm 是包管理工具,这里的包就是指的 chart。

    Helm 包含两个组件:Helm 客户端 和 Tiller 服务器。

    简单的讲:Helm 客户端负责管理 chart;Tiller 服务器负责管理 release。

    安装和部署 Helm 客户端和 Tiller 服务器

    将 Helm 客户端安装在能够执行 kubectl 命令的节点上

    curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
    
    root@roy-eas-vm-k8s-1:~# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  7230  100  7230    0     0  20792      0 --:--:-- --:--:-- --:--:-- 20775
    Downloading https://kubernetes-helm.storage.googleapis.com/helm-v2.11.0-linux-amd64.tar.gz
    Preparing to install helm and tiller into /usr/local/bin
    helm installed into /usr/local/bin/helm
    tiller installed into /usr/local/bin/tiller
    Run 'helm init' to configure helm.
    

    Tiller 服务器安装非常简单,只需要执行 helm init

    root@roy-eas-vm-k8s-1:~# helm init
    Creating /root/.helm
    Creating /root/.helm/repository
    Creating /root/.helm/repository/cache
    Creating /root/.helm/repository/local
    Creating /root/.helm/plugins
    Creating /root/.helm/starters
    Creating /root/.helm/cache/archive
    Creating /root/.helm/repository/repositories.yaml
    Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
    Adding local repo with URL: http://127.0.0.1:8879/charts
    $HELM_HOME has been configured at /root/.helm.
    
    Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
    
    Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
    To prevent this, run `helm init` with the --tiller-tls-verify flag.
    For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
    Happy Helming!
    

    现在,helm version 已经能够查看到客户端和服务器的版本信息了。

    root@roy-eas-vm-k8s-1:~# helm version
    Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean”}
    

    使用 Helm

    Helm 安装成功后,可执行 helm search 查看当前可安装的 chart。例如找mysql

    root@roy-eas-vm-k8s-1:~# helm search  mysql
    NAME                                CHART VERSION   APP VERSION DESCRIPTION
    incubator/mysqlha                   0.4.0           5.7.13      MySQL cluster with a single master and zero or more slave...
    stable/mysql                        0.10.1          5.7.14      Fast, reliable, scalable, and easy to use open-source rel...
    stable/mysqldump                    1.0.0           5.7.21      A Helm chart to help backup MySQL databases using mysqldump
    stable/prometheus-mysql-exporter    0.1.0           v0.10.0     A Helm chart for prometheus mysql exporter with cloudsqlp...
    stable/percona                      0.3.2           5.7.17      free, fully compatible, enhanced, open source drop-in rep...
    stable/percona-xtradb-cluster       0.1.5           5.7.19      free, fully compatible, enhanced, open source drop-in rep...
    

    Helm 仓库

    root@roy-eas-vm-k8s-1:~# helm repo list
    NAME        URL
    stable      https://kubernetes-charts.storage.googleapis.com
    local       http://127.0.0.1:8879/charts
    

    Helm 安装时已经默认配置好了两个仓库:stablelocalstable 是官方仓库,local 是用户存放自己开发的 chart 的本地仓库。

    用户可以通过 helm repo add 添加更多的仓库,比如企业的私有仓库,仓库的管理和维护方法请参考官网文档 https://docs.helm.sh

    添加仓库:

    root@roy-eas-vm-k8s-1:~# helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
    root@roy-eas-vm-k8s-1:~# helm repo list
    NAME        URL
    stable      https://kubernetes-charts.storage.googleapis.com
    local       http://127.0.0.1:8879/charts
    incubator   http://storage.googleapis.com/kubernetes-charts-incubator
    

    安装 chart 也很简单,执行如下命令可以安装 MySQL。

    helm install stable/mysql
    

    如果看到报错,通常是因为 Tiller 服务器的权限不足。

    # helm install --name roy-kafka  incubator/kafka
    Error: release roy-kafka failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "default"
    

    执行如下命名添加权限:

    $ kubectl create serviceaccount --namespace kube-system tiller
    $ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
    $ kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
    

    然后再次执行

    helm install stable/mysql
    

    相关文章

      网友评论

          本文标题:k8s helm 学习笔记

          本文链接:https://www.haomeiwen.com/subject/odxxaftx.html