k8s包管理工具helm 介紹和安裝

2022-05-21 19:48:16 字數 4234 閱讀 6499

目錄

kubernetes 是乙個提供了基於容器的應用集群管理解決方案,kubernetes 為容器化應用提供了部署執行、資源排程、服務發現和動態伸縮等一系列完整功能。

kubernetes 的核心設計理念是: 使用者定義要部署的應用程式的規則,而 kubernetes 則負責按照定義的規則部署並執行應用程式。如果應用程式出現問題導致偏離了定義的規格,kubernetes 負責對其進行自動修正。例如:定義的應用規則要求部署兩個例項(pod),其中乙個例項異常終止了,kubernetes 會檢查到並重新啟動乙個新的例項。

使用者通過使用 kubernetes api 物件來描述應用程式規則,包括 pod、service、volume、namespace、replicaset、deployment、job等等。一般這些資源物件的定義需要寫入一系列的 yaml 檔案中,然後通過 kubernetes 命令列工具 kubectl 調 kubernetes api 進行部署。

以乙個典型的三層應用 wordpress 為例,該應用程式就涉及到多個 kubernetes api 物件,而要描述這些 kubernetes api 物件就可能要同時維護多個 yaml 檔案。

在進行 kubernetes 軟體部署時,我們面臨下述幾個問題:

helm 是 deis 開發的乙個用於 kubernetes 應用的包管理工具,主要用來管理 charts。有點類似於 ubuntu 中的 apt 或 centos 中的 yum。

helm chart 是用來封裝 kubernetes 原生應用程式的一系列 yaml 檔案。可以在你部署應用的時候自定義應用程式的一些 metadata,以便於應用程式的分發。

對於應用發布者而言,可以通過 helm 打包應用、管理應用依賴關係、管理應用版本並發布應用到軟體倉庫。

本文中講到的是helm v2最新版本,v3版本也已經發布了beta版,在 helm 3 中,tiller 被移除了。

helm client 是使用者命令列工具,其主要負責如下:

tiller server是乙個部署在kubernetes集群內部的 server,其與 helm client、kubernetes api server 進行互動。tiller server 主要負責如下:

監聽來自 helm client 的請求

通過 chart 及其配置構建一次發布

安裝 chart 到kubernetes集群,並跟蹤隨後的發布

通過與kubernetes互動公升級或解除安裝 chart

簡單的說,client 管理 charts,而 server 管理發布 release

解壓後將可執行檔案helm拷貝到/usr/local/bin目錄下即可,這樣helm客戶端就在這台機器上安裝完成了。

[root@master01 helm-soft]# mv linux-amd64/helm /usr/local/bin/

[root@master01 helm-soft]# helm version

client: &version.version

error: could not find tiller

tiller 是以 deployment 方式部署在 kubernetes 集群中的,只需使用以下指令便可簡單的完成安裝,使用阿里雲映象安裝並把預設倉庫設定為阿里雲上的映象倉庫

如果在初始化時報錯

error: cannot connect to tiller
解決方法為在節點執行

yum install -y socat
因為 helm 的服務端 tiller 是乙個部署在 kubernetes 中 kube-system namespace 下 的 deployment,它會去連線 kube-api 在 kubernetes 裡建立和刪除應用。

而從 kubernetes 1.6 版本開始,api server 啟用了 rbac 授權。目前的 tiller 部署時預設沒有定義授權的 serviceaccount,這會導致訪問 api server 時被拒絕。所以我們需要明確為 tiller 部署新增授權。詳細內容可見

[root@master01 helm]# pwd

/root/manifest/helm

[root@master01 helm]# vim rbac.yaml

apiversion: v1

kind: serviceaccount

metadata:

name: tiller

namespace: kube-system

---apiversion: rbac.authorization.k8s.io/v1

kind: clusterrolebinding

metadata:

name: tiller

roleref:

apigroup: rbac.authorization.k8s.io

kind: clusterrole

name: cluster-admin

subjects:

- kind: serviceaccount

name: tiller

namespace: kube-system

[root@master01 helm]# kubectl create -f rbac.yaml

serviceaccount/tiller created

clusterrolebinding.rbac.authorization.k8s.io/tiller created

使用 kubectl patch 更新 api 物件,給 tiller 打上乙個 serviceaccount 的補丁

[root@master01 helm]# kubectl patch deploy --namespace kube-system tiller-deploy -p '}}}'

deployment.extensions/tiller-deploy patched

檢視授權是否成功

[root@master01 helm]# kubectl get deploy --namespace kube-system   tiller-deploy  --output yaml|grep  serviceaccount

serviceaccount: tiller

serviceaccountname: tiller

解除安裝 helm 伺服器端 tiller

如果你需要在 kubernetes 中解除安裝已部署的 tiller,可使用命令helm reset完成解除安裝。

命令自動補全

為了方便 helm 命令的使用,helm 提供了自動補全功能

如果使用 zsh 請執行

$ source
如果使用 bash 請執行

$ source 

$ echo "source > ~/.bashrc

K8S集群管理工具kubectl

kubectl是kubernetes集群的命令列工具,通過kubectl能夠對集群本身進行管理,並能夠在集群上進行容器化應用的安裝和部署 命令格式如下 kubectl command type name flags 引數 例如 kubectl get pod pod1 kubectl get pod...

k8s視覺化管理工具

kubernetes已經成為大規模部署容器化應用程式一種標準方式。但是,kubernetes本身卻是非常複雜,作為新手是很難全面了解乙個集群的全貌,因此乙個優秀的視覺化介面管理工具是非常必要的,畢竟人是乙個看臉的生物。dashboard 是基於網頁的 kubernetes 使用者介面。你可以使用 d...

apt包管理工具介紹

apt包管理工具 軟體包管理是區分不同發行版的一大特徵,如redhat使用rpm軟體包來管理軟體,debian使用deb軟體包來管理軟體。apt get是 debian的deb軟體包管理工具,它的最低底層還是呼叫dpkg包管理程式,通過apt get工具可使我們很好地解決軟體包的依賴關係,方便軟體的...