目錄
kubernetes 是乙個提供了基於容器的應用集群管理解決方案,kubernetes 為容器化應用提供了部署執行、資源排程、服務發現和動態伸縮等一系列完整功能。以乙個典型的三層應用 wordpress 為例,該應用程式就涉及到多個 kubernetes api 物件,而要描述這些 kubernetes api 物件就可能要同時維護多個 yaml 檔案。kubernetes 的核心設計理念是: 使用者定義要部署的應用程式的規則,而 kubernetes 則負責按照定義的規則部署並執行應用程式。如果應用程式出現問題導致偏離了定義的規格,kubernetes 負責對其進行自動修正。例如:定義的應用規則要求部署兩個例項(pod),其中乙個例項異常終止了,kubernetes 會檢查到並重新啟動乙個新的例項。
使用者通過使用 kubernetes api 物件來描述應用程式規則,包括 pod、service、volume、namespace、replicaset、deployment、job等等。一般這些資源物件的定義需要寫入一系列的 yaml 檔案中,然後通過 kubernetes 命令列工具 kubectl 調 kubernetes api 進行部署。
在進行 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工具可使我們很好地解決軟體包的依賴關係,方便軟體的...