如何应对Kubernetes中的存储管理挑战?

  • 时间:
  • 浏览:9

Kubernetes是Google开源的一1个多容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。对于什么工作负载比较复杂、不断变化的企业来说,使用Kubernetes是非常有利的。

与容器一样,Kubernetes也支持厚度动态、无请况的操作,不断地创建和销毁容器,以适应不同的工作负载。不过,Kubernetes的存储肯能什么的问题比较会棘手。或多或少操作都需要数据在容器的生命周期之外保留,这似乎与容器的特性不太一致。

经不多年的努力,Kubernetes开发人员肯能将卷插件(Volume Plugins)集成到了Kubernetes平台中,以除理持久存储的需求。卷插件是扩展Kubernetes接口的模块,支持与物理存储卷的连接。

卷插件可提供你这个有效的最好的辦法 来实现数据在容器生命周期之外的持久化保存,或多或少它们也带来了或多或少挑战。为了除理什么挑战,Kubernetes引入了FlexVolume插件,或多或少FlexVolume都有或多或少什么的问题。最近,Kubernetes推出了一1个多符合新的容器存储接口(CSI)标准的插件,该标准还也能比较复杂数据保存到各种存储平台的过程。

Kubernetes环境

Kubernetes是一1个多可移植和扩展的平台,并肩支持自动化和声明性的配置最好的辦法 。Kubernetes环境含晒 一组独立的控制流程,用于通过跨Kubernetes集群的计算、网络和存储资源的编排来管理用户工作负载。

Kubernetes的优点包括,也能支持几乎任何还也能在容器中运行的应用守护进程池池,从而也能实现多种多样且不断变动的工作负载。每个容器都有或多或少人的文件系统,或多或少与或多或少容器和主机隔离。或多或少,容器只能看一遍彼此的守护进程池池。此外,肯能容器与底层基础设施解耦,什么都有有它们还也能跨云和OS发行版进行移植。

Kubernetes集群由主系统和节点系统组成。主服务器维护集群,并作为与内部内部结构资源通信的主要节点。节点是运行容器工作负载的物理服务器或虚拟机。

Kubernetes集群支持以下对象类型来实现容器化工作负载:

  ·Pod:用于管理和运行一组相关容器的逻辑特性。Pod中的所有容器共享存储和网络资源,它是Kubernetes集群中最小的可部署计算单元。

  ·卷:在Pod级别定义的逻辑目录,该目录可由该Pod中的容器访问。卷和Pod的使用寿命相同,这因为着它还也能比Pod中的任何容器寿命都长。

  ·Service:一1个多REST对象,作为访问Pod逻辑集的抽象层,以便将前端客户端与后端操作解耦。

  ·命名空间:一组基于相同物理集群的虚拟集群。命名空间面向支持多个团队或项目的或多或少用户的环境。

Kubernetes提供了基于什么基本对象的控制器,以此来交付额外的功能。Kubernetes还含晒 一1个多API,它映射到每个对象类型,以提供使用Kubernetes环境的机制。

此外,每个Kubernetes集群都含晒 一1个多用于管理环境和自动化操作的控制平面。控制平面是在主系统和节点系统上运行的守护进程池池的集合。主守护进程池池运行多个守护进程池池,用于运行控制器、管理Pod以及公开Kubernetes API。每个节点运行守护进程池池以维护网络规则、执行连接转发且确保容器正在运行。

Kubernetes中的数据存储

Pod提供了部署容器化工作负载的主要构建块。它含晒 一1个多或多个容器、共享存储资源和惟一的网络IP地址。Pod还包括了控制容器怎样才能运行的选项。在大多数请况下,Pod只支持应用守护进程池池的一1个多实例,对于或多或少实例需要加在更多的Pod。

Kubernetes的存储位于在Pod级别。一1个多Pod还也能配置一组存储卷,使Pod中的容器也能共享存储并实现数据的持久化保存,在容器重启后也还也能存活。Kubernetes提供了非常多的卷类型,如Azure Disk、CephFS、iSCSI、vSphere卷、Portworx卷和Amazon Elastic Block Store等等。

Kubernetes提供了你这个特殊类型的卷,用于在容器和Pod的生命周期之外持久存储数据。它被称为PersistentVolume (PV),它抽象了有关存储怎样才能提供给Pod容器或由Pod容器使用的完整性信息。

Kubernetes将PV实现为卷插件,其生命周期独立于Pod。卷插件扩展了Kubernetes接口,以方便与内部内部结构存储的连接。该插件是入树(in-tree)模块构建,并直接编译到核心Kubernetes二进制文件中,原本 就还也能在需要的以前向容器交付存储。

肯能插件内置于Kubernetes代码中,加在一1个多新的存储系统因为着供应商需要直接将插件代码检入主代码库,这肯能会给Kubernetes平台带来不稳定和安全什么的问题。你这个过程还将供应商与Kubernetes的发布周期联系起来,并肩迫使朋友向访问Kubernetes代码的任何人开放插件源代码。

为了除理什么限制,Kubernetes引入了FlexVolume插件,它提供了一1个多出树(out-of-tree)插件接口,支持与存储相关的通信。通过你这个最好的辦法 ,存储供应商还也能开发部署到Kubernetes环境中的驱动守护进程池池,在那里,FlexVolume插件还也能访问什么驱动守护进程池池。

随便说说Kubernetes的你这个存储最好的辦法 也能使或多或少供应商受益,但也带来了或多或少挑战。之类,插件真难部署,或多或少需要访问每个集群机器上的根文件系统。

CSI卷插件

最近,Kubernetes推出了一1个多新的CSI卷插件,还也能除理什么什么的问题。它提供了一1个多符合CSI标准的出树除理方案。CSI将存储系统暴露给容器编排工具(如Kubernetes)管理的容器工作负载。你这个新标准使供应商也能开发一1个多单一驱动守护进程池池来支持任何符合CSI的容器编排除理方案。

随着1.13版的发布,CSI插件开始对Kubernetes普遍可用。与FlexVolume插件一样,供应商还也能开发部署到Kubernetes环境中符合CSI的驱动守护进程池池,并肩除理了FlexVolume插件带来的或多或少挑战。供应商暂且接触Kubernetes代码,可是我必担心Kubernetes是怎样才能实现的。一旦安装了驱动守护进程池池,用户就还也能使用CSI卷插件执行附加或挂载卷以保存数据等任务。

随便说说Kubernetes在最初设计之时,仅支持无请况操作,但它在编排容器工作负载方面极具优势。过去,将数据保存到容器或Pod的生命周期之外往往伴随着挑战。随着CSI插件的引入,有望使企业更容易地为其工作负载应用容器技术,很糙是随着更多存储供应商提供符合CSI的驱动守护进程池池。对于或多或少IT团队来说,CSI会是朋友向Kubernetes过渡需要要的一大动力,也能轻松为Kubernetes实现存储。

原文作者:Robert Sheldon

本文由

谢涛

发布在

ITPUB

,转载此文请保持文章完整性性,并请附上文章来源(ITPUB)及本页链接。

原文链接:http://www.itpub.net/2019/06/26/2285/