自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何備份Kubernetes和Docker

云計(jì)算
用戶不必備份容器中的所有內(nèi)容,但在發(fā)生災(zāi)難時(shí)備份運(yùn)行和管理容器的配置是很重要的。用戶的容器基礎(chǔ)設(shè)施需要某種類(lèi)型的備份。Kubernetes和Docker在災(zāi)難之后不會(huì)自己構(gòu)建。用戶無(wú)需備份每個(gè)容器的運(yùn)行狀態(tài),但是需要備份用于運(yùn)行和管理容器的配置。

 用戶不必備份容器中的所有內(nèi)容,但在發(fā)生災(zāi)難時(shí)備份運(yùn)行和管理容器的配置是很重要的。

[[319191]]

用戶的容器基礎(chǔ)設(shè)施需要某種類(lèi)型的備份。Kubernetes和Docker在災(zāi)難之后不會(huì)自己構(gòu)建。用戶無(wú)需備份每個(gè)容器的運(yùn)行狀態(tài),但是需要備份用于運(yùn)行和管理容器的配置。

以下是用戶需要備份的內(nèi)容。

配置和所需狀態(tài)信息

  • Dockerfile用于構(gòu)建鐿像以及這些文件的所有版本
  • 從Dockerfile創(chuàng)建并用于運(yùn)行每個(gè)容器的鏡像
  • Kubernetes etcd和其他有關(guān)集群狀態(tài)的K8s數(shù)據(jù)庫(kù)
  • Deployments用于描述每個(gè)部署的YAML文件

容器創(chuàng)建或更改的持久數(shù)據(jù)

  • 持久卷
  • 數(shù)據(jù)庫(kù)

Dockerfiles

Docker容器從鏡像運(yùn)行,其鏡像從Dockerfiles構(gòu)建。正確的Docker配置將首先使用某種存儲(chǔ)庫(kù)(例如GitHub)作為所有Dockerfile的版本控制系統(tǒng)。不要使用從臨時(shí)Dockerfile構(gòu)建的臨時(shí)鏡像創(chuàng)建臨時(shí)容器。所有Dockerfile都應(yīng)存儲(chǔ)在存儲(chǔ)庫(kù)中,如果當(dāng)前版本存在問(wèn)題,該存儲(chǔ)庫(kù)將允許用戶提取這個(gè)Dockerfile的歷史版本。

用戶還應(yīng)該具有存儲(chǔ)與每個(gè)K8s部署關(guān)聯(lián)的YAML文件的某種存儲(chǔ)庫(kù),這些是可以從版本控制系統(tǒng)中受益的文本文件。

然后需要備份這些存儲(chǔ)庫(kù)。GitHub是比較受歡迎的存儲(chǔ)庫(kù)之一,它提供了許多備份存儲(chǔ)庫(kù)的方法。有多種腳本使用提供的API來(lái)下載存儲(chǔ)庫(kù)的當(dāng)前備份。用戶還可以使用第三方商業(yè)工具來(lái)備份GitHub或用戶正在使用的任何存儲(chǔ)庫(kù)。

如果沒(méi)有遵循上述建議,而是根據(jù)不再具有Dockerfile的鏡像運(yùn)行容器,則可以使用Docker 鏡像歷史命令或dfimage之類(lèi)的工具從當(dāng)前鏡像創(chuàng)建Dockerfile。將這些Dockerfile放入存儲(chǔ)庫(kù)中,然后開(kāi)始備份。但是不要陷入這種情況,應(yīng)該始終存儲(chǔ)和備份用于創(chuàng)建環(huán)境的Dockerfile和YAML文件。

Docker鏡像

