k8s上安裝並初始化Helm。minikube

helm簡介

Helm 能夠理解爲 Kubernetes 的包管理工具,能夠方便地發現、共享和使用爲Kubernetes構建的應用。html

Helm 採用客戶端/服務器架構,有以下組件組成:node

Helm CLI 是 Helm 客戶端,能夠在本地執行
Tiller 是服務器端組件,在 Kubernetes 羣集上運行,並管理 Kubernetes 應用程序的生命週期
Repository 是 Chart 倉庫,Helm客戶端經過HTTP協議來訪問倉庫中Chart的索引文件和壓縮包。
這裏寫圖片描述linux

1.Helm的三個基本概念git

Chart:Helm應用(package),包括該應用的全部Kubernetes manifest模版,相似於YUM RPM或Apt dpkg文件 
Repository:Helm package存儲倉庫 
Release:chart的部署實例,每一個chart能夠部署一個或多個releasegithub

2.Helm工做原理
Helm把Kubernetes資源(好比deployments、services或 ingress等) 打包到一個chart中,而chart被保存到chart倉庫。經過chart倉庫可用來存儲和分享chart。Helm使發佈可配置,支持發佈應用配置的版本管理,簡化了Kubernetes部署應用的版本控制、打包、發佈、刪除、更新等操做。docker

Helm包括兩個部分,helm客戶端和tiller服務端。api

3.helm客戶端服務器

helm客戶端是一個命令行工具,負責管理charts、reprepository和release。它經過gPRC API(使用kubectl port-forward將tiller的端口映射到本地,而後再經過映射後的端口跟tiller通訊)向tiller發送請求,並由tiller來管理對應的Kubernetes資源。網絡

4.tiller服務端架構

tiller接收來自helm客戶端的請求,並把相關資源的操做發送到Kubernetes,負責管理(安裝、查詢、升級或刪除等)和跟蹤Kubernetes資源。爲了方便管理,tiller把release的相關信息保存在kubernetes的ConfigMap中。
tiller對外暴露gRPC API,供helm客戶端調用。

安裝

咱們須要安裝 Helm 客戶端到本地,同時安裝服務端 Tiller 到 Kubernetes 中

這裏使用minikube在本地模擬的k8s架構,minikube搭建k8s測試環境方法參考:https://blog.csdn.net/luanpeng825485697/article/details/80862581

而且要啓動k8s的架構才能使用helm

?

1

minikube start --registry-mirror=https://registry.docker-cn.com

先安裝依賴

?

1

sudo apt-get install socat

一、客戶端安裝:

下載相應的版本:https://github.com/kubernetes/helm/releases
這裏我下載的是helm-v2.9.1-linux-amd64.tar.gz
解壓 (tar -zxvf helm-v2.9.1-linux-amd64.tar.gz)
把helm執行文件放置在: (mv linux-amd64/helm /usr/local/bin/helm)

二、服務器端安裝:

初始化並驗證 Helm,這樣就會自動安裝服務器端Tiller。
注意:因爲國內網絡的問題,在安裝 Tiller 的時候,須要下載鏡像 gcr.io/kubernetes-helm/tiller:v2.9.1,頗有可能會安裝失敗。因此咱們這裏使用阿里鏡像來安裝Tiller。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$ helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

 

Creating /home/luanpeng/.helm

Creating /home/luanpeng/.helm/repository

Creating /home/luanpeng/.helm/repository/cache

Creating /home/luanpeng/.helm/repository/local

Creating /home/luanpeng/.helm/plugins

Creating /home/luanpeng/.helm/starters

Creating /home/luanpeng/.helm/cache/archive

Creating /home/luanpeng/.helm/repository/repositories.yaml

Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com

Adding local repo with URL: https://127.0.0.1:8879/charts

$HELM_HOME has been configured at /home/luanpeng/.helm.

 

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Happy Helming!

稍等一會,你就會發現服務端 Tiller 已經安裝到咱們的 Minikube 集羣中了,而且做爲Kubernetes Pod 服務運行在 kube-system 的 namespace 中

?

1

2

3

4

5

6

7

8

9

$ helm version

Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

 

 

 

$ kubectl get pods --all-namespaces

...

kube-system   tiller-deploy-f9b8476d-q89lh            0/1       ImagePullBackOff   0          4m

若是 Tiller 安裝失敗,經過 helm version 命令會提示鏈接不到 Tiller。
注意:在安裝中有時候你可能須要重啓一個命令窗口來查詢,或者稍等幾秒鐘才能正常運行。我這邊helm version打印三次才能正常啓動,等了5秒鐘。

由於我這裏使用的是minikube模擬的單機k8s環境,若是是分佈式,須要在k8s的節點node機器上安裝socat

?

1

sudo apt-get install socat

若是須要刪除服務端,可使用下面的命令

?

1

2

helm reset

Tiller (the helm server side component) has been uninstalled from your Kubernetes Cluster.

?

1

2

$helm reset   或 $helm reset -f(強制刪除k8s集羣上的pod.)

當要移除helm init建立的目錄等數據時,執行helm reset --remove-helm-home

Helm 基礎操做

官方chart倉庫由Kubernetes Charts維護,若要查看在存儲庫中可用的全部 Helm charts,請鍵入如下命令:

?

1

2

helm search

經過阿里雲鏡像安裝的服務器端能夠看到已經安裝了不少charts。這裏面就有咱們後面要使用的spark

若要更新charts列表以獲取最新版本,請鍵入:

?

1

helm repo update

若要查看在羣集上安裝的Charts列表,請鍵入:

?

1

helm list

刪除releases

?

1

helm delete chartsnames1

恢復以前的版本

?

1

helm history chartsname1

或者

?

1

helm rollback chartsname1 2

下載charts到本地

?

1

2

3

helm search chartsname1

helm fetch stable/chartsname1

ll      # 查看是都有咱們下載的charts

安裝charts應用(spark)到k8s。

?

1

2

3

4

5

helm install --name my-release stable/spark

 

helm install --set name=mycharts ./mycharts/     #沒試

helm upgrade --install mycharts .            #沒試

helm install --name my-release -f values.yaml stable/spark       #沒試

安裝了spark到k8s中,k8s會安裝5個容器。能夠經過kubectl get pods查詢,以下,1個msater,3個worker,1個zepperlin。

?

1

2

3

4

5

6

7

$ kubectl get pods

NAME                                   READY     STATUS             RESTARTS   AGE

my-release-master-985f9646c-s8ssv      0/1       ImagePullBackOff   0          40m

my-release-worker-66d87ffb8c-pg4cn     0/1       ImagePullBackOff   0          40m

my-release-worker-66d87ffb8c-s87tt     0/1       Pending            0          40m

my-release-worker-66d87ffb8c-wwsqb     0/1       ImagePullBackOff   0          40m

my-release-zeppelin-5b996bbf6c-dwg8h   1/1       Running            0          40m

私有chart倉庫

咱們本地開發charts發佈出去。這裏就不講如何開發,咱們能夠先去下載別人開發的應用。
好比https://github.com/kubernetes/charts/tree/master/stable中任何一個文件夾,都是一個應用。

Chart倉庫結構

一個chart倉庫由一個chart包與index.yaml文件組成,index.yaml記錄了chart倉庫中所有chart的索引,一個本地chart倉庫的佈局例子以下:

mycharts ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt │ └── service.yaml └── values.yaml

相關文章
相關標籤/搜索