DevOps 團隊如何提高 Kubernetes 的表現
Kubernetes(也稱為K8s)仍然是開發人員中需求最高的容器技術。K8s最初是由Google的工程師開發的,作為一種解決方案,它在本地、公共云、私有云或混合云的托管中都廣受歡迎。Statista的數據顯示,2021年公共云中Kubernetes的市場份額為16%,到2022年增長至45%。VMware關于2022年Kubernetes狀況的報告還顯示,在擁有1000名以上員工的大型企業中,對Kubernetes的采用率從2018年的27%增加到2020年的48%。
然而,盡管Kubernetes變得越來越受歡迎,但仍存在一些挑戰,使得DevOps團隊無法從使用K8s構建云原生應用程序中獲得全部好處。他們如何平衡取舍并交付最佳項目呢?讓我們一起快速了解一下。
觀測性是關鍵Kubernetes具有很多優點,因為容器生態系統中存在多個節點和接觸點。這使得全面了解整個K8s環境成為一項具有挑戰性的任務。事實上,使用K8s的用戶明白手動理解其容器是行不通的。然而,根據Groundcover公司的首席執行官兼聯合創始人Shahar Azulay的說法,解決這個挑戰的方法在于使用觀測性工具。
通過使用觀測性工具,DevOps團隊可以全面了解Kubernetes中發生的一切,從日志到指標再到追蹤。這使得DevOps團隊能夠快速修復錯誤并大規模構建應用程序。Azulay表示:“開發人員可以通過識別源頭最有趣的數據,智能地對其進行采樣,而不是收集和分析所有可用的數據或隨機抽樣數據,然后僅選擇將這些數據發送到他們的觀測性平臺”。
通過觀測性,DevOps團隊可以減少停機時間、降低成本,并最終提高性能。如今一些最受歡迎的觀測性工具包括Grafana、Groundcover和Prometheus。Azulay進一步指出,Groundcover代表了觀測性的新一代,因為它“打破了常規的應用性能管理(APM)模式,提供了資源消耗極小、全面可觀察且透明簡化的定價”。
將安全置于首位僅關注觀測性還不夠,因為那只解決了問題的一半。尤其是在安全方面還有更多需要關注的地方。紅帽(Red Hat)關于2023年Kubernetes安全狀況的報告顯示,94%的受訪者在過去12個月中遇到了安全事故,64%的受訪者由于K8s安全問題而延遲或放緩部署進程。30%的受訪者還將漏洞視為他們對容器和K8s環境最擔心的問題。
在Kubernetes環境中運行應用程序時保持安全顯然非常重要。如果不將安全置于首要位置,可能會對性能產生負面影響,增加修復成本,并造成長期的破壞性影響。ARMO公司的開源安全提供商、當今最流行的Kubernetes安全工具Kubescape的創始人兼副總裁Box Craig指出,“與所有云軟件一樣,確保在將Kubernetes訪問權限委派給團隊時有適當的防護措施非常重要”。
Craig進一步指出,確保安全的一些步驟包括(但不限于):
定期進行安全補丁和更新。在配置K8s集群時遵循行業最佳實踐。檢查和驗證鏡像是否存在惡意代碼、錯誤配置和其他漏洞。禁止訪問云API元數據。利用基于角色的訪問控制(RBAC),只允許用戶根據其角色和職能訪問K8s資源。使用Kubecsape等安全工具保護您的集成開發環境(IDE)、CI/CD流水線和集群。
解決存儲問題在使用Kubernetes時,額外的存儲會帶來成本,并由開發人員和組織承擔大部分費用。為了有效減少開發人員的部署摩擦,大型組織通常轉向公共云環境,并減少對本地服務器的依賴。
ARMO公司的首席技術官兼聯合創始人Ben Hirschberg表示,解決這個問題的一種方法是“在源頭分析數據,最大程度地減少為觀察而移動大量數據的需求。通過在節點或應用程序內部分析數據,不需要將所有數據移動到外部存儲或可觀測性平臺。通過本地存儲數據,DevOps團隊可以避免不必要的數據傳輸成本,同時確保需要時可以立即獲取必要的數據”。
優先考慮互操作性K8s面臨的另一個挑戰是互操作性,即應用程序在Kubernetes中相互通信的能力。云原生應用程序之間在K8s上的互操作通信并不像看起來那么直接。正如本文所指出的,缺乏互操作性可能會“影響集群部署,因為它包含的應用實例可能在集群中的各個節點上運行時出現問題”。
解決這個挑戰的一種方法是利用跨多個組織合作項目(如AWS、Google、IBM、SAP和Red Hat)為您的云原生應用提供服務。
最后的思考最佳的K8s實踐不是一勞永逸的解決方案;它們來自于不斷從錯誤中學習并改進實踐。對于已經被技術工作和以創紀錄速度部署容器的需求所拖累的DevOps團隊來說,這可能是一項艱巨的工作。幸運的是,觀測性工具可以指明需要關注的重點,并幫助針對安全、互操作性、存儲等關鍵問題采取有針對性的步驟。