如何备份Kubernetes和泊坞窗

您不必备份大约每个集装箱的一切,但备份配置,运行和灾难的情况下对其进行管理是非常重要的。

肖像历史

是的,你的容器基础设施需要某种类型的备用。在灾难发生后Kubernetes和码头工人不会神奇打造自己。正如讨论一个单独的文章,你不需要备份每个容器的运行状态,但你需要备份用于运行和管理您的容器配置。

下面是你需要备份的内容快速提醒。

配置和所希望的状态信息

  • Dockerfiles用于构建您的图像和这些文件的所有版本
  • 图片从Dockerfile创建和使用运行每个容器
  • KubernetesETCD及其他- K8S数据库群集状态信息
  • 部署 - YAML文件描述每个部署

由容器创建或更改持久数据

  • 持久卷
  • 数据库

Dockerfiles

Docker容器是从图像运行的,而图像是从Dockerfiles构建的。一个合适的Docker配置应该首先使用诸如GitHub之类的存储库作为所有dockerfile的版本控制系统。不要使用从特别的Dockerfiles构建的特别的映像来创建特别的容器。所有的Dockerfile都应该存储在一个存储库中,这样你就可以在当前版本有问题的时候提取该Dockerfile的历史版本。

你也应该有某种资源库,在那里你存储YAML文件,每个文件K8S部署相关。这些是可以从一个版本控制系统中受益的文本文件。

这些库则需要进行备份。其中最流行的存储库是GitHub上,它提供了一个许多方式备份你的资料库。有多种使用提供的API来下载你的资料库的当前备份脚本。还有,你可以用它来备份GitHub上或任何存储库使用的是第三方的商业工具。

如果你没有按照上述建议,并运行基于图像的容器,你再也不用为Dockerfiles,您可以使用泊坞窗图像历史命令或诸如工具dfimage从当前图像创建Dockerfile。把那些Dockerfiles在仓库,并开始支持它!但是,说实话,不要在这种情况下得到的。存放和备份Dockerfiles和YAML文件用来创建您的环境。

泊坞窗图片

用于运行容器当前图像也应该存储在库中。(当然,如果你在运行Kubernetes泊坞的图像,你已经这样做。)您可以使用一个私人回购协议,如码头工人登记,或公共回购像Dockerhub。云提供商还可以提供您的私人回购储存图像。那么回购的内容应进行备份。一个简单的谷歌搜索,如“Dockerhub备份”可以产生的期权数量惊人。

如果您没有用于运行容器当前图像,你可以使用一个创建搬运工承诺命令。然后,可以从图像使用创建Dockerfile泊坞窗图像历史或工具dfimage

Kubernetes ETCD

该Kubernetes ETCD数据库是非常重要,应该使用备份etcdctl快照保存分贝命令。这将创建文件snapshot.db在当前目录。然后,该文件应该备份到外部存储。

如果您正在使用商业备份软件,可以轻松触发etcdctl快照保存以其中snapshot.db将要创建的目录备份前命令。这是一个方式,您可以将此备份整合到你的商业备份环境。看一眼这个恢复文档

持久卷

有很多种方法是容器可以获准进入可用于存储或创建数据持久性存储。传统的码头工人卷驻留在泊坞窗配置的子目录。绑定安装是简单的,其安装在容器内的泊坞主机上的任何目录(使用绑定安装命令)。出于各种原因,传统卷由泊坞社区首选,但对于传统的备份卷和绑定安装的目的基本上是相同的。还可以安装从对象的存储系统的网络文件系统的(NFS)目录或一个对象作为容器内部的体积。

你用它来备份你的持久卷的方法将是在此基础上,你使用的容器上面的选项。然而,所有的人都会有同样的问题:如果数据发生了变化,你将需要处理,为了得到一个一致的备份。

一种方法是关闭使用该特定卷的任何容器。这是一个有点老派,但它是由容器的世界所带来的挑战之一,因为把一个备份代理容器的典型方法是不是一个真正的选择。一旦关机,音量可以备份。If it is a traditional Docker volume, you can back it up by mounting it to another container that won’t change its data while it’s backing up, and then creating a tar image of the volume in a bind-mounted volume that you then back up using whatever your backup system uses.

然而,这真的很难在Kubernetes做。这是一个原因状态信息最好存储在数据库中,没有一个文件系统。设计你的K8S基础设施时,请考虑这个问题。

此外,如果您使用的是绑定安装目录,一个NFS文件系统或对象存储系统为您的持久存储系统,你可以使用任何对备份存储系统的最佳途径。这可能是一个快照,然后复制,或者干脆运行系统上的商业备份软件。这些方法有可能提供一个更加一致的备份比相同体积的典型的文件级备份。

数据库

当容器使用数据库来存储其数据的一个备份挑战。这些数据库需要的方式,将保证其完整性进行备份。根据不同的数据库上,上面可能会工作中提到的方法:关闭容器访问数据库,然后备份其中的文件存储的目录。然而,用这种方法所需的停机时间可能并不合适。

另一种方法是直接连接到数据库引擎本身,并要求它运行一个备份到文件,然后你可以备份。如果数据库是一个容器中运行,你需要先使用绑定安装附加的卷,它可以备份,所以它的备份可以在容器外存在。然后运行命令该数据库用途(如mysqldump的)创建一个备份。然后确保备份它创建使用备份系统中的文件。

如果你不知道什么是什么容器使用的是什么存储或者什么数据库?一种解决方案是使用泊坞窗PS命令列出正在运行的容器中,然后用搬运工检查命令来显示每个容器的配置。有一个名为坐骑,这会告诉你的卷装什么地方部分。任何绑定安装也将被指定在YAML文件,您提交Kubernetes。

商业备份解决方案

有各种各样的商业备份解决方案,可以保护一些或所有上面提到的数据。下面是一个非常简单的总结:

  • CommVault的虚拟服务器代理可以充当代理备份容器及其图像。
  • 为K8S命名空间Cohesity数据提供保护
  • Heptio(现在是VMware公司)提供Velero,备份设计K8S
  • 蒂诺,数据核心,并提供Portworx存储专为K8S和容器,并且还支持备份信息

鉴于多种方式K8S和码头工人可以进行配置,这是很难覆盖所有的这单篇文章。但希望,这给了你一些思考,也可能帮助你认识到你的东西还没有被备份,但应该是。保证它的安全有!

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。

版权所有©2020Raybet2

IT薪资调查:结果是