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