譯者 | 張哲剛
審校 | 孫淑娟 梁策
隨著企業將 Kubernetes 投入生產,Kubernetes集群和應用程序的不斷增加,它們也需要提供媲美其他生產系統的“企業級”服務。一旦遭遇意外事故、系統崩潰或惡意攻擊,執行Kubernetes備份對保護應用程序的運行至關重要。除了應用程序自有的彈性和數據保護機制外,還需要制定正確且有效的備份策略。
合理的Kubernetes 備份和恢復策略應滿足以下幾種需求:
- 如若遭遇不可抵抗力事故時仍能恢復整個集群(容災恢復);
- 恢復特定的應用程序(例如部分數據受損時);
- 在不同的環境之間遷移集群(本地到云,反之亦然);
Kubernetes備份的難點在于容易出錯。這就要求技術人員操作備份時必須考慮周全,否則就難以(甚至完全不可能)將集群或應用程序從崩潰恢復至正常。本文通過分析七個常見的Kubernetes 備份和恢復錯誤,探討Kubernetes 備份存在的風險因素以及使用Kubernetes 備份的最佳操作方案。
Kubernetes 備份有何與眾不同?
Kubernetes備份應用程序與虛擬機上備份和恢復大不相同。Kubernetes環境非常動態化,單個的生產應用程序就可能包含數百個組件,包括容器或pod、配置文件存儲、證書、加密憑證和卷。依照負載或其他操作要求,容器實例不斷變化,與此同時,數據寫入儲存到單個或多個可以動態創建的持久卷。要想成功恢復,Kubernetes 應用程序備份必須獲取全部這些信息。完善的Kubernetes集群備份必須包括:存儲在/etcd中的所有的Kubernetes 控制面板參數、所有的命名空間和所有的持久卷。
Kubernetes 備份和恢復易犯的錯誤
操作人員和開發人員都有可能會犯錯,即便是最強悍的硬件和軟件也有可能會崩潰。當今,隨著網絡犯罪的日益猖獗,正確、完善而及時的備份是防止人員瀆職的最后一道防線。Kubernetes 備份和恢復對于生產經營的正常運轉至關重要,因此必須盡力避免以下七個常見錯誤:
錯誤 1:手動編寫腳本來管理備份
如果應用環境和業務需求非常有限,倒是可以使用Kubernetes API 簡單編寫腳本,用來備份或快照與應用程序關聯的pod、服務、配置文件存儲、數據存儲和加密憑證。但這種方法的缺陷在于它根本不具備任何擴展能力。隨著部署的集群和應用程序數量的增加,這種方法就完全失效了。并且,在完全依賴手動腳本的環境中,所有操作都會變得非常脆弱且難以追蹤和溯源。最終后果就是各個集群衍生各自的變體,問題上升到只有資深專家才能解決的地步。
錯誤 2:備份過程沒有實現自動化
Kubernetes部署的目標是使操作得到最大程度的自動化。對于大規模的業務運營來說,自動化至關重要。嚴格來說,任何要求定期執行的任務都必須是自動化的,包括集群和應用程序備份。另外,由于Kubernetes環境變動頻繁,除了按時計劃的備份,技術人員還必須能夠及時操作臨時備份。
錯誤 3:使用多個管理工具管理備份
隨著時間推移,Kubernetes環境也日新月異地發展,因此,同時使用多個工具來管理備份也是常見的。
- 技術人員為不同的Kubernetes發行版適配了不同的工具;或者在本地集群和公有云中使用不同的工具進行備份。
- 技術人員使用現有工具或腳本來備份/etcd(控制面板),但是使用其他工具或存儲途徑備份持久卷。
在沒有遇到問題的時候,一切看似安然無恙。但是使用多個管理工具早晚會導致Kubernetes恢復出現問題。如何協調兩個或多個管理工具同步恢復到某個時間點?必須在多個不同的集群中恢復同一個應用程序時怎么辦?所以,正確的選擇是單純使用一個簡單明了(至少盡可能簡單明了)的工具來管理,這樣的話何時何地操作恢復都一樣,輕車熟路。
錯誤 4:沒有正確備份持久卷
顧名思義,持久卷就是要持久。如果希望持久卷真正做到持久,那么備份就是必須的。Kubernetes環境是動態的,因此備份也要隨之而動,跟上集群和應用程序變化的步伐。如果備份僅限于當前操作者視野范圍之內的持久卷,那么這種備份操作遲早會有疏漏,無法正確備份所有內容。無論是個人使用還是商用,Kubernetes備份部署都必須做到有能力檢查集群的狀態以確定需要備份的持久卷。基于策略的方案可以確保技術人員根據需要提供的服務級別,在正確和必要的時間段備份持久卷。
錯誤5:不具備監控備份執行的能力
對于系統管理員來說,最糟糕的事情莫過于在啟動緊急恢復時才發現過去兩周的備份都是失敗的。無論使用什么備份工具,都必須嚴格要求具備完善的監控備份執行能力以及驗證備份是否成功的能力。形形色色的勒索軟件攻擊最常用的伎倆就是是靜默禁用備份功能,因此這項功能格外重要。一旦無法恢復,唯一的選擇就只有掏錢包了。
錯誤 6:沒有安全地存儲備份憑據
隨著Kubernetes環境擴展到多個集群,為每個集群提供單獨的備份憑據是必要的。這些憑據有可能成為一個重大漏洞。因此,管理和保護它們以防止未經授權的訪問,是存儲備份憑據的安全底線。理想狀況,則是有一個Kubernetes備份部署,用來自動處理備份和其他憑據。
我們最近的博客文章《保衛 Kubernetes:將零信任原則應用于Kubernetes環境》詮釋了如何應用Kubernetes內置功能來防止未經授權的訪問入侵Kubernetes集群。
錯誤 7:沒有做好合規性管理
每個行業都必須合規,都有必須滿足的監管要求。大多數組織也有各自的行業規范。明了這些規則要求非常重要,以確保自身達標或留有富余量,并保證有能力向審計人員和安全部門證明自身合規。
定期報告可以檢查和發現問題,找出沒有貫徹執行Kubernetes備份方案之處,降低數據丟失或泄露的風險,以免頻繁停機影響商業信譽。
譯者介紹
張哲剛,51CTO社區編輯,系統運維工程師,國內較早一批硬件評測及互聯網從業者,曾入職阿里巴巴。十余年IT項目管理經驗,具備復合知識技能,曾參與多個網站架構設計、電子政務系統開發,主導過某地市級招生考試管理平臺運維工作。
原文標題:??7 Common Kubernetes Backup and Recovery Mistakes??,作者:Kyle Hunter