在Kubernetes中部署容器云的應用也是一項有挑戰(zhàn)性的工作,Helm就是為了簡化在Kubernetes中安裝部署容器云應用的一個客戶端工具。通過helm能夠幫助開發(fā)者定義、安裝和升級Kubernetes中的容器云應用,同時,也可以通過helm進行容器云應用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等常見的應用,通過helm可以使用一條命令就能夠?qū)⑵洳渴鸢惭b在自己的Kubernetes集群中。
站在用戶的角度思考問題,與客戶深入溝通,找到洪江網(wǎng)站設計與洪江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋洪江地區(qū)。helm的整體架構(gòu)如下圖所示,Helm架構(gòu)由Helm客戶端、Tiller服務器端和Chart倉庫所組成;Tiller部署在Kubernetes中,Helm客戶端從Chart倉庫中獲取Chart安裝包,并將其安裝部署到Kubernetes集群中。
Helm是管理Kubernetes包的工具,Helm能提供下面的能力:
- 創(chuàng)建新的charts;
- 將charts打包成tgz文件;
- 與chart倉庫交互;
- 安裝和卸載Kubernetes的應用;
- 管理使用Helm安裝的charts的生命周期;
在Helm中,有以下三個重要概念需要了解:
- Charts:是創(chuàng)建Kubernetes應用實例的信息集合,也就是一個helm的程序包,它包含了運行一個k8s應用所有需要的鏡像、依賴關系和資源定義等,必要時還會包含Service資源定義,它類似于yum的rpm文件;
- Repository:Chart倉庫,用于集中存儲和分發(fā)Charts。
- Config:應用程序?qū)嵗惭b時運行使用的配置信息;
- Release:chart的運行實例,包含特定的config;
在同一個集群中,一個Charts可以使用不同的config重復安裝多次,每次安裝都會創(chuàng)建一個新的Release。
在Helm中有兩個主要的組件,即Helm客戶端和Tiller服務器:
Helm客戶端:是一個供終端用戶使用的命令行工具。
客戶端負責如下的工作:
- 本地chart開發(fā);
- 管理倉庫
- 與Tiller服務器交互(發(fā)送需要被安裝的charts、請求關于發(fā)布版本的信息、請求更新或者卸載已安裝的發(fā)布版本)
Tiller服務器: Tiller服務部署在Kubernetes集群中,Helm客戶端通過與Tiller服務器進行交互,并最終與Kubernetes API服務器進行交互。
Tiller服務器負責如下的工作:
- 監(jiān)聽來自于Helm客戶端的請求
- 組合chart和配置來構(gòu)建一個發(fā)布
- 在Kubernetes中安裝,并跟蹤后續(xù)的發(fā)布
- 通過與Kubernetes交互,更新或者chart
#從github下載helm
[root@master ~]# wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
#解包,只需要包中的一個命令
[root@master ~]# tar zxf helm-v2.14.3-linux-amd64.tar.gz
[root@master ~]# mv linux-amd64/helm /usr/local/bin/
[root@master ~]# chmod +x /usr/local/bin/helm
#設置命令自動補全
[root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile
[root@master ~]# . /etc/profile #重載環(huán)境變量
[root@master ~]# vim tiller-rbac.yaml #創(chuàng)建授權用戶
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
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@master ~]# kubectl apply -f tiller-rbac.yaml #執(zhí)行yaml文件
[root@master ~]# helm init --service-account=tiller #Tiller server的環(huán)境初始化
#helm的服務端就是Tiller
[root@master ~]# kubectl get pod -n kube-system | grep tiller #查看tiller的pod名稱
tiller-deploy-8557598fbc-tvfsj 0/1 ContainerCreating 0 2m16s
[root@master ~]# kubectl edit pod tiller-deploy-8557598fbc-tvfsj -n kube-system
#編輯pod的yaml文件,將其使用的鏡像改為國內(nèi)阿里云的,默認是Google的鏡像,下載不下來
#修改spec字段的image指定的鏡像,如下:
image: gcr.io/kubernetes-helm/tiller:v2.14.3
#修改如下:
image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3
#修改后,保存退出即可,它會去自動下載新鏡像(如果沒有自動下載,就想辦法吧,比如說在tiller容器所在的節(jié)點手動下載下來鏡像,然后重啟該節(jié)點的kubelet,或重啟該容器)
[root@master ~]# kubectl get pod -n kube-system | grep tiller
#只要保證tiller的pod正常運行即可
tiller-deploy-8557598fbc-m986t 1/1 Running 0 7m54s
[root@master ~]# helm repo list #查看其倉庫信息
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
#如上,默認是Google,在國外,速度特別慢
local http://127.0.0.1:8879/charts
#執(zhí)行下面命令,更改為國內(nèi)阿里云的倉庫
[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@master ~]# helm repo list #再次查看,可以發(fā)現(xiàn)更改生效了
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local http://127.0.0.1:8879/charts
[root@master ~]# helm repo update #更新一下helm倉庫
[root@master ~]# helm version #查看helm版本信息,必須保證可以查看出來client和server,才可正常使用helm
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
[root@master ~]# helm search mysql #搜索MySQL
#查看到的是charts包文件,查出來的版本是helm的Charts包的版本
[root@master ~]# helm inspect stable/mysql #查看其詳細信息
[root@master ~]# helm fetch stable/mysql #下載搜索到的包到本地
[root@master templates]# helm install stable/mysql #在線安裝這個MySQL
如果上述測試命令都可以正常執(zhí)行,則表示helm配置無誤。
———————— 本文至此結(jié)束,感謝閱讀 ————————
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。