溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

k8s之安裝配置Helm工具

發(fā)布時(shí)間:2020-05-29 02:56:29 來源:網(wǎng)絡(luò) 閱讀:1061 作者:warrent 欄目:云計(jì)算

一、helm介紹

在Kubernetes中部署容器云的應(yīng)用也是一項(xiàng)有挑戰(zhàn)性的工作,Helm就是為了簡化在Kubernetes中安裝部署容器云應(yīng)用的一個(gè)客戶端工具。通過helm能夠幫助開發(fā)者定義、安裝和升級Kubernetes中的容器云應(yīng)用,同時(shí),也可以通過helm進(jìn)行容器云應(yīng)用的分享。在Kubeapps Hub中提供了包括RedisMySQL和Jenkins等常見的應(yīng)用,通過helm可以使用一條命令就能夠?qū)⑵洳渴鸢惭b在自己的Kubernetes集群中。

1、helm架構(gòu)

helm的整體架構(gòu)如下圖所示,Helm架構(gòu)由Helm客戶端、Tiller服務(wù)器端和Chart倉庫所組成;Tiller部署在Kubernetes中,Helm客戶端從Chart倉庫中獲取Chart安裝包,并將其安裝部署到Kubernetes集群中。

k8s之安裝配置Helm工具

Helm是管理Kubernetes包的工具,Helm能提供下面的能力:

  • 創(chuàng)建新的charts;
  • 將charts打包成tgz文件;
  • 與chart倉庫交互;
  • 安裝和卸載Kubernetes的應(yīng)用;
  • 管理使用Helm安裝的charts的生命周期;

2、helm的重要概念

在Helm中,有以下三個(gè)重要概念需要了解:

  • Charts:是創(chuàng)建Kubernetes應(yīng)用實(shí)例的信息集合,也就是一個(gè)helm的程序包,它包含了運(yùn)行一個(gè)k8s應(yīng)用所有需要的鏡像、依賴關(guān)系和資源定義等,必要時(shí)還會包含Service資源定義,它類似于yum的rpm文件;
  • Repository:Chart倉庫,用于集中存儲和分發(fā)Charts。
  • Config:應(yīng)用程序?qū)嵗惭b時(shí)運(yùn)行使用的配置信息;
  • Release:chart的運(yùn)行實(shí)例,包含特定的config;

在同一個(gè)集群中,一個(gè)Charts可以使用不同的config重復(fù)安裝多次,每次安裝都會創(chuàng)建一個(gè)新的Release。

3、helm組件

在Helm中有兩個(gè)主要的組件,即Helm客戶端和Tiller服務(wù)器:

Helm客戶端:是一個(gè)供終端用戶使用的命令行工具。

客戶端負(fù)責(zé)如下的工作:

  • 本地chart開發(fā);
  • 管理倉庫
  • 與Tiller服務(wù)器交互(發(fā)送需要被安裝的charts、請求關(guān)于發(fā)布版本的信息、請求更新或者卸載已安裝的發(fā)布版本)

Tiller服務(wù)器: Tiller服務(wù)部署在Kubernetes集群中,Helm客戶端通過與Tiller服務(wù)器進(jìn)行交互,并最終與Kubernetes API服務(wù)器進(jìn)行交互。

Tiller服務(wù)器負(fù)責(zé)如下的工作:

  • 監(jiān)聽來自于Helm客戶端的請求
  • 組合chart和配置來構(gòu)建一個(gè)發(fā)布
  • 在Kubernetes中安裝,并跟蹤后續(xù)的發(fā)布
  • 通過與Kubernetes交互,更新或者chart

二、部署helm

1、安裝helm客戶端

#從github下載helm
[root@master ~]# wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz
 #解包,只需要包中的一個(gè)命令
[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 
#設(shè)置命令自動補(bǔ)全
[root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile
[root@master ~]# . /etc/profile    #重載環(huán)境變量

2、安裝Tiller server(需要創(chuàng)建授權(quán)用戶)

[root@master ~]# vim tiller-rbac.yaml   #創(chuàng)建授權(quán)用戶
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的服務(wù)端就是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)阿里云的,默認(rèn)是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é)點(diǎn)手動下載下來鏡像,然后重啟該節(jié)點(diǎn)的kubelet,或重啟該容器)
[root@master ~]# kubectl get pod -n kube-system | grep tiller
#只要保證tiller的pod正常運(yùn)行即可
tiller-deploy-8557598fbc-m986t   1/1     Running   0          7m54s

3、配置helm倉庫

[root@master ~]# helm repo list      #查看其倉庫信息
NAME    URL                                             
stable  https://kubernetes-charts.storage.googleapis.com
#如上,默認(rèn)是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"}

4、測試helm是否可以正常使用

[root@master ~]# helm search mysql      #搜索MySQL
#查看到的是charts包文件,查出來的版本是helm的Charts包的版本
[root@master ~]# helm inspect stable/mysql    #查看其詳細(xì)信息
[root@master ~]# helm fetch stable/mysql        #下載搜索到的包到本地
[root@master templates]# helm install stable/mysql       #在線安裝這個(gè)MySQL

如果上述測試命令都可以正常執(zhí)行,則表示helm配置無誤。

———————— 本文至此結(jié)束,感謝閱讀 ————————

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI