精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:云計算技術專區 → 正文

如何備份Kubernetes和Docker

責任編輯:cres 作者:W. Curtis Preston |來源:企業網D1Net  2020-03-19 10:59:53 原創文章 企業網D1Net

用戶不必備份容器中的所有內容,但在發生災難時備份運行和管理容器的配置是很重要的。
 
用戶的容器基礎設施需要某種類型的備份。Kubernetes和Docker在災難之后不會自己構建。用戶無需備份每個容器的運行狀態,但是需要備份用于運行和管理容器的配置。
 
以下是用戶需要備份的內容。
 
配置和所需狀態信息
 
•Dockerfile用于構建鐿像以及這些文件的所有版本
•從Dockerfile創建并用于運行每個容器的鏡像
•Kubernetes etcd和其他有關集群狀態的K8s數據庫
•Deployments用于描述每個部署的YAML文件
 
容器創建或更改的持久數據
 
•持久卷
•數據庫
 
Dockerfiles
 
Docker容器從鏡像運行,其鏡像從Dockerfiles構建。正確的Docker配置將首先使用某種存儲庫(例如GitHub)作為所有Dockerfile的版本控制系統。不要使用從臨時Dockerfile構建的臨時鏡像創建臨時容器。所有Dockerfile都應存儲在存儲庫中,如果當前版本存在問題,該存儲庫將允許用戶提取這個Dockerfile的歷史版本。
 
用戶還應該具有存儲與每個K8s部署關聯的YAML文件的某種存儲庫,這些是可以從版本控制系統中受益的文本文件。
 
然后需要備份這些存儲庫。GitHub是最受歡迎的存儲庫之一,它提供了許多備份存儲庫的方法。有多種腳本使用提供的API來下載存儲庫的當前備份。用戶還可以使用第三方商業工具來備份GitHub或用戶正在使用的任何存儲庫。
 
如果沒有遵循上述建議,而是根據不再具有Dockerfile的鏡像運行容器,則可以使用Docker 鏡像歷史命令或dfimage之類的工具從當前鏡像創建Dockerfile。將這些Dockerfile放入存儲庫中,然后開始備份。但是不要陷入這種情況,應該始終存儲和備份用于創建環境的Dockerfile和YAML文件。
 
Docker鏡像
 
用于運行容器的當前鏡像也應存儲在存儲庫中(當然,如果用戶正在Kubernetes中運行Docker鏡像,那么已經在這樣做了)。用戶可以使用私有存儲庫(例如Docker注冊表)或公共存儲庫(例如Dockerhub)。云計算提供商還可以為用戶提供私人存儲庫來存儲鏡像。然后應備份該回購的內容。諸如“Dockerhub備份”之類的簡單搜索就可以產生令人驚訝的眾多選擇。
 
如果用戶沒有用于運行容器的當前鏡像,則可以使用docker commit命令創建一個。然后,使用Docker鏡像歷史記錄或工具dfimage從該鏡像創建Dockerfile。
 
Kubernetes etcd
 
Kubernetes etcd數據庫非常重要,應使用etcdctl snapshot save db命令進行備份。這將在當前目錄中創建文件snapshot.db。然后應將該文件備份到外部存儲。
 
如果使用的是商業備份軟件,則可以在創建snapshot.db的目錄備份之前輕松觸發etcdctl snapshot save命令。這是將備份集成到商業備份環境中的一種方法。
 
持久卷
 
容器可以通過多種方式訪問??持久性存儲,而持久性存儲可用于存儲或創建數據。傳統的Docker卷位于Docker配置的子目錄中。綁定掛載只是Docker主機上安裝在容器內(使用bind mount命令)的任何目錄。出于多種原因,Docker社區首先選擇傳統卷,但出于備份目的,傳統卷和綁定安裝實質上是相同的。用戶還可以將網絡文件系統(NFS)目錄或對象從對象存儲系統作為卷裝入容器中。
 
用于備份持久卷的方法將基于用于容器的上述選項。但是,它們都會有相同的問題:如果數據正在更改,則需要處理該問題才能獲得一致的備份。
 
一種方法是關閉使用該特定卷的任何容器。這種做法雖然有些過時,但這是容器世界所面臨的挑戰之一,因為在容器中放置備份代理的典型方法并不是一種很好的選擇。一旦關閉,便可以備份該卷。如果它是傳統的Docker卷,則可以通過將其掛載到另一個在備份時不會更改其數據的容器中進行備份,然后在綁定安裝的卷中創建該卷的tar鏡像,然后使用備份系統使用的任何方法進行備份。
 
但是,這在Kubernetes中確實很難做到。這是有狀態信息最好存儲在數據庫而不是文件系統中的原因之一。而在設計K8s基礎設施時,需要考慮此問題。
 
另外,如果用戶使用綁定安裝目錄、NFS安裝文件系統或對象存儲系統作為持久性存儲系統,則可以使用最佳方法來備份該存儲系統。這可能是快照,然后是復制,或者只是在該系統上運行商業備份軟件。與相同卷的典型文件級備份相比,這些方法可能提供更加一致的備份。
 
