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

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

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

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

卷插件可提供一种有效的方法来实现数据在容器生命周期之外的持久化保存,但是它们也带来了一些挑战。为了解决这些挑战,Kubernetes引入了FlexVolume插件,但是FlexVolume也有一些问题。最近,Kubernetes推出了一个符合新的容器存储接口(CSI)标准的插件,该标准可以简化数据保存到各种存储平台的过程。

Kubernetes环境

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

Kubernetes的优点包括,能够支持几乎任何可以在容器中运行的应用程序,从而能够实现多种多样且不断变动的工作负载。每个容器都有自己的文件系统,并且与其他容器和主机隔离。因此,容器不能看到彼此的进程。此外,由于容器与底层基础设施解耦,所以它们可以跨云和OS发行版进行移植。

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

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

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

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

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

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

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

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

Kubernetes中的数据存储

Pod提供了部署容器化工作负载的主要构建块。它包含一个或多个容器、共享存储资源和惟一的网络IP地址。Pod还包括了控制容器如何运行的选项。在大多数情况下,Pod只支持应用程序的一个实例,对于其他实例需要添加更多的Pod。

Kubernetes的存储发生在Pod级别。一个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代码中,添加一个新的存储系统意味着供应商必须直接将插件代码检入主代码库,这可能会给Kubernetes平台带来不稳定和安全问题。这个过程还将供应商与Kubernetes的发布周期联系起来,同时迫使他们向访问Kubernetes代码的任何人开放插件源代码。

为了解决这些限制,Kubernetes引入了FlexVolume插件,它提供了一个出树(out-of-tree)插件接口,支持与存储相关的通信。通过这种方式,存储供应商可以开发部署到Kubernetes环境中的驱动程序,在那里,FlexVolume插件可以访问这些驱动程序。

虽然Kubernetes的这种存储方法能够使一些供应商受益,但也带来了一些挑战。例如,插件很难部署,并且需要访问每个集群机器上的根文件系统。

CSI卷插件

最近,Kubernetes推出了一个新的CSI卷插件,可以解决这些问题。它提供了一个符合CSI标准的出树解决方案。CSI将存储系统暴露给容器编排工具(如Kubernetes)管理的容器工作负载。这一新标准使供应商能够开发一个单一驱动程序来支持任何符合CSI的容器编排解决方案。

随着1.13版的发布,CSI插件开始对Kubernetes普遍可用。与FlexVolume插件一样,供应商可以开发部署到Kubernetes环境中符合CSI的驱动程序,同时避免了FlexVolume插件带来的许多挑战。供应商不必接触Kubernetes代码,也不必担心Kubernetes是如何实现的。一旦安装了驱动程序,用户就可以使用CSI卷插件执行附加或挂载卷以保存数据等任务。

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

原文作者:Robert Sheldon

Image placeholder
逢场作戏
未设置
  61人点赞

没有讨论,发表一下自己的看法吧

推荐文章
电信行业如何应对大数据挑战?

根据思科的预测,到2022年,移动数据将达到每月77艾字节。虽然大多数人不会考虑他们每天产生的大量数据,但电信公司对此了如指掌。同时,物联网、智能设备和新内容平台也让电信公司面临着数据冲击。为了将数据

谈PaaS平台建设:如何应对企业架构多元异构资源的挑战

据forbes预测,在2020年到来之前,83%的IT资源都会迁移上云。整个云的生态中,PaaS是最具有抽象属性的云形态,落地较晚也迟迟没有形成统一的标准。近几年,随着SaaS层业务的成熟,以及Iaa

Kubernetes 基础信息:什么是 Kubernetes?

简介 Kubernetes(常简称为K8s,在希腊语意为“舵手”或“驾驶员”)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。 由JoeBeda、BrendanBur

如何解决云中容器数据存储的移动性挑战?

如今,在云计算领域,越来越多的IT组织正在构建混合云和多云环境以支撑其业务运行。从容器的角度来看,我们知道,容器应用程序从一开始就内置了非常可观的可移动性、灵活性和效率。但是对于容器数据来说,它的移动

如何应对数字化转型2.0时代?

新技术在产业中融入越来越深入,企业数字化转型进入了新的阶段。IT已经融入到了业务的各个环节。人与人之间的连接、物与物之间的连接越来越广泛,万物互联的时代已然来临,而这也被很多人称为产业互联网时代。在中

Spark in action on Kubernetes – 存储篇

作者|阿里云智能事业群技术专家莫源前言在上篇文章中,SparkinactiononKubernetes–SparkOperator的原理解析我们分析了SparkOperator内部的机制,今天我们会讨

美团点评Kubernetes集群管理实践

背景作为国内领先的生活服务平台,美团点评很多业务都具有非常显著、规律的“高峰”和“低谷”特征。尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长。这对集群中心的资源弹性和可用性有非常高的要求

Twitter 宣布抛弃 Mesos,全面转向 Kubernetes

