kubernetes安裝helm3.2.0


一、helm簡介

我們可以將Helm看作Kubernetes下的Maven/NPM. Python下的pip,Linux上的yum, Helm是Deis(https://deis.com/) 開發的一個用於kubernetes的包管理器,每個包稱爲一個Chart,一個Chart是一個目錄(一般情況下會將目錄進行打包壓縮,形成name version.tgz格式的單一文件,方便傳輸和存儲) 對於應用發佈者而言,可以通過Helm打包應用, 管理應用依賴關係,管理應用版本併發布應用到軟件倉庫。 對於使用者而言,使用Helm後不用需要了解Kubernetes的Yaml語法並編寫應用部署文件,可以通過Helm下載並在kubernetes上安裝需要的應用, 除此以外,Helm還提供了kubernetes上的軟件部署,刪除,升級, 回滾應用的強大功能**

Kubernetes Helm 是一個管理預先配置 Kubernetes 資源包的工具,這裏的資源在 Helm 中也被稱作 Kubernetes charts。

使用 Helm:

查找並使用已經打包爲 Kubernetes charts 的流行軟件 分享您自己的應用作爲 Kubernetes charts 爲 Kubernetes 應用創建可重複執行的構建 爲您的 Kubernetes 清單文件提供更智能化的管理 管理 Helm 軟件包的發佈

  • helm v2 版本 包含兩個組件,分別是 helm 客戶端 和 Tiller 服務器, helm 是一個命令行工具,用於本地開發及管理chart,chart倉庫管理等 Tiller 負責接收 Helm 的請求,與 k8s 的 apiserver 交互

  • helm v3 版本 移除了Tiller helm直接和K8s交互 SA通過 kuberconfig 配置認證

    • 設計原理

      它是一個線程的方式運行

  1. Helm-cotroller 運行在master節點並list/walch HelmChart CRD對象

  2. CRD onChange時執行Job更新

  3. Job Container使用rancherklilpper-helm爲entrypoint

  4. Killper-helm內 thelm cli,可以安裝/升級/刪除對應的chart


    環境前提: 已經安裝k8s 熟練使用kubectl及yaml配置文件

二、安裝Helm3

# 去Git下載 Helm 二進制文件(Git地址

設置環境變量KUBECONFIG來指定存有ApiServre的地址與token的配置文件地址,默認爲~/.kube/config

export KUBECONFIG=/root/.kube/config

# wget https://get.helm.sh/helm-v3.2.0-linux-amd64.tar.gz

解壓縮,並將可執行文件helm移動到/usr/local/bin/目錄下

第一種:
tar - zxvf helm-v3.2.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/

第二種安裝方法:
#curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
#chmod 700 get_helm.sh
#./get_helm.sh
查看helm
[root@k8s-master bin]# helm --help
[root@k8s-master tomcat]# helm version
version.BuildInfo{Version:"v3.2.0", GitCommit:"e11b7ce3b12db2941e90399e874513fbd24bcb71", GitTreeState:"clean", GoVersion:"go1.13.10"}

Helm3配置

# 配置helm3倉庫 helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ # 配置helm3倉庫(忽略:此處就想試試能否加多個倉庫) helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts # 更新 helm repo update helm repo list

[root@k8s-master tomcat]# helm repo list
NAME       URL                                                                      
aliyuncs   https://apphub.aliyuncs.com                                              
repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
stable     https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts                  
[root@k8s-master tomcat]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "repo_name1" chart repository
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "aliyuncs" chart repository
Update Complete. ⎈ Happy Helming!⎈

Helm3 使用

# 生成chart文件 此處會生成一個 nginx的目錄 如下: helm create nginx tree nginx/ . nginx/ ├── charts  #依賴其他包的charts文件 ├── Chart.yaml  # 該chart的描述文件,包括ico地址,版本信息等 ├── templates  #存放k8s模板文件目錄 │  ├── deployment.yaml  #創建k8s資源的yaml 模板 │  ├── _helpers.tpl  #下劃線開頭的文件,可以被其他模板引用. │  ├── hpa.yaml  # 配置服務資源CPU 內存 │  ├── ingress.yaml  # ingress 配合service域名訪問的配置 │  ├── NOTES.txt  #說明文件,helm install之後展示給用戶看的內容 │  ├── service.yaml  #kubernetes Serivce yaml 模板 └── values.yaml  #給模板文件使用的變量


# 修改values.yam 裏的service的type爲 NodePort # 安裝chart任務 (注意後面有個點) helm install -f values.yaml nginx1 .

# 查詢release helm ls helm list # 刪除release helm delete nginx1

#helm install -f values.yaml nginx1 .

[root@k8s-master tomcat]# helm list NAME   NAMESPACE REVISION UPDATED                                 STATUS   CHART       APP VERSION tomcat1 default   1       2020-05-04 14:29:04.274694143 +0800 CST deployed tomcat-0.1.0 1.16.0  

驗證服務

通過K8S命令查看下 服務是否成功啓動 [root@k8s-master tomcat]# kubectl get all NAME                                    READY   STATUS    RESTARTS   AGE pod/nginx-deployment-7789b77975-m85sx   1/1     Running   0          24h pod/nginx-deployment-7789b77975-n5zpc   1/1     Running   0          24h pod/tomcat1-6b6765ffc-pb9ld             1/1     Running   0          11m pod/tomcat1-6b6765ffc-wcc69             1/1     Running   0          11m

NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE service/kubernetes         ClusterIP      10.96.0.1       <none>        443/TCP        42h service/nginx-deployment   LoadBalancer   10.102.49.213   <pending>     80:32682/TCP   24h service/tomcat1            NodePort       10.100.13.128   <none>        80:31959/TCP   11m

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE deployment.apps/nginx-deployment   2/2     2            2           24h deployment.apps/tomcat1            2/2     2            2           11m

NAME                                          DESIRED   CURRENT   READY   AGE replicaset.apps/nginx-deployment-7789b77975   2         2         2       24h replicaset.apps/tomcat1-6b6765ffc             2         2         2       11m


image-20200504164935462


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章