用于運(yùn)行容器的當(dāng)前鏡像也應(yīng)存儲(chǔ)在存儲(chǔ)庫(kù)中(當(dāng)然,如果用戶正在Kubernetes中運(yùn)行Docker鏡像,那么已經(jīng)在這樣做了)。用戶可以使用私有存儲(chǔ)庫(kù)(例如Docker注冊(cè)表)或公共存儲(chǔ)庫(kù)(例如Dockerhub)。云計(jì)算提供商還可以為用戶提供私人存儲(chǔ)庫(kù)來(lái)存儲(chǔ)鏡像。然后應(yīng)備份該回購(gòu)的內(nèi)容。諸如“Dockerhub備份”之類(lèi)的簡(jiǎn)單搜索就可以產(chǎn)生令人驚訝的眾多選擇。

如果用戶沒(méi)有用于運(yùn)行容器的當(dāng)前鏡像,則可以使用docker commit命令創(chuàng)建一個(gè)。然后,使用Docker鏡像歷史記錄或工具dfimage從該鏡像創(chuàng)建Dockerfile。

Kubernetes etcd

Kubernetes etcd數(shù)據(jù)庫(kù)非常重要,應(yīng)使用etcdctl snapshot save db命令進(jìn)行備份。這將在當(dāng)前目錄中創(chuàng)建文件snapshot.db。然后應(yīng)將該文件備份到外部存儲(chǔ)。

如果使用的是商業(yè)備份軟件,則可以在創(chuàng)建snapshot.db的目錄備份之前輕松觸發(fā)etcdctl snapshot save命令。這是將備份集成到商業(yè)備份環(huán)境中的一種方法。

持久卷

容器可以通過(guò)多種方式訪問(wèn)​​持久性存儲(chǔ),而持久性存儲(chǔ)可用于存儲(chǔ)或創(chuàng)建數(shù)據(jù)。傳統(tǒng)的Docker卷位于Docker配置的子目錄中。綁定掛載只是Docker主機(jī)上安裝在容器內(nèi)(使用bind mount命令)的任何目錄。出于多種原因,Docker社區(qū)首先選擇傳統(tǒng)卷,但出于備份目的,傳統(tǒng)卷和綁定安裝實(shí)質(zhì)上是相同的。用戶還可以將網(wǎng)絡(luò)文件系統(tǒng)(NFS)目錄或?qū)ο髲膶?duì)象存儲(chǔ)系統(tǒng)作為卷裝入容器中。

用于備份持久卷的方法將基于用于容器的上述選項(xiàng)。但是,它們都會(huì)有相同的問(wèn)題:如果數(shù)據(jù)正在更改,則需要處理該問(wèn)題才能獲得一致的備份。

一種方法是關(guān)閉使用該特定卷的任何容器。這種做法雖然有些過(guò)時(shí),但這是容器世界所面臨的挑戰(zhàn)之一,因?yàn)樵谌萜髦蟹胖脗浞荽淼牡湫头椒ú⒉皇且环N很好的選擇。一旦關(guān)閉,便可以備份該卷。如果它是傳統(tǒng)的Docker卷,則可以通過(guò)將其掛載到另一個(gè)在備份時(shí)不會(huì)更改其數(shù)據(jù)的容器中進(jìn)行備份,然后在綁定安裝的卷中創(chuàng)建該卷的tar鏡像,然后使用備份系統(tǒng)使用的任何方法進(jìn)行備份。

但是,這在Kubernetes中確實(shí)很難做到。這是有狀態(tài)信息最好存儲(chǔ)在數(shù)據(jù)庫(kù)而不是文件系統(tǒng)中的原因之一。而在設(shè)計(jì)K8s基礎(chǔ)設(shè)施時(shí),需要考慮此問(wèn)題。

另外,如果用戶使用綁定安裝目錄、NFS安裝文件系統(tǒng)或?qū)ο蟠鎯?chǔ)系統(tǒng)作為持久性存儲(chǔ)系統(tǒng),則可以使用優(yōu)秀的方法來(lái)備份該存儲(chǔ)系統(tǒng)。這可能是快照,然后是復(fù)制,或者只是在該系統(tǒng)上運(yùn)行商業(yè)備份軟件。與相同卷的典型文件級(jí)備份相比,這些方法可能提供更加一致的備份。

數(shù)據(jù)庫(kù)

