首页 理论教育 云计算原理与技术|K8s容器存储及技术简介

云计算原理与技术|K8s容器存储及技术简介

时间:2023-10-29 理论教育 版权反馈
【摘要】:K8s支持的存储及技术,具体如下。K8s以in-tree plugin的形式来对接不同的存储系统,满足用户可以根据自己业务的需要使用这些插件给容器提供存储服务。DNS服务器监视着创建新Service的K8s API,从而为每一个Service创建一组DNS记录。

云计算原理与技术|K8s容器存储及技术简介

1.概述

因为容器存活时间很短的特点,容器的状态(存储的数据)必须独立于容器的生命周期,也因为此,容器的存储变得非常重要。K8s支持的存储及技术,具体如下。

Ceph:分布式存储系统,同时支持块存储、文件存储和对象存储,发展时间很久,稳定性也得到了验证。之前在OpenStack社区被广泛使用,目前在容器社区也是很好的选项。

GlusterFS:RedHat旗下的产品,部署简单,扩展性强。

容器存储界面(Container Storage Interface,CSI):定义云应用调度平台和各种存储服务接口的项目,核心的目标就是存储Provider只需要编写一个Driver,就能集成到任何的容器平台上。

Rook:基于Ceph作为后台存储技术,深度集成到K8s容器平台的容器项目,因为选择了Ceph和Kubernetes这两个都很热门的技术,并且提供自动部署、管理、扩展、升级、迁移、灾备和监控等功能。

商业存储:DELL EMC、NetApp等。

K8s以in-tree plugin的形式来对接不同的存储系统,满足用户可以根据自己业务的需要使用这些插件给容器提供存储服务。同时兼容用户使用FlexVolume和CSI定制化插件。

一般来说,K8s中Pod通过三种方式来访问存储资源:直接访问、静态Provision、动态Provision(使用Storage Class动态创建PV)。

2.服务发现(www.xing528.com)

容器和微服务的结合创造了另外的热潮,也让服务发现成了热门名词。可以在轻松扩展微服务的同时,也要有工具来实现服务之间相互发现的需求。DNS服务器监视着创建新Service的K8s API,从而为每一个Service创建一组DNS记录。如果整个集群的DNS一直被启用,那么所有的Pod应能自动对Service进行名称解析。在技术实现上是通过K8s API监视Service资源的变化,并根据Service的信息生成DNS记录写入Etcd中。DNS为集群中的Pod提供DNS查询服务,而DNS记录则从Etcd中读取。

Kube-Dns:Kube-Dns是K8s中的一个内置插件,目前作为一个独立的开源项目维护。K8s DNSPod中包括3个容器:Kube-Dns、Sidecar、Dnsmasq。

CoreDNS:CoreDNS是一套灵活且可扩展的权威DNS服务器,作为CNCF中的托管的一个项目,自K8s 1.11版本起被正式作为集群DNS附加选项,且在用户使用Kubeadm(用来初始化集群的指令)时默认生效。提供更好的可靠性、灵活性和安全性,可以选择使用CoreDNS替换K8s插件Kube-Dns。

3.状态数据存储

目前主要有三种工具,大部分的容器管理系统也都可以支持这三种工具。

Etcd:CoreOS开源的分布式key-value存储,通过HTTP/HTTPS提供服务。Etcd只是一个Key-Value存储,默认不支持服务发现,需要三方工具来集成。K8s默认使用Etcd作为存储。

ZooKeeper:Hadoop的一个子项目,本来是作为Hadoop集群管理的数据存储,目前也被应用到容器领域,开发语言是Java。

Consul:HashiCorp开发的分布式服务发现和配置管理工具。

这些工具的主要作用就是保证这个集群的动态信息能统一保存,并保证一致性,这样每个节点和容器就能正确地获取到集群当前的信息。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