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

  • 时间:
  • 浏览:58
  • 来源:千域资源网 - 专注共享琳战博客活动

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

与容器一样,Kubernetes也支持角度动态、无状态的操作,不断地创建和销毁容器,以适应不同的工作负载。不过,Kubernetes的存储之后疑问比较会棘手。一些操作都前要数据在容器的生命周期之外保留,这似乎与容器的实物不太一致。

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

卷插件可提供有有一种有效的法律最好的办法来实现数据在容器生命周期之外的持久化保存,之后它们也带来了一些挑战。为了处里那先 挑战,Kubernetes引入了FlexVolume插件,之后FlexVolume有的是一些疑问。最近,Kubernetes推出了有有2个 符合新的容器存储接口(CSI)标准的插件,该标准前要繁复数据保存到各种存储平台的过程。

Kubernetes环境

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

Kubernetes的优点包括,有有助于支持几乎任何前要在容器中运行的守护进程,从而有有助于实现多种多样且不断变动的工作负载。每个容器有的是另一方的文件系统,之后与一些容器和主机隔离。之后,容器非要看完彼此的守护进程。此外,之后容器与底层基础设施解耦,一些它们前要跨云和OS发行版进行移植。

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

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

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

  ·卷:在Pod级别定义的逻辑目录,该目录可由该Pod中的容器访问。卷和Pod的使用寿命相同,这意味它前要比Pod中的任何容器寿命都长。

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

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

Kubernetes提供了基于那先 基本对象的控制器,以此来交付额外的功能。Kubernetes还包涵盖有2个 API,它映射到每个对象类型,以提供使用Kubernetes环境的机制。

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

Kubernetes中的数据存储

Pod提供了部署容器化工作负载的主要构建块。它包涵盖有2个 或多个容器、共享存储资源和惟一的网络IP地址。Pod还包括了控制容器怎么可以 运行的选项。在大多数状态下,Pod只支持守护进程的有有2个 实例,对于一些实例前要加进更多的Pod。

Kubernetes的存储指在在Pod级别。有有2个 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二进制文件中,另有有2个 就前要在前要的之后向容器交付存储。

之后插件内置于Kubernetes代码中,加进有有2个 新的存储系统意味供应商前要直接将插件代码检入主代码库,这之后会给Kubernetes平台带来不稳定和安全疑问。你这名过程还将供应商与Kubernetes的发布周期联系起来,同时迫使一群人 向访问Kubernetes代码的任何人开放插件源代码。

为了处里那先 限制,Kubernetes引入了FlexVolume插件,它提供了有有2个 出树(out-of-tree)插件接口,支持与存储相关的通信。通过你这名法律最好的办法,存储供应商前要开发部署到Kubernetes环境中的驱动守护进程,在那里,FlexVolume插件前要访问那先 驱动守护进程。

嘴笨 Kubernetes的你这名存储法律最好的办法有有助于使一些供应商受益,但也带来了一些挑战。你这名,插件很难部署,之后前要访问每个集群机器上的根文件系统。

CSI卷插件

最近,Kubernetes推出了有有2个 新的CSI卷插件,前要处里那先 疑问。它提供了有有2个 符合CSI标准的出树处里方案。CSI将存储系统暴露给容器编排工具(如Kubernetes)管理的容器工作负载。你这名新标准使供应商有有助于开发有有2个 单一驱动守护进程来支持任何符合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/