k8s helm 学习笔记

2018-10-04  本文已影响0人  华阳_3bcf

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
上一篇下一篇

猜你喜欢

热点阅读