作者|阿里云智能高级技术专家张磊划重点Twitter的基础设施从Mesos全面转向Kubernetes阿里云容器平台团队即将开源 Kubernetes高级作业管理集合美国西部时间5月2日下午7点,Tw

【Kubernetes系列】第5篇 Ingress controller – traefik组件介绍

1.概述为了能够让Ingress资源能够工作,在Kubernetes集群中必须至少有一个运行中的ingresscontroller组件。也就是说如果在kubernetes集群中没有一个ingressc

我如何将博客迁移到 Kubernetes(上)

最近Kubernetes的发展,以及在我司的大量应用,自己也迫不及待想要尝尝鲜,虽然我的博客是基于Hexo的纯静态站点,但这并不能阻挡我把它迁移上Kubernetes!毕竟...相比于GitHubPa

我如何将博客迁移到 Kubernetes(下)

前面的部分介绍了如何为我的博客打包Docker镜像,接下来就是重头戏——部署到Kubernetes。 GoogleKubernetesEngine 没错,我现在自用的Kubernetes集群就是

如何在生产环境中部署Kubernetes集群?

如果把kubernetes集群应用于生产环境中,需要做哪些准备?我们先要弄清楚一个词,什么是“生产就绪”?生产就绪,是我们经常听到的一个专业术语,大概意思是已经准备好并已处于即将生产的状态。但是,到底

Chaos Mesh —— 让应用跟混沌在 Kubernetes 上共舞

作者:殷成文2019年12月31日,我们在GitHub上正式开源了ChaosMesh。作为一个云原生的混沌测试平台,ChaosMesh提供在Kubernetes平台上进行混沌测试的能力。本篇文章将围绕

云端的生存之道,第 1 单元:将 Spring Boot 部署到 Kubernetes

初始化Kubernetes集群 第一步是初始化IBMCloud上的Kubernetes集群。IBMCloud可能需要几分钟时间来启动新的Kubernetes集群;因此,通过先执行初始化操作,可以在后台

使用 Kubernetes 来部署你的 Laravel 程序

说明 Laravel是开发PHP应用程序的优秀框架。无论您是需要构建新想法的原型,开发MVP(最小可行产品)还是发布成熟的企业系统,Laravel都可以促进所有开发任务和工作流程。 如何处理部署应用

为什么说谷歌Anthos是kubernetes的翻版?

在本周纽约的一次会议活动中,谷歌谈到了Anthos。那么,Anthos到底是什么?有哪些新功能?本文将逐一解答!什么是Anthos?从官方资料来看,Anthos是谷歌的混合云平台,主要作用是保护客户的

当Kubernetes成为云操作系统的标准应用,AWS也亮出了“杀手锏”!

作为云计算领域的排头兵,AWS一直是“老大哥”形象,他的一举一动都牵动着无数人的神经。AWS不仅在云计算领域投入时间早、运行时间长、客户多,在无服务器、容器以及现代化应用工具开发方面,也是当之无愧的引

为什么说Kubernetes的崛起预示着云原生时代到来?

现在,云原生、Kubernetes已经成为企业IT领域的时髦概念,几乎所有的企业都在关注;如果不提这些概念,好像企业就会在云市场竞争中失去绝对话语权。那么,云原生和Kubernetes是怎样一种关系?

Kubernetes监控在小米的落地

本文介绍了高可用、持久存储、可动态调整的Kubernetes监控方案的实现过程。小米的弹性调度平台(Ocean)以及容器平台主要基于开源容器自动化管理平台kubernetes(简称k8s)来提供服务,

K8s有多热?传统银行转型拥抱Kubernetes案例

Kubernetes已经成为标准的基础设施API,像RedHat、Mesosphere(现在的D2IQ)和Pivotal等供应商都无法避免。如果您希望使企业能够合理构建应用程序,那么Kubernete

Kubernetes 未来一年会有哪些变化?

试图预测历史上发展最快的开源项目的未来几乎是徒劳的,从谷歌到社区其他成员的“传承”已经发展成为编排的实际标准,从来没有一个项目以这种方式获得了整个企业社区的集体支持。从CNCF成员的长名单就可以看出,

Kubernetes1.14 版发布,增强了云原生平台的Windows节点支持

Kubernetes1.14GA版本,是开源云原生平台Kubernetes在2019年的一次重大更新。自3月25日开始,这一版本正式推出,供开发者全面使用。  Kubernetes,由云原生计算基金会

白话 Kubernetes 基础概念

Kubernetes简介微服务框架的流行,使得服务越来越精细化,服务也变的越来越多,对于发布和管理而言产生了巨大的挑战,而Docker的诞生,给与微服务的资源治理和控制提供了很好的基础。容器化可以解决

理解Kubernetes网络:pods篇

这篇文章将试图揭开在kubernetes集群中运行的网络的多层神秘感。Kubernetes是一个功能强大的平台,其中包含许多智能的设计选择,但讨论交互的方式可能会造成混淆:Pod网络,服务网络,集群I

一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

本文面向的读者如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用。你无须提前准备任何的硬件资源或者下载任何的软件包。 如果您已经有一