日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十一章 Helm-kubernetes的包管理器(上)

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十一章 Helm-kubernetes的包管理器(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Helm - K8s的包管理器

11.1 Why Helm

  K8s能夠很好的組織和編排容器,但它缺少一個更高層次的應用打包工具,Helm就是干這個的。

  比如對于一個MySQL服務,K8s需要部署如下對象:

  (1)Service,讓外界能訪問MySQL

  (2)Secret,定義MySQL的密碼

  (3)PersisentVolumeClaim,為MySQL申請持久化存儲空間。

  (4)Deployment,部署MySQL Pod,并使用上面的這些支持對象。

可以將上面這些配置保存到文件中,或幾種寫進一個文件,然后通過kubectl apply -f 部署。

  如果服務少,這樣問題也不大,但是如果是微服務架構,服務多達數十個甚至上百個,這種組織和管理應用的方式就不好使了:

  (1)很難管理、編輯和維護如此多的服務。每個服務有若干個配置,缺乏更高層次的工具將這些配置組織起來。

  (2)不容易將這些服務作為一個整體統一發布。部署人員需要首先理解應用都包含哪些服務,然后按照邏輯順序依次執行kubectl apply, 缺少一種工具定義應用與服務,已經服務之間的依賴。

  (3)不能高效的共享和重用服務。比如兩個應用都用到MySQL服務,但是配置參數不一樣,這兩個應用只能分別復制一套標準MySQL配置文件,修改后通過kubectl apply部署。也就是不支持參數化配置和多環境部署。

  (4)不支持應用級別的版本管理。雖然可以通過kubectl rollout undo進行回滾,但這只針對單個deployment,不支持整個應用的的回滾。

  (5)不支持對部署的應用狀態進行驗證。比如是否能通過預定義賬號訪問MySQL。雖然K8s有健康檢查,但那時針對單個容器,我們需要應用(服務)級別的健康檢查。

  Helm能夠解決上面這些問題。

11.2 Helm架構

  Helm有兩個重要概念:chart和release

  • chart: 是創建一個應用的信息集合,包括各種k8s對象的配置模板、參數定義、依賴關系、文檔說明等。chart是應用部署的自包含邏輯單元。可以將char想象成apt、yum中的軟件安裝包
  • release: 是chart的運行實例,代表了一個正在運行的應用當chart被安裝到k8s集群,就生成一個release。chart能夠多次安裝到同一個集群,每次安裝都是一個release。

?  Helm是包管理工具,這里的包就是指char。 Helm能夠:

  • 從零創建新chart。
  • 與存儲chart的倉庫交互。拉取、保存、和更新chart
  • 在k8s集群中安裝和卸載release.
  • 更新、回滾和測試release。

Helm包含兩個組件:Helm客戶端和Tiller服務器,

Helm客戶端,用戶可以

  • 在本地開發chart
  • 管理chart倉庫
  • 與Tiller服務器交互
  • 在遠程K8s集群上安裝chart
  • 查看release信息。
  • 升級或卸載已有的release

Tiller服務器運行在K8s集群中,它會處理Helm客戶端的請求,與k8s的 API Server交互。Tiller服務器負責:

  • 監聽來自Helm客戶端的請求
  • 通過chart創建release
  • 在k8s中安裝chart,并跟蹤release狀態
  • 通過API server升級或卸載已有的release

簡單說: Helm客戶端負責管理chart,Tiller服務器負責管理release。

11.3 安裝Helm?

  11.3.1 Helm客戶端

  因為我的環境已經安裝過了,就沒寫,以后補充

kubeusr@GalaxyKubernetesMaster:~$ helm version Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}

  11.3.2 Tiller服務器

  運行helm init就可以

  如下查看Tiller的Service、deployment和Pod

?

kubeusr@GalaxyKubernetesMaster:~$ kubectl get -n kube-system svc tiller-deploy NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE tiller-deploy ClusterIP 10.111.0.95 <none> 44134/TCP 131dkubeusr@GalaxyKubernetesMaster:~$ kubectl get -n kube-system deployment tiller-deploy NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE tiller-deploy 1 1 1 1 131dkubeusr@GalaxyKubernetesMaster:~$ kubectl get -n kube-system pod tiller-deploy-895d57dd9-bjlwf NAME READY STATUS RESTARTS AGE tiller-deploy-895d57dd9-bjlwf 1/1 Running 0 40d

