在管理 K8S 集群 3 年後,我學到了 10 個教訓

Mondo 社會 更新 2024-02-27

背景

在過去的三年裡,我經歷了管理 kubernetes 集群這個有時波濤洶湧的領域。 這段充滿挑戰和發現的旅程讓我對這項尖端技術以及許多其他方面有了深刻的理解。 在這篇文章中,我想與大家分享我作為 Kubernetes 集群管理員學到的十個最有價值的經驗教訓。

這些課程涵蓋各種主題,從管理底層基礎架構到優化部署過程,包括確保集群可伸縮性和安全性的最佳實踐。 無論您是 Kubernetes 新手還是經驗豐富的專家,這些提示都將為您提供有關如何有效管理 Kubernetes 集群的豐富視角。

讓我們深入了解這些課程,這些課程是三年經驗、成功和挑戰的結晶。

第 1 課:在雲中使用 Kubernetes

除非有極端的限制,否則不要自己管理底層的 Kubernetes 基礎設施。 您花時間除錯對您的業務沒有價值的問題。 成為 kube-api、kube-apiserver、kubelet、etcd、kube-proxy 等方面的專家真是太好了,但每天自己維護這些並不能創造任何商業價值。 您無需成為這些概念的專家即可有效地管理集群。 將此低級別任務委託給比您做得更好的雲服務提供商(AWS、Azure、GCP、OVH 等)。 在 HK-Tech,我們選擇了 AWS 和 EKS 集群(請注意,ECS 不是 Kubernetes! )。

第 2 課:使用 ** 部署所有與 Kubernetes 相關的基礎結構

集群的任何部分都不應在控制台上手動完成,即使是簡單的標籤也不行。 特別是要避免“我先在控制台上快速修復,稍後再更新**”的心態。 謬論:你永遠不會那樣做。

第 3 課:避免過度使用您無法完全控制的 helm 圖表

是的,它們很棒,它們工作迅速,而且您不必費心編寫自己的 yaml,除非有一天更新導致一切都崩潰。 如果你真的很懶或時間不夠,至少要努力去理解這些價值觀YAML 檔案,並避免使用預設值。 在 hk-tech,規則是不使用掌舵圖;在最壞的情況下,我們只會得到模板。

第 4 課:Kubernetes 不喜歡“直接遷移”。

因此,為了使用 k8s,您需要從遺留應用程式的雲適配開始。 這不是關於 k8s 適應你的應用程式,而是關於讓 k8s 適應你的應用程式。 如果您無法重寫應用程式,最好堅持使用舊的虛擬機器執行模式。

第 5 課:網格化還是不網格化?

如果您不需要服務網格,請不要安裝它。 那麼你怎麼知道你是否需要它呢?問自己兩個問題:集群中的應用程式是否相互通訊?是否需要安全策略來在集群中的應用程式之間切換?如果兩者的答案都是肯定的,那麼安裝服務網格可能會很有用。 我沒有具體的建議;通常,各種糖化技術彼此相似。

第 6 課:避免使用過多的工具

Kubernetes 提供了大量的輔助工具,這些工具有望為更好地管理集群提供模仿和奇蹟:Argocd、Lens、K9s、Keda、Krew、Kubectx、Kubens、Kail 等等。 避免像集郵一樣收集它們,老實說:90% 的需求都可以用 kubectl 來滿足。 就我個人而言,我只使用 kubectx、kubens 和 k9s,它們對集群管理很有幫助。

第 7 課:必須為 Pod 定義資源限制(記憶體和 CPU)

這將防止編碼不當或配置錯誤的應用程式吞噬集群的所有資源,並導致其他應用程式由於一些貪婪的 Pod 而乙個接乙個地崩潰。 這也是警惕 helm chat 並始終詳細檢查封裝背後的 manifest 源的原因之一**。

第8課:思考無國籍狀態

理想情況下,最好避免將資料儲存在 Pod 中。 如果由於某種原因無法避免,最好直接使用 NAS 而不是磁碟掛載。 否則,您可能會驚訝地發現,部署中的某些 Pod 無權訪問永續性資源。 是的,硬碟只能掛載在乙個節點上,所以如果你的 Pod 分布在多個節點上,同一節點上的 Pod 將看到相同的資料,但其他節點上的 Pod 將看不到。 使用像 EFS 這樣的 NAS 掛載,您將能夠避免此問題。

第 9 課:配置 HPA(水平 Pod 自動縮放)。

如果你想保持原來的工作方式,並從Kubernetes的強大功能中受益,你需要根據需求自動管理資源利用率,並且你需要在所有應用程式專案上配置HPA。 (helm 聊天的另乙個限制,不幸的是,它通常非常缺乏)。

第10課:不要害怕改變

平均而言,您應計畫每年對集群進行三次版本公升級,大約每四個月更新一次。 有些更新是透明的,但通常會有影響的更改。 為了更好地為這些更新做好準備,我建議您閱讀、重讀和重新閱讀發行說明,以及那些在您之前進行過版本更新的人的經驗。 我的建議,以及我們在 hk-tech 實施的,是始終保持最新版本(除非有安全補丁)。

祝您 Kubernetes 之旅愉快!

作者丨Herve Khg**丨***Docker中文社群(ID:DockerChina)DBAPLUS社群歡迎技術人員投稿,投稿郵箱:editor@dbapluscn

相關問題答案

    K8S 集群部署工具 Kubeadm 詳解

    朋友們,您好。Kubeadm 是快速建立 Kubernetes 集群的最佳實踐工具,我們只需要使用 kubeadm init 和 kubeadm join 命令即可完成 ks 集群的部署。kubeadm init 用於部署控制平面節點。kubeadm join 用於部署 Worker 節點並將它們加...

    K8s 集群可觀測性資料解除安裝最佳實踐

    在微服務架構下,KS集群中往往部署了多套服務,這也意味著不同的團隊 不同的角色 不同的服務會在同一集群中,不同業務的資料需要在不同的空間進行管理和檢視。在傳統的主機環境中,在不同主機上部署 datakit 時,通過配置不同的工作空間 token 可以很容易地實現這一點,但在使用 daemonset ...

    Trivy 為 K8s 新增了 KBOM 漏洞掃瞄

    標準做法是掃瞄應用程式和 以查詢漏洞。但為什麼要止步於此呢?Aqua 希望為 Kubernetes 帶來相同級別的安全性。Trivy 將 KBOM 漏洞掃瞄新增到 Ks 中,作者 Itay Shakury 是 Aqua Security 的開源副總裁,負責領導開源雲原生安全解決方案的工程設計。Ita...

    K8s 容器除錯高階技巧

    如果您在 Kubernetes 上執行軟體,則需要除錯在某個時候部署的軟體的某些方面。對於 習 虛擬機器 VMS 來說,一種自然而然的簡單除錯方法是連線到正在執行的 Pod 並對其進行解釋 kubectl exec it podname c containername bash這通常有效,而且有效。...

    如何使用 Helm 整合 Prometheus 和 Grafana 第 1 部分在 K8s 上

    在這個由三部分組成的系列中,您將了解 習 如何使用 Helm 在 Kubernetes 上整合 Prometheus 和 Grafana,以及如何在 Grafana 上建立簡單的儀表板。Prometheus 和 Grafana 是 Kubernetes 上最流行的兩個開源監控工具。了解 習 如何使用...