數據庫
 
下一個備份挑戰是容器使用數據庫存儲其數據。這些數據庫需要以保證其完整性的方式進行備份。根據數據庫的不同,上述方法可能會起作用:關閉訪問數據庫的容器,然后備份存儲其文件的目錄。但是,這種方法所需的停機時間可能不合適。
 
另一種方法是直接連接到數據庫引擎本身,并要求它運行到文件的備份,然后可以對其進行備份。如果數據庫在容器內運行,則首先需要使用綁定安裝來附加一個可以備份的卷,因此其備份可以存在于容器外部。然后運行數據庫使用的命令(例如mysqldump)創建備份。然后確保使用備份系統創建的文件。
 
如果用戶不知道哪些容器正在使用什么樣的存儲或什么樣的數據庫怎么辦?一種解決方案可能是使用docker ps命令列出正在運行的容器,然后使用docker inspect命令顯示每個容器的配置。有一個名為“掛載”的部分,它將告訴用戶將哪些卷掛載在何處。任何綁定安裝也將在用戶提交給Kubernetes的YAML文件中指定。
 
商業備份解決方案
 
有各種各樣的商業備份解決方案可以保護上述部分或全部數據。以下是一個非常簡短的摘要:
 
•Commvault的虛擬服務器代理可以充當備份容器及其鏡像的代理。
•Cohenity為K8s命名空間提供數據保護。
•Heptio(現為VMware公司)提供為K8s設計的Velero備份。
•Contino、Datacore和Portworx提供專為K8和容器設計的存儲,并且還支持備份該信息。
 
鑒于K8和Docker的配置方式多種多樣,很難涵蓋所有內容。但是希望提供一些思考的機會,或者可以幫助用戶備份一些應該但尚未備份的東西。
 
版權聲明:本文為企業網D1Net編譯,轉載需注明出處為:企業網D1Net,如果不注明出處,企業網D1Net將保留追究其法律責任的權利。

關鍵字:云計算

原創文章 企業網D1Net

x 如何備份Kubernetes和Docker 掃一掃
分享本文到朋友圈
當前位置:云計算技術專區 → 正文

如何備份Kubernetes和Docker

責任編輯:cres 作者:W. Curtis Preston |來源:企業網D1Net  2020-03-19 10:59:53 原創文章 企業網D1Net

用戶不必備份容器中的所有內容,但在發生災難時備份運行和管理容器的配置是很重要的。
 
用戶的容器基礎設施需要某種類型的備份。Kubernetes和Docker在災難之后不會自己構建。用戶無需備份每個容器的運行狀態,但是需要備份用于運行和管理容器的配置。
 
以下是用戶需要備份的內容。
 
配置和所需狀態信息
 
•Dockerfile用于構建鐿像以及這些文件的所有版本
•從Dockerfile創建并用于運行每個容器的鏡像
•Kubernetes etcd和其他有關集群狀態的K8s數據庫
•Deployments用于描述每個部署的YAML文件
 
容器創建或更改的持久數據
 
•持久卷
•數據庫
 
Dockerfiles
 
Docker容器從鏡像運行,其鏡像從Dockerfiles構建。正確的Docker配置將首先使用某種存儲庫(例如GitHub)作為所有Dockerfile的版本控制系統。不要使用從臨時Dockerfile構建的臨時鏡像創建臨時容器。所有Dockerfile都應存儲在存儲庫中,如果當前版本存在問題,該存儲庫將允許用戶提取這個Dockerfile的歷史版本。
 
用戶還應該具有存儲與每個K8s部署關聯的YAML文件的某種存儲庫,這些是可以從版本控制系統中受益的文本文件。
 
然后需要備份這些存儲庫。GitHub是最受歡迎的存儲庫之一,它提供了許多備份存儲庫的方法。有多種腳本使用提供的API來下載存儲庫的當前備份。用戶還可以使用第三方商業工具來備份GitHub或用戶正在使用的任何存儲庫。
 
如果沒有遵循上述建議,而是根據不再具有Dockerfile的鏡像運行容器,則可以使用Docker 鏡像歷史命令或dfimage之類的工具從當前鏡像創建Dockerfile。將這些Dockerfile放入存儲庫中,然后開始備份。但是不要陷入這種情況,應該始終存儲和備份用于創建環境的Dockerfile和YAML文件。
 
Docker鏡像
 
用于運行容器的當前鏡像也應存儲在存儲庫中(當然,如果用戶正在Kubernetes中運行Docker鏡像,那么已經在這樣做了)。用戶可以使用私有存儲庫(例如Docker注冊表)或公共存儲庫(例如Dockerhub)。云計算提供商還可以為用戶提供私人存儲庫來存儲鏡像。然后應備份該回購的內容。諸如“Dockerhub備份”之類的簡單搜索就可以產生令人驚訝的眾多選擇。
 
