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