「走進k8s」Kubernetes1.15.1的Helm安裝使用(37)

  • 2019 年 10 月 4 日
  • 筆記

使用過Ubuntu下的ap-get或者CentOS下的yum, 這兩者都是Linux系統下的包管理工具。採用apt-get/yum,應用開發者可以管理應用包之間的依賴關係,發布應用;用戶則可以以簡單的方式查找、安裝、升級、卸載應用程式。Kubernetes 安裝deployment和pod,service,都需要查看api了解其中的yaml的語法結構,這樣太複雜了,為了簡化這個流程。

(一)Helm 介紹

  • ① 官網

https://helm.sh/

  • ② 介紹

Helm Chart 是用來封裝 Kubernetes 原生應用程式的一系列 YAML 文件。可以在你部署應用的時候自定義應用程式的一些 Metadata,以便於應用程式的分發。Helm 本身的處理邏輯很簡單,其自身價值並不大,而有價值的是 Helm 的生態圈和 Helm 官方所提供的眾多包含有最佳實踐的 chart 包。 Helm 本身的處理邏輯很簡單,其自身價值並不大,而有價值的是 Helm 的生態圈和 Helm 官方所提供的眾多包含有最佳實踐的 chart 包。

  • ③ 組件

chart

一系列用於描述 k8s 資源相關文件的集合,是 Helm 用於打包 k8s 資源的方式。

release

一個 chart 被 Helm 運行後將會生成對應的一個 release。

TillerServer

Helm 的服務端,部署在 k8s 集群內,主要管理 release 相關的存儲和與 k8s 的交互。

helm

Helm 的客服端,通過 gRPC 協議與 TillerServer 進行交互,主要提供了增刪查改 chart、release 和 repository 相關的功能。

config

包含了應用發布配置資訊

  • ④ 功能 1.創建新的 chart。2.chart 打包成 tgz 格式。3.上傳 chart 到 chart 倉庫或從倉庫中下載 chart。4.在Kubernetes集群中安裝或卸載 chart。5.管理用Helm安裝的 chart 的發布周期。

(二)Helm 安裝

  • ① 一鍵安裝客戶端是省時省力

只要不報錯一直等待就可以了,根據網速來的 可能比較慢,但是終究可以下載完畢

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh    chmod 700 get_helm.sh     ./get_helm.sh
  • ② 安裝依賴的yum socat
sudo yum install -y socat
  • ③ 初始化helm

Helm 默認會去 storage.googleapis.com 拉取鏡像,如果你當前執行的機器不能訪問該域名的話可以使用。

docker search tiller    # 一會要用這個jessestuart/tiller
  • ④ 許可權

因為helm部署的存在跨命名空間的,所以直接給他賦ClusterRole這個許可權。

---  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

運行許可權賦予

kubectl create -f helm-rbac.yaml

再次驗證

helm version

發現pod下載失敗,查看原因:gcr.io/kubernetes-helm/tiller:v2.14.3 無法拉取, 可能讀者當你看到的時候tiller版本可能不是在v2.14.3,這個版本其實不用考慮。

kubectl get pod --all-namespaces    kubectl describe pod tiller-deploy-75f6c87b87-vdw2c -n kube-system

修改kubectl edit deploy tiller-deploy -n kube-system

kubectl edit deploy tiller-deploy -n kube-system    # image: gcr.io/kubernetes-helm/tiller:v2.14.3   修改成圖片上的jessestuart/tiller,上邊docker search 的時候提到過。
  • ⑤ kubernetes裡面的pod資訊
kubectl get pod -n kube-system

創建了tiller的 ServceAccount 後還沒完, Tiller 之前已經就部署成功了,而且是沒有指定 ServiceAccount 的,所以我們需要給 Tiller 打上一個 ServiceAccount 的修補程式

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

查看deploy的用戶資訊

kubectl describe deploy --namespace kube-system tiller-deploy

(三)Helm使用

  • ① 創建
mkdir helm    helm create hello-helm    tree
  • ② 文檔地址

https://docs.helm.sh/developing_charts/#charts

  • ③ 更改 value.yaml

將默認的 stable 更改為 1.7.9, Service 的類型也改成 NodePort

vi ./hello-helm/values.yaml
  • ④ 安裝剛修改後的helm
helm install ./hello-helm

查看helm的文件

kubectl get pods -o wide    kubectl get svc -o wide

修改成了NodePort可以直接訪問 svc 查看到的埠 直接訪問就可以訪問nginx

  • ⑤ 查看release

create 2次導致的。

helm list
  • ⑥ 打包chart
helm package hello-helm
  • ⑦ 刪除release

list中的都刪除了。

helm delete intentional-ocelot    helm delete washed-panda

查看pod,已經沒有了

kubectl get pods

PS:安裝helm,使用了很多種方式了,感覺這種是最穩的,分享給大家,這裡就簡單的介紹了helm的幾個命令:創建,刪除,查看,打包,更多的命令還是查看helm的官方文檔吧,下次繼續說說helm的基本使用。

Tags: