本文將介紹Kubernetes 的重要特性,這將有助于您更深入地了解 Kubernetes 的功能概念。
-
- 自動裝箱
-
- 服務(wù)發(fā)現(xiàn)和負載均衡
-
- 存儲編排
-
- 自愈
-
- 自動推出和回滾
- 5.1. 推出
- 5.2. 回滾
-
- Secret和配置映射
- 6.1. Secret
- 6.2. 配置映射
-
- 水平縮放
-
- 結(jié)論
1. 自動裝箱
這是 Kubernetes 最顯著的特性之一,Kubernetes 根據(jù)所需資源和其他限制條件智能地定位容器,而不會影響可用性。
Kubernetes 提供資源管理,它可以自動指定 Pod 中的每個容器如何消耗 CPU 和 RAM 等資源。
2. 服務(wù)發(fā)現(xiàn)和負載均衡
服務(wù)發(fā)現(xiàn)和負載均衡在 Kubernetes 中作為服務(wù)提供,服務(wù)以一致的方式跨集群將 Pod 連接到網(wǎng)絡(luò)。確定如何連接到服務(wù)的過程稱為服務(wù)發(fā)現(xiàn)。
容器的集合是 POD,具有相同功能集的 POD 被組合成一個集合,稱為服務(wù)。
每個 POD 將被分配一個 IP 地址和單個 DNS 名稱用于服務(wù)(POD 集),借助這種架構(gòu),Kubernetes 將對 POD 之間的網(wǎng)絡(luò)和通信進行明確定義的控制,并且可以實現(xiàn)負載平衡。
在組成單個服務(wù)的實例集合前放置負載均衡器(反向代理,如 Nginx 或 HAProxy)是解決服務(wù)發(fā)現(xiàn)問題的常用技術(shù)。
負載平衡器的地址(DNS 名稱,或者通常情況下是 IP)是一個相當可靠的數(shù)據(jù),它可以在開發(fā)或配置階段提供給客戶端,并且可以在單個客戶端的生命周期中保持不變。
之后,從客戶端的角度來看,聯(lián)系多實例服務(wù)與訪問單個網(wǎng)絡(luò)端點沒有什么不同,換句話說,服務(wù)發(fā)現(xiàn)完全發(fā)生在服務(wù)器端。
3. 存儲編排
用戶可以使用 Kubernetes 掛載他們想要的任何存儲系統(tǒng),包括本地存儲、公共云提供商等。仍然必須提供底層存儲系統(tǒng)。
對于用戶和管理人員,Kubernetes 提供了一個 API,它將存儲交付方式與存儲使用方式的細節(jié)隔離開來。
關(guān)于將持久性存儲與 Kubernetes 集成,有幾個術(shù)語需要理解。,它們?nèi)缦拢?/p>
- 容器存儲接口(CSI):它是一個標準,允許所有容器編排器以一致的方式連接存儲系統(tǒng),例如Ondat。存儲供應(yīng)商應(yīng)該在 CSI 發(fā)布之前將他們的集成層直接寫入 Kubernetes 源代碼。因此,升級既困難又耗時,因為任何缺陷都可能導(dǎo)致 Kubernetes 崩潰。
- 存儲類:管理員可以預(yù)先定義 Kubernetes 用戶能夠使用 Kubernetes 存儲類提供和附加到他們的應(yīng)用程序的存儲類型。
- 持久卷 (PV):持久卷是已作為卷添加到集群中的虛擬存儲實例。PV可以引用物理存儲硬件或軟件定義的存儲,例如Ondat。
- 持久卷聲明 (PVC):這是對要供應(yīng)的某種類型和配置的存儲的請求。
4. 自愈
Kubernetes 的自我修復(fù)能力是其最吸引人的功能之一,如果容器化應(yīng)用程序或應(yīng)用程序組件出現(xiàn)故障,Kubernetes 將自動重新加載它。
Kubernetes 的編排功能可以根據(jù)設(shè)置監(jiān)控和替換不健康的容器,Pods 是封裝單個或多個容器的最小單元,也可以由 Kubernetes 修復(fù)。
在自愈過程中,復(fù)制控制器通過執(zhí)行以下任務(wù)來確保應(yīng)用程序的容錯或可用性。
- 如果容器出現(xiàn)故障,Kubernetes 會重新啟動容器。
- 如果任何節(jié)點出現(xiàn)故障,Kubernetes 會重新安排其他節(jié)點上的容器。
- 如果容器沒有響應(yīng)客戶端/用戶,Kubernetes 會終止容器。
5. 自動推出和回滾
5.1. 推出
盡管開發(fā)人員希望更新應(yīng)用程序的代碼,但企業(yè)的目標是使應(yīng)用程序的停機時間為零。應(yīng)用程序的更新稱為rollout,這是在 Kubernetes 中使用滾動升級完成的。
通過使用新的 Pod 實例逐步升級,滾動更新允許在零停機時間的情況下更新部署,新的 Pod 將被安排在有可用資源的節(jié)點上。
- 客戶端使用新版本的 POD 進行更新,例如 V2。
- 在一個副本集中,只允許使用相同版本的 POD,因此,Kubernetes 將創(chuàng)建副本集 2,其中將添加新版本的 POD V2,并確保健康檢查,一旦 POD V2 運行良好,它將取代其中一個 POD V1。
- 它將遵循相同的規(guī)則并將所有 POD V1 替換為 POD V2。
5.2. 回滾
當 Deployment 不穩(wěn)定時,例如當它循環(huán)崩潰時,您可能需要回滾 Deployment。默認情況下,系統(tǒng)會保存所有 Deployment 的 rollout 歷史,以便您可以隨時回滾。
在上圖中,POD V1 被保留在歷史記錄中,以便您在發(fā)現(xiàn) POD V2 的部署有任何問題時可以回滾。
6. Secret和配置映射
6.1. Secret
Secret是一小段機密數(shù)據(jù),例如密碼、令牌或密鑰?;蛘?,此類信息可能包含在 Pod 規(guī)范或容器映像中。
如果您使用 Secret,則不必在應(yīng)用程序代碼中包含機密數(shù)據(jù),在處理Secret時,有兩個層面需要考慮。
必須首先創(chuàng)建Secret,然后才能將其引入到 Pod 中,與其將機密數(shù)據(jù)放在容器圖片或 Pod 定義中,不如將其保密更安全、更具適應(yīng)性。
6.2. 配置映射
ConfigMap 是一個鍵值對存儲,它是一個用于存儲非機密數(shù)據(jù)的 API 對象,Pod 可以將 ConfigMap 用作環(huán)境變量、命令行參數(shù)或卷配置文件。
它允許您將特定于環(huán)境的配置與容器映像分離,從而允許您簡單地移植應(yīng)用程序。
ConfigMaps 的配置分為兩個階段,第一步是制作 ConfigMap,然后將它們注入到 pod 中。
7. 水平縮放
當對工作負載的需求增加或減少時,Kubernetes 可以自動增加或減少為該作業(yè)提供服務(wù)的 pod 副本的數(shù)量。
Horizontal Pod Autoscaler 在 Kubernetes 中實現(xiàn)為控制器和 API 資源??刂破鞯男袨橛少Y源決定。
控制器定期調(diào)整復(fù)制控制器或部署中的副本數(shù)量,以將觀察到的指標(如平均 CPU 利用率、平均內(nèi)存利用率或任何其他自定義統(tǒng)計數(shù)據(jù))與用戶的目標相匹配。
8. 結(jié)論
在本文中,我們已經(jīng)對 Kubernetes 的關(guān)鍵特性進行了概念性的理解。
-
cpu
+關(guān)注
關(guān)注
68文章
11011瀏覽量
215185 -
Linux
+關(guān)注
關(guān)注
87文章
11420瀏覽量
212319 -
kubernetes
+關(guān)注
關(guān)注
0文章
237瀏覽量
8908
發(fā)布評論請先 登錄
相關(guān)推薦
Kubernetes的Device Plugin設(shè)計解讀
在Kubernetes上運行Kubernetes

Kubernetes API詳解

Kubernetes網(wǎng)絡(luò)隔離NetworkPolicy實驗
為什么有了Docker還要Kubernetes
云計算的發(fā)展:Kubernetes的特性
kubernetes是怎么運作的
帶你快速了解 kubernetes
Kubernetes 監(jiān)控利器功能特性

評論