「走進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的基本使用。
