容器正在破坏世界各地的备份,但是您可以采取一些步骤来确保容器基础设施的最关键部分受到保护,以防止最糟糕的事情发生在您的基础设施上2020欧洲杯预赛。
乍一看,容器似乎不需要备份,但仔细检查,它确实是有意义的,以防止灾难性事件和其他不太灾难性的事件。
容器的基础
容器是另一种类型的虚拟化,Docker是最流行的容器平台。容器是一种特殊的环境,您可以在其中运行特定的应用程序。一种看待它们的方式是轻量级的虚拟机。每个虚拟机在哪里虚拟机监控程序server包含操作系统的完整副本,容器共享底层操作系统,并且每个容器只包含将在该容器中运行的应用程序所需的库。因此,单个节点(运行操作系统和操作系统的物理或虚拟机)上有许多容器容器运行时环境)占用的资源比相同数量的vm少得多。
VM和容器之间的另一个区别是,公司倾向于在一个VM中同时运行多个应用程序,而容器通常被设计为每个应用程序组件都服务于一个应用程序组件,该组件通常执行单个任务,如日志记录或监视。如果多个应用程序组件需要交互,则每个组件通常在自己的容器中运行,并通过网络进行通信。这允许对每个应用程序进行单独扩展,并在应用程序之间提供一些故障和安全隔离。
虚拟机被设计成在特定的管理程序中运行,在特定的硬件上运行,而容器的可移植性要好得多。容器被设计成几乎可以在任何平台上运行Linux,如果安装了适当的软件,甚至可以在Windows上运行。最后,容器设计得比vm临时得多。一个典型的VM可能运行数月甚至数年,而根据a最近Sysdig调查。
在生产环境中运行大量容器需要编制,这就是Kubernetes(通常拼写为K8s)的用用之处。它将容器分组到豆荚中,豆荚是实现单一目的的另一个容器。pod中的容器可以很容易地相互通信,并且可以通过挂载共享卷来共享存储。
容器如何破坏备份
历史上,备份是通过在需要备份的服务器中放置代理来完成的。虚拟化打破了这个模型,因此创建了一个不同的模型,其中代理在hypervisor级别运行,并将vm作为映像备份。容器不提供这两个选项。
虽然理论上可以在容器映像中放置代理,但由于许多原因,这被认为是非常糟糕的形式,所以没有人这样做。此外,目前还没有在容器运行时层(类似于管理程序层)运行代理的方法。最后,对于许多使用容器的人来说,备份容器的想法似乎相当陌生。想想看;大多数集装箱的寿命不到一周。
为什么需要备份容器
在某种意义上,一个典型的容器不需要备份它的运行状态;这样的手术并不是独一无二的。此外,大多数容器是无状态的——容器中不存储任何数据。它只是已经通过其他操作保存的给定容器映像的另一个正在运行的实例。
许多容器倡导者很快指出,容器基础设施的每个部分都内置了高可用性。Kubernetes总是在集群中运行。容器总是在需要时被生成和杀死。不幸的是,许多人将这种高可用性与从灾难中恢复的能力相混淆。
要改变对话,请询问某人,如果某个东西拿走了他们的整个集群、容器节点和相关的持久存储,他们将如何复制整个Kubernetes和Docker环境。是的,Kubernetes、Docker和相关应用程序需要备份是有原因的。
第一,灾后恢复。如果最坏的情况发生了,你怎么办?其次,复制环境,比如从测试/开发环境迁移到生产环境,或者在升级之前从生产环境迁移到暂存环境。第三,更容易迁移一个Kubernetes集群。
在灾难中你需要什么?
有几件事你需要复制一个完整的环境,以防灾难:
容器的图片-容器映像是一个静态文件,它包含容器运行所需的所有可执行代码。容器图像不变;它们是用来运行给定容器的。如果需要对给定容器的库和代码进行更改,将为该容器创建一个新映像。容器映像需要以某种方式加以保护,通常需要使用存储库来保护这些映像。反过来,这个仓库也应该受到保护,以抵御灾难。
附加存储、数据库-容器通常会创建比容器寿命更长的数据。为此,可以通过NFS(对象存储或类似机制)挂载一个卷,并将数据写入该卷。它还可以连接到数据库。
持久的卷- Kubernetes豆荚越来越多地使用持久存储。如果存储在其中的数据对业务有价值,也应该备份这些数据。
部署部署是Kubernetes的概念,一组吊舱完成一个特定的功能。部署被存储为需要备份的YAML文件。
Kubernetes etcd- Kubernetes中央数据库是etcd,需要备份。它相对较小,并且K8s提供了将其内容转储到文件中的工具,然后您可以对其进行备份。
普罗米修斯-普罗米修斯经常被用来监视K8s和Docker。它的配置也应该备份。
Kubernetes资源-当开发人员在K8s中创建资源时,这些资源需要用正确的组和版本进行备份。
什么不需要支援?
并不是所有的东西都需要备份。例如:
运行无状态的容器-正在运行的容器是临时的。它是从需要备份的映像派生出来的,但是容器的运行实例不需要备份。它创建的任何数据都可能需要备份,但是如果容器本身需要备份,那么就有问题了。如果一个容器实际上包含数据,而不是将其存储在外部卷中,那么它将需要进行备份——但这种情况应该非常少见。
豆荚-由于豆荚只是一组运行的容器,它们也不需要备份。
上面提到的每个实体都提供了一个本机工具,可用于将该实体备份到本地或远程存储。也有商业公用事业开始进入市场,以各种方式运行。这篇文章详细介绍这些方法,包括如何使用它们来恢复Kubernetes和Docker环境的各个部分。