ref: https://blog.devgenius.io/disaster-recovery-on-kubernetes-98c5c78382bb
作者認為即使那些知名的託管K8s服務(AKS/EKS/GKE)本身有提供各種機制來強化系統的存取性,但是作為一個正式生產環境的 Kubernetes 勢必還是要有一套災難復原的機制,因為有些災難並不是底層架構導致,有可能是人員的操作錯誤導致叢集內發生問題(譬如刪除整個 namespace).
隨者愈來愈多的團隊會將跨地區當作解決方案的一個考量時,要如何能夠找到一個簡單的備份還原機制來面對 Kubernetes 則是一個複雜的問題。 而本篇文章將會探討如何使用 Velero 來針對 Kubernetes 叢集進行備份,還原甚至是災難復原等操作,透過這類型的機制實際上也可以做到遷移 Kubernetes 叢集。
文章開頭作者提出了一個很值得注意的論點,就是高可用性(HA)的環境並不代表該環境擁有備份與還原機制。
HA 用來確保單一底層架構出現問題時整體服務不受影響,還是有能夠繼續存取既有的服務。但是假如遇到資料損毀或是其他意外刪除的,HA 的機制並沒有辦法讓這些服務可以復原。
所以就算系統是運行到 HA 的環境下,對於備份相關的解決方案還是需要準備,而且最重要的是這類型的解決方案不能只有準備,而是需要真的練習,嘗試復原,確保團隊熟悉整個還原的步驟,否則當問題發生時有可能會變成不知道要如何從備份資料來進行有效還原。
文章後半部分探討關於 Velero 的架構與使用,同時也列舉其他相關的專案,如
kube-backup
Cohesity
Kasten 10
Portworx PX-Backup]
Rancher Longhorn
對於 Kubernetes 備份還不熟悉或是團隊尚未導入的讀者可以嘗試使用看看 Velero
「using namespace」的推薦目錄:
- 關於using namespace 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於using namespace 在 BorntoDev Facebook 的最佳貼文
- 關於using namespace 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於using namespace 在 Why is "using namespace std;" considered bad practice? 的評價
- 關於using namespace 在 What is "using namespace" pollution? - Software Engineering ... 的評價
- 關於using namespace 在 Namespaces (C++) - cpp-docs - GitHub 的評價
- 關於using namespace 在 [namespace.udir] 的評價
- 關於using namespace 在 Using namespace wildcards in XPath - MarkLogic 的評價
using namespace 在 BorntoDev Facebook 的最佳貼文
🔥 ขอสั้น ๆ วันนี้ขอนำเสนอออ การใช้ argc กับ argv ใน C++
.
มันคืออะไร มีรายละเอียดยังไง ถ้าพร้อมแล้วไปอ่านกันโลดดด !!
.
✨ argc (ARGument Count) คือ จำนวนข้อมูลที่ถูกนำเข้าจาก command-line ซึ่งโดยปกติแล้ว ขนาดของ argc จะเริ่มต้นด้วย 1 เสมอคือ ชื่อของโปรแกรม (ถ้ามีการใส่ Argument เพิ่มก็บวกเพิ่มตามข้อมูลที่ใส่มา)
.
⭐ argv (ARGument Vector) คือ Array ที่เก็บข้อมูลตัวอักษรที่นำเข้าจาก command-line มีขนาดเท่ากับ argc ซึ่งที่ตำแหน่งแรก (0) จะเก็บชื่อของโปรแกรมไว้เสมอ (ถ้ามีการใส่ค่ามาผ่าน command-line ตำแหน่งถัด ๆ ไปก็คือตัวข้อมูลนั้น ๆ)
.
📑 ตัวอย่าง:
//file name test.cpp
#include
using namespace std;
int main(int argc, char* argv[]) {
cout << "You have entered " << argc
<< " arguments:" << "\n";
for (int i = 0; i < argc; ++i)
cout << argv[i] << "\n";
return 0;
}
//input in terminal
$ g++ -o run test.cpp
$ ./run 1 test "data test"
//output
You have entered 4 arguments:
./run
1
test
data test
.
อู้ววเป็นไงบ้างง ไปลองใช้ดูน้า ได้ผลยังไงมาแชร์ให้ฟังกันบ้างง 😆
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
using namespace 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本文延續前一篇文章,作者探討十五種 Kubernetes 不該使用的部署與維運模式,總共三篇,每篇五種。
Using Kubectl as a debugging tool
作者認為一個良好的 Kubernetes 叢集必定要有一個相對應個可觀測性工具,包含 Metrics/Log/Tracing 等。對於一個維運人說來說,今天要處理事情時,第一件事情如果還是慢慢的用 kubectl 來執行 get, describe ,log 等指令找問題的話就太慢了,這類型的工具都應該只是輔助使用,真正還是要依賴有效的監控系統,不論是常見的系統指標,應用程式狀態甚至是應用程式獨特的指標等,將這些資訊整合到一個方便顯示的儀表板,甚至搭配對應的 Alert 功能來達到主動通知。
Misunderstanding Kubernetes network concepts
Kubernetes 內提供的網路功能很容易被搞混,Service(ClusterIP, NodePort, LoadBalancer) 與 Ingress 的差異到底是什麼,很多初次踏入 Kubernetes 的玩家沒有特別去理解差異,只知道應用程式部署後就可以通了。Service Mesh 這個概念作者也推薦去學習與瞭解,知道這個概念是什麼,以及想要什麼解決問題就好,因為並非不是每個叢集都真的需要一套 Service Mesh 的解決方案,但是理解這個概念未來就有能力知道什麼時候需要導入。
Using permanent staging environments instead of dynamic environments
對於應用程式開發者來說,如何於 Kubernetes 環境上測試新功能一直都是一個困難的問題。大部分的團隊中都會有 QA/Staging/Production/Dev(甚至更多)的環境,假設 Dev 環境可以供開發者測試,這些開發者要如何確保自己的修改沒有問題且通過整合測試。
一個常見的問題是假如多個開發者同事部署自己的程式碼到固定環境中,有可能會造成互相干擾,導致問題發生時沒有辦法正確的判別問題是誰產生的。
作者提到一種作法就是透過預借的概念,確保每個開發者使用叢集時都不會有他人干擾,然而這個問題也會引發其他問題,譬如開發者間要互相協調時間,同時每個人用完環境後都要還原成穩定的狀態,以免干擾下一位的使用。
作者推薦使用動態叢集的方式來進行測試,使用 Github PR 為範例,當 PR 開啟時,動態創建 Kubernetes 叢集供測試,當 PR 合併後就會將該 Cluster 給移除。透過這種範例每個開發者都可以有獨立的環境進行測試彼此不干擾,同時也會隨者程式碼的合併而自動回收環境,也不需要擔心環境污染問題。
Mixing production and non-production clusters
任何團隊一定要有正式生產環境的叢集跟其他叢集分隔開來,千萬不能使用 namespace 的方式於一個叢集中同時維護生產與非生產環境。譬如
1. 任何人操作 Kubernetes 都很容易失誤,譬如指令下錯,指向錯的物件。這類型的操作都有可能導致該叢集上生產環境被誤刪
2. namespace 的隔離性不好,實際上很多物件彼此還是可以互相存與溝通,這部分也有其他的隱憂
詳細原文可以參考下列連結。
https://medium.com/containers-101/kubernetes-deployment-antipatterns-part-2-2af25a710bc0
using namespace 在 What is "using namespace" pollution? - Software Engineering ... 的推薦與評價
As I read the Google standard, you cannot use the using namespace foo; directive anywhere. This directive brings in everything declared in the namespace and ... ... <看更多>
using namespace 在 Namespaces (C++) - cpp-docs - GitHub 的推薦與評價
Identifiers outside the namespace can access the members by using the fully qualified name for each identifier, for example std::vector<std::string> vec; , or ... ... <看更多>
using namespace 在 Why is "using namespace std;" considered bad practice? 的推薦與評價
... <看更多>
相關內容