華為云云原生鉆石集訓營 第十一課:Kubernetes應用管理深度剖析

      網友投稿 682 2022-05-29

      學完本課程后,您將能夠:

      1.了解幾種主流K8S應用管理生態的使用場景。

      2.了解Helm chart模板機制

      3.了解Operator機制

      目錄:

      1. K8S應用模板的使用場景介紹

      2. Helm chart模板機制詳解

      3. Operator機制詳解

      前言:

      在云原生的理念被越來越多的人所熟知,Kubernetes慢慢成為容器編排平臺的事實標準以后,如何更好地在容器集群上運行和管理應用,特別是復雜應用如何完成多資源間的編排、打包發布、標準化交付等,是大家尤為關心的問題。Helm通過模板-參數的形式來支持對應用的多種資源進行編排,成為k8s領域最熱門的應用包管理工具

      Helm能夠很好地幫我們實現k8s應用打包和標準化交付,而對于實例運行態的生命周期管理,則通過資源的基礎生命周期動作來驅動。然而,對于一些復雜應用的生命周期管理,基本的資源操作無法很好地勝任,可能需要根據應用自身特點,在一些關鍵生命周期節點上補充額外的動作。對此,CoreOS首先倡導了Operator的理念,即將特定于應用程序的操作知識編碼到軟件中,利用功能強大的Kubernetes抽象來正確地運行

      1. K8S應用模板的使用場景介紹

      Helm 能給我們帶來什么?

      完整的應用通常不只是簡單的deployment,StatefulSet等負載資源,通常還包括配套的service, PV/PVC, configmap等一系列資源。我們在進行實例下發、升級、更新換代等一系列生命周期操作時,這些資源都需要統籌考慮.

      Helm可以幫助開發者完成應用打包發布、版本管理、應用的創建刪除、升級更新等生命周期管理操作

      什么是Operator?

      以分布式系統為代表的有狀態應用,并不像Web應用一樣“開箱即用”,這些系統需要特定應用領域的知識才能正確擴展,升級和重新配置,同時防止數據丟失或不可用

      Operator其實并不是一個工具,而是為了解決一個問題而存在的一個思路,將特定于應用程序的操作知識編碼到軟件中,利用功能強大的Kubernetes抽象來正確地運行和管理應用程序

      Helm Vs Operator

      對比:

      Helm是一種標準化的普適性工具,目標是把你的K8S資源模板化,方便共享,進而在不同的配置中重用;

      Operator本質上是針對特定的場景去做有狀態服務,或者說針對擁有復雜應用的應用場景去簡化其運維管理的工具,Operator與特定應用是一對一的關系;

      關系:

      Helm與Operator并不是完全獨立的,很多Operator能做的事情,如應用集群初始化配置、監控更新等通過一些init Container,以及Helm的Hook機制等,最終也能夠達到同等效果。只不過這些配置可能顯得極為復雜且不易維護,得不償失;

      此外,兩者還可能有結合的場景,比如市面上很多開源項目的Operator本身就是通過Helm進行部署和管理的

      總結:

      helm是為了配置分離,operator則是針對復雜應用的自動化管理,兩者的出發點和面向的主要目標場景不同

      2.了解Helm chart模板機制

      核心組件:

      Chart Repository: Chart包存儲倉庫

      Helm Client:是終端用戶的命令行客戶端,負責:本地chart開發

      管理倉庫

      管理發布

      與K8S Server端交互,發送chart (release)安裝、升級或卸載請求

      Chart包示例

      關鍵要素:

      Chart.yaml:包含了chart信息的YAML文件

      requirements.yaml:可選,列舉chart的依賴關系

      charts目錄:可選,chart依賴的其他chart

      crds目錄:可選,自定義資源的定義

      templates目錄:模板目錄,內含go template格式的模板文件

      values.yaml文件: chart的默認配置值,與template結合,生成有效的kubernetes manifest文件

      values.schema.json文件:可選,JSON schema格式的value規格描述

      Chart.yaml示例

      apiVersion: chart API版本(必需)

      name: chart名稱(必需)

      version:語義化版本(必需)

      kubeVersion:兼容Kubernetes版本的語義化版本(可選)

      description:一句話對這個項目的描述(可選)

      type: chart類型(可選)

      keywords:

      華為云云原生鉆石集訓營 第十一課:Kubernetes應用管理深度剖析

      關于項目的一組關鍵字(可選)

      home:項目home頁面的URL(可選)

      sources:項目源碼的URL列表(可選)

      maintainers: #(可選)

      name:維護者名字(每個維護者都需要)

      email:維護者郵箱(每個維護者可選)

      url:維護者URL(每個維護者可選)

      icon:用做icon的SVG或PNG圖片URL(可選)

      appVersion:包含的應用版本(可選)。不需要是語義化,建議使用引號

      deprecated: 不被推薦的chart(可選,布爾值)

      annotations:

      example:按名稱輸入的批注列表(可選)

      內置對象

      Release:代表Release對象,屬性包含: Release.Name、Release.Namespace、Release.Revision等

      Values:表示values.yaml文件數據

      Chart:表示Chart.yaml數據

      Files:用于訪問chart中非標準文件

      Capabilities:用于獲取k8s集群的一些信息

      - Capabilities.KubeVersion.Major: K8s的主版本

      Template:表示當前被執行的模板

      - Name:表示模板名,如: mychart/templates/mytemplate.yaml

      - BasePath:表示路徑,如: mychart/templates

      其中Release代表一次應用發布,下面是Release對象包含的屬性字段:

      Release.Name - release的名字,一般通過Chart.yaml定義,或者通過helm命令在安裝應用的時候指定

      Release.Time - release安裝時間

      Release.Namespace - k8s名字空間

      Release.Revision - release版本號,是一個遞增值,每次更新都會加一

      Release.IsUpgrade - true代表,當前release是一次更新.

      Release.lsInstall ? - true代表,當前release是一次安裝

      Release.Service: ? ?- release服務的名稱(始終是Helm)

      子模板

      在chart中以“下劃線”開頭的文件,稱為”子模版”。

      例如在_helper.tpl中定義子模塊,格式: {{- define "模版名字"-}}模版內容ff- end -.}

      引用模板,格式: {{include "模版名字"作用域}}

      3.Operator機制詳解

      通過了解helm和CRD,我們就知道helm沒法管理資源的完整生命期,它就是推送YAML就拍拍屁股走人了;而只有CRD才能持續的監聽K8S資源對象的變化事件,進行全生命期的監控響應,高可靠的完成部署交付。

      Operator的場景就是專門給有狀態應用而設計的。

      為什么只給有狀態應用?

      因為無狀態應用簡單啊,沒有服務間的交互,要再開一家火鍋店,跟k8s說一聲,開一家一樣的就可以了。

      有狀態不一樣,你開了一家火鍋店以后,客戶的信息怎么同步,就涉及到與別的火鍋店交涉的問題,當然你也可以寫個別的程序做這個數據同步的操作。

      但是operator做的事情就是能自動識別到火鍋店客戶信息的不對稱,主動同步,你只用告訴operator我要再開一家連鎖火鍋店就好了。

      關鍵組件和概念:

      Operator Lifecycle Manager:負責管理具體應用Operator的生命周期

      應用業務Operator:由開發者針對特定應用業務開發的Operator本身

      Operator Registry:存儲CSV

      (ClusterServiceVersion )和自定義資源定義(CRD)等構成的應用配置

      ClusterServiceVersion(CSV):由Operator元數據創建的YAML清單,可OLM在集群中運行Operator

      Subscription:通過跟蹤安裝包中的channel保證CSV的版本更新

      InstallPlan:計算自動安裝或升級CSV過程中需創建的資源集合

      本課總結:

      Helm:我們可以將Helm看作Kubernetes下的apt-get/yum。Helm是Deis(https://deis.com/)開發的一個用于kubernetes的包管理器:

      1.對于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml語法并編寫應用部署文件,可以通過Helm下載并在kubernetes上安裝需要的應用。

      2.對于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml語法并編寫應用部署文件,可以通過Helm下載并在kubernetes上安裝需要的應用。

      3.除此以外,Helm還提供了kubernetes上的軟件部署,刪除,升級,回滾應用的能力

      Operator:

      Kubernetes Operator是一種封裝、部署和管理Kubernetes應用的方法。Kubernetes Operator是一種特定于應用的控制器,可擴展Kubernetes API的功能,來代表Kubernetes 用戶創建、配置和管理復雜應用的實例。

      它基于基本Kubernetes資源和控制器概念構建,但又涵蓋了特定于域或應用的知識,用于實現其所管理軟件的整個生命周期的自動化

      參考鏈接:

      Helm官方文檔: https://helm.sh/docs

      GO Template鏈接: https://golang.org/pkg/text/template

      Operator文檔: https://operatorhub.io/what-is-an-operator

      Kubernetes 云原生 應用管理與運維平臺 ServiceStage

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:深度學習閱讀導航 | 02 Faster R-CNN:基于RPN的實時目標檢測
      下一篇:小程序上架域名只支持https,在華為云購買SSL證書的經過
      相關文章
      亚洲卡一卡二卡乱码新区| 亚洲精品97久久中文字幕无码| 亚洲黄片毛片在线观看| 中文字幕亚洲码在线| 亚洲美女一区二区三区| 久久亚洲国产中v天仙www| 亚洲国产成人爱av在线播放 | 久久久无码精品亚洲日韩按摩| 亚洲成AⅤ人影院在线观看| 亚洲综合激情五月丁香六月| 亚洲国产精品xo在线观看| 亚洲色欲或者高潮影院| 亚洲人成网站影音先锋播放| 国产亚洲综合成人91精品| 中文亚洲AV片不卡在线观看 | 亚洲精品私拍国产福利在线| 亚洲国产精品婷婷久久| 亚洲视频中文字幕| 亚洲男女性高爱潮网站| 亚洲AV色吊丝无码| 亚洲人成人网站18禁| 亚洲GV天堂GV无码男同 | 99亚洲精品高清一二区| 亚洲第一网站免费视频| 亚洲一区二区三区无码国产| 亚洲国产日韩视频观看| 亚洲AV无码专区亚洲AV桃| 亚洲国产午夜中文字幕精品黄网站| 亚洲精品成人片在线观看| 久久亚洲精品无码播放| 国产亚洲综合成人91精品| 亚洲麻豆精品果冻传媒| 亚洲中文字幕无码av在线| 亚洲精品无码久久久久A片苍井空| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 国产亚洲精品美女久久久| 无码乱人伦一区二区亚洲| 亚洲性猛交xx乱| 亚洲精品9999久久久久无码| 亚洲精品第一国产综合精品99| 精品亚洲永久免费精品|