Kubernetes 正在接管:使用四種新技術更智能地部署
使用基于角色的訪問控制 (RBAC) 和自定義資源定義 (CRD) 來確保集群安全。
譯自Kubernetes Is Taking Over: Deploy Smarter With 4 New Techniques,作者 Anne Fernandez。
Kubernetes (K8s) 是一個用于構建、測試、修改和擴展基于容器的應用程序的容器編排平臺。
它有多種“版本”可供選擇,并且能夠在本地和云中運行,因此已成為事實上的標準。根據(jù)最近的數(shù)據(jù),Kubernetes 處于領先地位,市場份額超過 95%。
如果您正在考慮將 K8s 用于您的企業(yè)環(huán)境,或者想要擴展 Kubernetes 部署的范圍,以下列出了四個培訓要點和八個最佳實踐。
Kubernetes 成功 的 4 個重要培訓主題
無論這是您第一次使用 Kubernetes,還是讓新的團隊成員了解容器管理,從基礎開始都是至關重要的。
就像員工需要 AWS 數(shù)據(jù)科學、Google Analytics 或Power BI 培訓課程來有效地利用這些解決方案一樣,讓用戶掌握關鍵的 Kubernetes 培訓主題至關重要。這些主題包括:
1. 容器編排基礎知識
容器很常見。Docker、Podman 和 OpenVZ 等解決方案允許公司創(chuàng)建和部署虛擬容器用于存儲、數(shù)據(jù)處理或應用程序開發(fā)。
Kubernetes 幫助您集體管理這些容器以最大限度地提高其效率。此過程稱為編排。標準編排功能包括啟用跨容器通信、確保容器安全和擴展容器集群。
2. K8s 術語
Kubernetes 的關鍵術語包括:
- Pod —Pod 由一個或多個容器組成。它們是 K8s 中最小的執(zhí)行單元。
- Node —節(jié)點是托管 Pod 的物理服務器或虛擬機 (VM)。
- Cluster —集群是一組節(jié)點,通常由主節(jié)點管理。
- Etcd —主節(jié)點包含 etcd,通常稱為 Kubernetes 事實來源。在 K8s 中進行的任何更改都以 JSON 格式存儲在 etcd 中。
- API server —API 服務器啟用與 Kubernetes API 的通信。用戶、程序和 kubectl 命令行界面 (CLI) 都可以使用它。
- Controller manager —控制器管理器告訴 K8s控制器創(chuàng)建帳戶、訪問 API 并將服務連接到 Pod。
- Scheduler —調度程序將工作分配到各個節(jié)點,并計算資源需求以確定 Pod 何時運行以及哪些節(jié)點應運行這些 Pod。
3. 可能的部署路徑
使用 K8s,有多種可能的部署路徑。您可以在物理機或虛擬機上本地部署 Kubernetes,在云中運行該解決方案,或將兩者結合起來。
簡化 K8s 部署的八個最佳實踐
一旦員工掌握了 Kubernetes 的基礎知識,下一步就是部署。但是,鑒于 K8s 的范圍和規(guī)模,團隊很容易不知所措。
以下列出了八個最佳實踐,以幫助簡化部署。
1. 選擇合適的版本
除了不同的部署選項外,Kubernetes 還提供多種“版本”,每種版本都有其優(yōu)勢。
- 本地選項:KIND (Kubernetes inDocker) 和 Docker Desktop 是開發(fā)和測試的絕佳選擇。這些輕量級工具允許團隊在擴展到生產環(huán)境之前進行實驗和微調配置。
- 云原生服務:像GoogleKubernetes Engine (GKE)、AmazonElastic Kubernetes Service (EKS) 和AzureKubernetes Service (AKS) 這樣的云提供商提供了完全托管的環(huán)境,簡化了基礎設施管理。這些選項通過處理更新、監(jiān)控和擴展來減少運營開銷。
- 企業(yè)解決方案:Red HatOpenShift 和VMwareTanzu 提供了額外的自動化、監(jiān)控和合規(guī)性層。這些工具適用于具有復雜多集群環(huán)境或嚴格監(jiān)管要求的組織。
仔細評估您的工作負載、團隊專業(yè)知識和部署目標,以選擇最適合您用例的版本。
2. 使用 Kubernetes 命名空間
命名空間充當 Kubernetes 集群中的虛擬分區(qū)。這些邏輯隔離允許您有效地組織資源,在同一個集群中管理多個項目,并根據(jù)需要隔離工作負載。 例如,您可以為開發(fā)、測試和生產環(huán)境創(chuàng)建單獨的命名空間以避免資源沖突。命名空間還有助于執(zhí)行資源配額,使跨團隊或應用程序公平分配 CPU、內存和存儲資源變得更容易。隨著集群規(guī)模和復雜性的增長,這種級別的組織變得至關重要。
3. 定義資源限制
資源限制是優(yōu)化集群性能的關鍵保障。通過為 CPU 和內存設置最小和最大資源限制,您可以防止一個應用程序消耗所有可用資源并影響其他應用程序的性能。
例如,您可以配置資源請求以保證關鍵應用程序的最小 CPU 級別,同時設置限制以防止在峰值負載期間過度消耗。這些配置在多租戶環(huán)境中特別有價值,在多租戶環(huán)境中,公平的資源分配是保持平穩(wěn)運行的關鍵。
4. 考慮滾動更新
滾動更新是一種強大的策略,可以最大限度地減少部署期間的應用程序停機時間。這種方法不是同時更新所有容器實例,而是逐步替換它們。
如果一個應用程序跨越五個 Pod,Kubernetes 可以一次關閉一個 Pod,用新版本替換它,同時保持其他 Pod 運行。這允許最終用戶不間斷地服務,并在最新部署出現(xiàn)問題時提供回滾機制。將滾動更新集成到 CI/CD管道中強烈推薦用于更安全、更高效的實現(xiàn)。
5. 實施基于角色的訪問控制 (RBAC)
RBAC 是一項安全功能,可在 Kubernetes 中啟用細粒度的訪問管理。通過定義角色并將它們分配給用戶或組,您可以控制誰可以在集群中對資源執(zhí)行特定操作。
例如,開發(fā)人員可能能夠修改開發(fā)命名空間中的部署配置,但不能對生產環(huán)境進行更改。RBAC 降低了意外錯誤配置的風險并增強了安全性,使其成為任何 Kubernetes 環(huán)境的基本實踐。
6. 設置 Pod Disruption 預算 (PDB)
PDB 定義在計劃維護或意外中斷期間可以運行的 Pod 的最小數(shù)量。通過配置 PDB,您可以在這些事件期間保持應用程序可用性。
例如,如果應用程序需要至少三個副本才能正常運行,則可以將 PDB 設置為一次只允許中斷一個 Pod。這確保即使發(fā)生中斷也能處理用戶請求,從而保持關鍵服務的可用性。
7. 利用自定義資源定義 (CRD)
CRD 允許您通過擴展 Kubernetes API 來定義自定義資源和控制器。在實踐中,這允許訓練有素的工作人員構建特定于應用程序的工作流程。對于具有獨特應用程序工作流程或要求的組織,此功能非常方便。
一個例子是創(chuàng)建一個自定義資源類型來管理特定配置,例如數(shù)據(jù)庫連接或應用程序密鑰。這種級別的自定義使團隊能夠自動化重復性任務,簡化復雜的工作流程,并提高管理 Kubernetes 環(huán)境的效率。
8. 利用 Kubernetes 服務選項
諸如 Azure Kubernetes Service (AKS) 之類的解決方案可以在云中利用 K8s。但是,除了管理容器之外,您的團隊還可以通過其他服務選項來擴展 Kubernetes 的影響。
例如,Azure 容器實例提供了一種輕量級的 Azure VM 替代方案,而 Azure Service Fabric 允許您創(chuàng)建和管理有狀態(tài)服務。此結構支持各種 Microsoft 服務,包括 Power BI、Cosmos BD 和 Dynamics 365。
充分利用 Kubernetes
Kubernetes 是一個功能強大、靈活的容器管理平臺。但是,請充分利用此解決方案。
無論您是在本地托管 K8s,利用云供應商產品,還是使用企業(yè)級管理工具,全面的培訓和有針對性的最佳實踐都有助于簡化部署并最大限度地提高 K8s 的影響。