当前位置: 首页 > 网络应用技术

Kubernetes存储原理详细说明

时间:2023-03-05 22:08:43 网络应用技术

  这是K8S CSI系统体系结构

  CSI是一个简短的(容器存储接口)。

  CSI的目的是定义行业标准“容器存储接口”,以便存储供应商可以开发符合CSI标准并使其在多个容器布置系统中工作的插头。

  CSI组件通常使用容器化部署,从而降低了环境依赖性。

  资本级别的资源,持久的存储卷是由集群管理员或外部配置者创建的。

  PV的生命周期独立于PV POD,PV保留了存储设备的详细信息。

  回收策略

  包括状态:

  长时间的存储卷语句,名称空间级别是由用户或statefulset Controller创建的(基于PolumEakLaimTemplate)。

  PVC类似于POD,POD消耗节点资源,PVC消耗PV资源。POD可以请求特定的资源(CPU和内存),PVC可以请求特定的存储量和访问模式(访问模式)的大小(访问模式)

  包括状态:

  StorageClass是一个集群级别的资源,是由集群管理员创建的。为创建PV的模板信息定义用于PV的动态创建。

  记录了PV的相关安装信息,例如安装了哪个节点节点,该节点已安装。

  创建一个,并根据其状态属性观察存储的安装和卸载操作。

  CSINODE记录的信息(例如Nodeid,Drivername,拓扑信息等)。

  当Node驱动程序注册表注册CSI插件到Kubelet时,它将创建(或更新)CSIDE对象以记录CSI插件的相关信息

  扩展各种存储类型的管理功能,以实现第三方存储的各种操作功能与K8S存储系统的组合。

  调用第三方存储的接口或命令,以提供数据量创建/删除,附加/分离,安装/umount的特定操作实现,可以将其视为第三 - 零件存储的代理。上一个分析组件中的数据量,附件/分离,安装/UMOUNT操作,所有呼叫量插件要完成。

  根据源代码的位置,将其分为树间和开头

  在K8S源代码中实现,使用K8释放和管理,并缓慢更新且灵活性差。

  该代码独立于K8,由存储制造商实施。CSI和Flexvolume有两个实现。

  CSI插件

  外部插件

  外部插件包括外部置换器,外部辅助器,外部换设备,外部 - 扣子照片等以及外部插件辅助CSI插件组件,以完成相关的操作。External插件负责手表PVC,体积计算,其他对象和其他对象以及其他对象以及其他对象以及其他对象。然后致电量插件以完成与存储相关的操作。

  PV控制器负责PV和PVC的绑定和生命周期管理(例如创建/删除基础存储,创建/删除PV对象以及PV和PVC对象状态的更改)。

  创建/删除基础存储,创建/删除PV对象,然后通过PV Controller完成音量插件(IN-TREE)。

  AD ControllerAd cotrolllller附件/分离控制器的全名,它主要负责创建和删除体积量对象,以及用于存储设备的附件/分离操作的调用卷插件(将数据滚动安装到特定节点/从特定的节点节点/crand),然后更新node.status.volumesattach。

  不同的音量插件的附件/分离操作逻辑不同。例如,使用通过外树卷插件的存储插件,然后将附加/分离操作修改为体积对象的状态,并且它不会真正将数据滚动挂载到节点上。//从节点上删除了安装座。实际节点存储和安装/抬起安装操作由Kubelet的音量管理器调用。

  音量管理器主要是附件/分离的管理(与广告控制器相同,该组件由Kubelet控制参数以执行此操作),安装/UMOUNT和其他操作。

  5.1.1及时

  [1]用户创建PVC

  [2] PV控制器手表创建PVC,找到合适的PV

  [3,4]当您找不到正确的PV时,您将调用音量插件以创建音量并创建PV对象。在那之后

  [5]用户创建了安装PVC的PODS

  [6] Kube-Scheduler手表到创建POD,为其找到合适的节点调度

  [7,8] POD调度完成后,POD语句的AD控制器/音量管理器的音量不执行附件操作。

  [9]音量插件执行附件操作,将音量安装到POD所在的节点节点,并成为设备的设备

  [10,11]附件操作完成后,音量管理器手表不执行音量的安装操作,该操作将调用用于安装操作的音量插件。

  [12]音量插件执行安装操作,并在节点节点上通过步骤[9]获得的/dev/vdb设备安装到指定目录

  5.1.2退出时间

  [1]用户创建PVC

  [2]将PV控制器手表创建到PVC,找到合适的PV来绑定它。当找不到合适的PV时,将更新PVC对象,添加它,然后让外部proviseer组件开始创建创建存储和PV对象的操作

  [3]外部提供程序组件手表到PVC创建以确定宣传的值:volume.beta.kubernetes.io/storage-proviseer,也就是说,要确定它是否负责创建操作,然后致电CSI-Plugin Controllervercreatestore并创建PV对象

  [4] PV控制器手表到PVC,找到正确的PV(在上一步中创建)并使用它绑定

  [5]用户创建了安装PVC的PODS

  [6] Kube-Scheduler手表到创建POD,为其找到合适的节点调度

  [7,8] POD计划完成后,AD控制器/音量管理器手表不会从POD语句声明的卷中执行附件操作。它将致电CSi Attacher进行附件操作。实际上,它只是为了创建体积对象。

  [9]外部辅助组件手表以新创建的体积对象的新创建,致电CSi-Plugin进行操作

  [10] CSi-Plugin控制器对吊舱所在的节点节点进行安装卷的附件操作,并变成一个设备,例如/dev/vdb

  [11,12]附件操作完成后,音量管理器手表不会执行POD声明的卷的安装操作,并且会拨打CSI-Mounter进行安装操作。

  [13] CSI-mounter调用CSI-Plugin Nodeserver进行安装操作,并在节点节点上通过步骤(10)获得的/DEV/VDB设备安装到指定的目录

  当将pod计划安排到主机时,创建空dir类型卷时,同一pod中的容器可以读取和写入emptydir中的同一文件。一旦此pod离开此主机,emptydir中的数据将是永久的删除。

  因此,当前的空dir量主要用于临时空间,例如:

  使用步骤如下:

  首先,您需要在POD中声明名称

  那么您可以在容器中挂在此卷中

  测试:

  创建上述配置文件后,您可以在主机上的目录中找到名称的新生成目录。

  如果登录到由POD创建的容器,则还可以看到命名的目录。该目录与主机上的目录相同。

  主机卷是主机上主机上的目录或文件,因此容器可以使用主机的高速文件系统进行存储。

  缺点是,在K8S中,POD在每个节点节点上动态安排。存储在上一个节点上。

  apiversion:应用程序/v1

  类型:部署

  元数据:

  名称:test-dp

  规格:

  复制品:1

  选择器:

  MatchLabels:

  应用:Test-DP

  模板:

  元数据:

  标签:

  应用:Test-DP

  规格:

  容器:

  - 名称:nginx

  图片:nginx:1.19.5

  数量:

  -mountpath:/var/www/html

  名称:nginxdata

  卷:

  - 名称:nginxdata

  主持人:

  路径: /数据