?11.4 使用Helm

  helm search? ? ? ? ? ? ? ? ?# 查看當前可以安裝的chart?

kubeusr@GalaxyKubernetesMaster:~$ helm repo list # 查看倉庫 NAME URL stable https://kubernetes-charts.storage.googleapis.com # stable是官方倉庫 local http://127.0.0.1:8879/charts # local是用戶存放自己開發的chart的本地倉庫

  可以通過helm repo add 添加更多個倉庫。

  支持關鍵字搜索:

kubeusr@GalaxyKubernetesMaster:~$ helm search mysql NAME CHART VERSION APP VERSION DESCRIPTION stable/mysql 0.10.1 5.7.14 Fast, reliable, scalable, and easy to use open-source rel... stable/mysqldump 1.0.0 5.7.21 A Helm chart to help backup MySQL databases using mysqldump stable/prometheus-mysql-exporter 0.1.0 v0.10.0 A Helm chart for prometheus mysql exporter with cloudsqlp... stable/percona 0.3.2 5.7.17 free, fully compatible, enhanced, open source drop-in rep... stable/percona-xtradb-cluster 0.2.0 5.7.19 free, fully compatible, enhanced, open source drop-in rep... stable/phpmyadmin 1.1.2 4.8.2 phpMyAdmin is an mysql administration frontend stable/gcloud-sqlproxy 0.5.0 1.11 Google Cloud SQL Proxy stable/mariadb 5.0.9 10.1.36 Fast, reliable, scalable, and easy to use open-source rel...

?

安裝chart也很簡單,執行如下命令就可以安裝MySQL:

kubeusr@GalaxyKubernetesMaster:~$ helm install stable/mysql # 安裝MySQL NAME: invisible-stingray # release的名字, 如果不用-n指定名字,這里就隨機生成。 LAST DEPLOYED: Wed Jan 2 03:19:02 2019 NAMESPACE: default # 命名空間,可以通過--namespace指定 STATUS: DEPLOYED # 狀態是DEPLOYED, 表示已經將chart部署到集群RESOURCES: # 當前release包含的資源,POD, secret,configmap, persistentVolumeClaim ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE invisible-stingray-mysql-8787ff6c8-dh8bh 0/1 Pending 0 0s==> v1/Secret NAME TYPE DATA AGE invisible-stingray-mysql Opaque 2 0s==> v1/ConfigMap NAME DATA AGE invisible-stingray-mysql-test 1 0s==> v1/PersistentVolumeClaim NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE invisible-stingray-mysql Pending 0s==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE invisible-stingray-mysql ClusterIP 10.107.208.222 <none> 3306/TCP 0s==> v1beta1/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE invisible-stingray-mysql 1 1 1 0 0sNOTES: # 顯示的是release的使用方法 MySQL can be accessed via port 3306 on the following DNS name from within your cluster: invisible-stingray-mysql.default.svc.cluster.localTo get your root password run:MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default invisible-stingray-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)To connect to your database:1. Run an Ubuntu pod that you can use as a client:kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il2. Install the mysql client:$ apt-get update && apt-get install mysql-client -y3. Connect using the mysql cli, then provide your password:$ mysql -h invisible-stingray-mysql -pTo connect to your database directly from outside the K8s cluster:MYSQL_HOST=127.0.0.1MYSQL_PORT=3306# Execute the following command to route the connection:kubectl port-forward svc/invisible-stingray-mysql 3306mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}

?helm list顯示已經部署的release,helm delete可以刪除release

kubeusr@GalaxyKubernetesMaster:~$ helm list --namespace default NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE invisible-stingray 1 Wed Jan 2 03:19:02 2019 DEPLOYED mysql-0.10.1 5.7.14 default vehement-lambkin 1 Wed Jan 2 03:18:15 2019 DEPLOYED mysql-0.10.1 5.7.14 default kubeusr@GalaxyKubernetesMaster:~$ helm delete invisible-stingray

?

?

?

?

  

  

 

  

  

?

?

?

轉載于:https://www.cnblogs.com/liufei1983/p/10208846.html

總結

以上是生活随笔為你收集整理的第十一章 Helm-kubernetes的包管理器(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。