下一個(gè)備份挑戰(zhàn)是容器使用數(shù)據(jù)庫(kù)存儲(chǔ)其數(shù)據(jù)。這些數(shù)據(jù)庫(kù)需要以保證其完整性的方式進(jìn)行備份。根據(jù)數(shù)據(jù)庫(kù)的不同,上述方法可能會(huì)起作用:關(guān)閉訪問(wèn)數(shù)據(jù)庫(kù)的容器,然后備份存儲(chǔ)其文件的目錄。但是,這種方法所需的停機(jī)時(shí)間可能不合適。

另一種方法是直接連接到數(shù)據(jù)庫(kù)引擎本身,并要求它運(yùn)行到文件的備份,然后可以對(duì)其進(jìn)行備份。如果數(shù)據(jù)庫(kù)在容器內(nèi)運(yùn)行,則首先需要使用綁定安裝來(lái)附加一個(gè)可以備份的卷,因此其備份可以存在于容器外部。然后運(yùn)行數(shù)據(jù)庫(kù)使用的命令(例如mysqldump)創(chuàng)建備份。然后確保使用備份系統(tǒng)創(chuàng)建的文件。

如果用戶不知道哪些容器正在使用什么樣的存儲(chǔ)或什么樣的數(shù)據(jù)庫(kù)怎么辦?一種解決方案可能是使用docker ps命令列出正在運(yùn)行的容器,然后使用docker inspect命令顯示每個(gè)容器的配置。有一個(gè)名為“掛載”的部分,它將告訴用戶將哪些卷掛載在何處。任何綁定安裝也將在用戶提交給Kubernetes的YAML文件中指定。

商業(yè)備份解決方案

有各種各樣的商業(yè)備份解決方案可以保護(hù)上述部分或全部數(shù)據(jù)。以下是一個(gè)非常簡(jiǎn)短的摘要:

  • Commvault的虛擬服務(wù)器代理可以充當(dāng)備份容器及其鏡像的代理。
  • Cohenity為K8s命名空間提供數(shù)據(jù)保護(hù)。
  • Heptio(現(xiàn)為VMware公司)提供為K8s設(shè)計(jì)的Velero備份。
  • Contino、Datacore和Portworx提供專為K8和容器設(shè)計(jì)的存儲(chǔ),并且還支持備份該信息。

鑒于K8和Docker的配置方式多種多樣,很難涵蓋所有內(nèi)容。但是希望提供一些思考的機(jī)會(huì),或者可以幫助用戶備份一些應(yīng)該但尚未備份的東西。

 

責(zé)任編輯:華軒 來(lái)源: 企業(yè)網(wǎng)D1Net
相關(guān)推薦

2021-12-03 11:06:01

VeleroKubernetesLinux

2015-08-07 10:10:18

LinuxDocker容器

2022-08-05 08:48:33

KubernetesEtcd數(shù)據(jù)

2020-08-21 07:18:21

KubernetesDocker

2020-01-09 15:28:30

KubernetesDocker:容器

2019-09-12 10:43:44

DockerKubernetes軟件

2022-03-25 08:00:00

Kubernetes備份集群

2019-11-25 11:12:18

企業(yè)應(yīng)用軟件容器操作系統(tǒng)

2019-05-21 10:45:44

Docker架構(gòu)容器

2019-05-14 14:27:36

KubernetesDocker存儲(chǔ)

2021-09-27 05:42:44

VeleroKubernetes 公有云

2022-05-30 11:21:25

數(shù)據(jù)庫(kù)MySQL工具

2016-07-29 15:49:58

DockerKubernetesMongoDB

2017-11-28 09:32:57

KubernetesDockerMesos Compa

2023-10-28 00:02:55

2023-10-10 07:33:30

Kubernetes容器

2020-12-15 08:00:00

KubernetesDocker容器

2009-06-29 19:36:07

虛擬機(jī)備份虛擬環(huán)境

2023-03-20 07:48:03

2021-03-01 19:24:13

Kubernetes備份容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)