天天看點

k8s之helm學習筆記

Helm 是什麼

每個成功的軟體平台都有一個優秀的打包系統,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 則是 Kubernetes 上的包管理器。

Helm 的架構

Helm 有兩個重要的概念:chart 和 release。

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

Tiller 伺服器安裝非常簡單,隻需要執行 helm init:

現在,使用 helm version 指令已經能夠檢視到用戶端和伺服器的版本資訊了。

使用 Helm

Helm 安裝成功後,可執行 helm search 檢視目前可安裝的 chart。例如找mysql :helm searchmysql

Helm 倉庫 :helm repo list

Helm 安裝時已經預設配置好了兩個倉庫:stable 和 local。stable 是官方倉庫,local 是使用者存放自己開發的 chart 的本地倉庫。

使用者可以通過 helm repo add 添加更多的倉庫,比如企業的私有倉庫,倉庫的管理和維護方法請參考官網文檔 https://docs.helm.sh

添加倉庫:

helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator

helm repo list

安裝 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"

繼續閱讀