如果用戶沒有用于運行容器的當前鏡像,則可以使用docker commit命令創建一個。然后,使用Docker鏡像歷史記錄或工具dfimage從該鏡像創建Dockerfile。
 
Kubernetes etcd
 
Kubernetes etcd數據庫非常重要,應使用etcdctl snapshot save db命令進行備份。這將在當前目錄中創建文件snapshot.db。然后應將該文件備份到外部存儲。
 
如果使用的是商業備份軟件,則可以在創建snapshot.db的目錄備份之前輕松觸發etcdctl snapshot save命令。這是將備份集成到商業備份環境中的一種方法。
 
持久卷
 
容器可以通過多種方式訪問??持久性存儲,而持久性存儲可用于存儲或創建數據。傳統的Docker卷位于Docker配置的子目錄中。綁定掛載只是Docker主機上安裝在容器內(使用bind mount命令)的任何目錄。出于多種原因,Docker社區首先選擇傳統卷,但出于備份目的,傳統卷和綁定安裝實質上是相同的。用戶還可以將網絡文件系統(NFS)目錄或對象從對象存儲系統作為卷裝入容器中。
 
用于備份持久卷的方法將基于用于容器的上述選項。但是,它們都會有相同的問題:如果數據正在更改,則需要處理該問題才能獲得一致的備份。
 
一種方法是關閉使用該特定卷的任何容器。這種做法雖然有些過時,但這是容器世界所面臨的挑戰之一,因為在容器中放置備份代理的典型方法并不是一種很好的選擇。一旦關閉,便可以備份該卷。如果它是傳統的Docker卷,則可以通過將其掛載到另一個在備份時不會更改其數據的容器中進行備份,然后在綁定安裝的卷中創建該卷的tar鏡像,然后使用備份系統使用的任何方法進行備份。
 
但是,這在Kubernetes中確實很難做到。這是有狀態信息最好存儲在數據庫而不是文件系統中的原因之一。而在設計K8s基礎設施時,需要考慮此問題。
 
另外,如果用戶使用綁定安裝目錄、NFS安裝文件系統或對象存儲系統作為持久性存儲系統,則可以使用最佳方法來備份該存儲系統。這可能是快照,然后是復制,或者只是在該系統上運行商業備份軟件。與相同卷的典型文件級備份相比,這些方法可能提供更加一致的備份。
 
數據庫
 
下一個備份挑戰是容器使用數據庫存儲其數據。這些數據庫需要以保證其完整性的方式進行備份。根據數據庫的不同,上述方法可能會起作用:關閉訪問數據庫的容器,然后備份存儲其文件的目錄。但是,這種方法所需的停機時間可能不合適。
 
另一種方法是直接連接到數據庫引擎本身,并要求它運行到文件的備份,然后可以對其進行備份。如果數據庫在容器內運行,則首先需要使用綁定安裝來附加一個可以備份的卷,因此其備份可以存在于容器外部。然后運行數據庫使用的命令(例如mysqldump)創建備份。然后確保使用備份系統創建的文件。
 
如果用戶不知道哪些容器正在使用什么樣的存儲或什么樣的數據庫怎么辦?一種解決方案可能是使用docker ps命令列出正在運行的容器,然后使用docker inspect命令顯示每個容器的配置。有一個名為“掛載”的部分,它將告訴用戶將哪些卷掛載在何處。任何綁定安裝也將在用戶提交給Kubernetes的YAML文件中指定。
 
商業備份解決方案
 
有各種各樣的商業備份解決方案可以保護上述部分或全部數據。以下是一個非常簡短的摘要:
 
•Commvault的虛擬服務器代理可以充當備份容器及其鏡像的代理。
•Cohenity為K8s命名空間提供數據保護。
•Heptio(現為VMware公司)提供為K8s設計的Velero備份。
•Contino、Datacore和Portworx提供專為K8和容器設計的存儲,并且還支持備份該信息。
 
鑒于K8和Docker的配置方式多種多樣,很難涵蓋所有內容。但是希望提供一些思考的機會,或者可以幫助用戶備份一些應該但尚未備份的東西。
 
版權聲明:本文為企業網D1Net編譯,轉載需注明出處為:企業網D1Net,如果不注明出處,企業網D1Net將保留追究其法律責任的權利。

關鍵字:云計算

原創文章 企業網D1Net

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 卓资县| 贵溪市| 鹿泉市| 普格县| 武胜县| 山西省| 沾化县| 新建县| 厦门市| 隆化县| 平顶山市| 清远市| 彭泽县| 盐津县| 磐石市| 贵州省| 绥江县| 东城区| 抚顺县| 广德县| 宁远县| 会宁县| 常山县| 嘉禾县| 扶沟县| 广水市| 丘北县| 仲巴县| 新源县| 大方县| 临西县| 沐川县| 美姑县| 衢州市| 曲麻莱县| 屯昌县| 堆龙德庆县| 札达县| 泾源县| 陵水| 阿勒泰市|