当前位置: 首页 > news >正文

免费网站建站模板/昆明百度关键词优化

免费网站建站模板,昆明百度关键词优化,网站建设 服务内容 费用,做网站域名哪里来volume加载过程 1.用户创建一个包含PVC的Pod。 2.PVController会不断观察ApiServer,负责PV和PVC绑定(包括创建新PV-)。 3.通过Scheduler完成调度功能。 4.PV还没有被挂载(Attach)到选定NODE,ADController就会调用VolumePlugin…

volume加载过程

1.用户创建一个包含PVC的Pod。

2.PVController会不断观察ApiServer,负责PV和PVC绑定(包括创建新PV-)。

3.通过Scheduler完成调度功能。

4.PV还没有被挂载(Attach)到选定NODE,ADController就会调用VolumePlugin,把远端的Volume挂载到目标节点中的设备上(如:/dev/vdb)。

5.当VolumManager它就会执行mount操作,将本地设备挂载到Pod在节点上的一个子目录中。同时它也可能会做一些像格式化、是否挂载到GlobalPath等这样的附加操作。

但–enable-controller-attach-detach=false时会执行AD操作

6.绑定操作,就是将已经挂载到本地的Volume映射到容器中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUpDmDCM-1585918267346)(media/923e0173735a88ebe521753dfe78af6a.png)]

主要相关部件

controller

  1. PV Controller:负责 PV/PVC 的绑定、生命周期管理,并根据需求进行数据卷的
    Provision/Delete 操作;

  2. AD Controller:负责存储设备的 Attach/Detach 操作,将设备挂载到目标节点;

kubelet

Volume Manager:管理卷的 Mount/Unmount
操作、卷设备的格式化以及挂载到一些公用目录上的操作;

和 AD Controller 一样包含有 desireStateofWorld 以及
actualStateofWorld,可自己执行A/D操作

Volume Plugins

有部件分别对接API SERVER,CONTROLLER及kubelet

它主要是对上面所有挂载功能的实现。

PV Controller

PVC / PV绑定检查

1、检查VolumeMode(filesystem/block) 是否一致

2、如PVC 中定义了 LabelSelector 之后,我们就会选择那些有 Label 并且与 PVC 的
LabelSelector 相匹配的 PV 进行绑定;

3、StorageClassName 的检查

4、AccessMode 检查:“ReadWriteOnce”、“RearWriteMany” 这样的标签

5、Size 的检查 ,PVC SIZING<=PV

ClaimWorker

实现的是 PVC 的状态迁移

pv.kubernetes.io/bind-completed-true代表PV bind完成

VolumeWorker

依托ClaimRef 标签来判断PV状态并进行相关处理,如进入queue

available,bound,unbound,released

Attach/Detach Controller

DesiredStateofWorld

  1. 管理集群中预期要达到的数据卷的挂载状态

  2. 每一个 Worker 进行定义,包括 Worker 所包含的 Volume 以及一些试图挂载的信息

ActualStateOfWorld

  1. 集群内部实际存在的数据卷挂载状态

  2. 所有的 Volume 进行一次定义,包括每一个 Volume
    期望挂载到哪个节点上、挂载的状态

核心逻辑

  1. desiredStateOfWorldPopulator

    1. 同步集群的一些数据以及 DSW、ASW 数据的更新

    2. Reconcile

  2. 根据 DSW 和 ASW 对象的状态做状态同步,过程中执行 Attach、Detach 等操作

  3. 依托infomer进行数据同步

Volume Manager

和 AD Controller 一样包含有 desireStateofWorld 以及 actualStateofWorld

volumePluginManager 对象

  1. 负责节点上插件的管理

  2. –enable-controller-attach-detach=true

    1. default true

    2. Enables the Attach/Detach controller to manage attachment/detachment of
      volumes scheduled to this node, and disables kubelet from executing any
      attach/detach operations (default true)

Volume Plugins

实际上就是 PV Controller、AD Controller 以及 Volume Manager 所调用的一个库

VolumePluginsMgr

  1. PV Controller、AD Controller 以及 Volume Manager 在启动的时候会执行一个
    InitPlugins 方法来对 VolumePluginsMgr 做初始化

    1. 将In-Tree 的 Plugins 加入到插件列表中。

    2. 调用 Prober 的 init 方法,该方法会首先调用一个
      InitWatcher,它会时刻观察着flexVolume目录

    3. /usr/libexec/kubernetes/kubelet-plugins/volume/exec/

  2. 运行在kubelet

  3. FlexVolume有变化,生成新的 FsNotify.Create/Delete 事件,probe进行处理

  4. 上层调用 refreshProbedPlugins 时,Prober 就会把这些事件进行一个更新

Flexvolume

Volume Plugins 的一个扩展,主要实现 Attach/Detach/Mount/Unmount 这些接口

以特定格式将执行文件(shell)放在node指定目录下

  1. default plugin directory is
    /usr/libexec/kubernetes/kubelet-plugins/volume/exec/

  2. changed in kubelet via the --volume-plugin-dir flag

  3. controller manager via the --flex-volume-plugin-dir flag

  4. <plugindir>/<vendor~driver>/<driver>

    1. cifs driver, by vendor foo install the driver in subDir foo~cifs/cifs
  5. https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md

Beginning in v1.8 ,可以在线动态更新

要实现的方法-部分是optional

called by Controller

  1. Init

  2. Attach

    1. does not pass “secrets” specified in Flexvolume spec

    2. 如果要secrets,使用mount替代

  3. Detach

  4. Wait for attach

  5. Volume is Attached

    1. Check the volume is attached on the node

called by kubelet

  1. Init

  2. Mount device

    1. Mount device mounts the device to a global path which individual pods
      can then bind mount
  3. Unmount device

  4. Mount

    1. Mount the volume at the mount dir
  5. Unmount

部分方法是controller及kubelet都call

未实现需要返回

   {  "status": "Not supported",  "message": "error message"  }

https://github.com/AliyunContainerService/flexvolume

推荐使用DS+bind host dir 部署

Flexvolume不支持Provision操作

CSI

CSI support was introduced as alpha in Kubernetes v1.9, moved to beta in
Kubernetes v1.10, and is GA in Kubernetes v1.13

相对flexvolume

  1. CSI 容器化部署的方式,支持RBAC

  2. 减少环境依赖,增强安全性

  3. CSI 可以满足不同编排系统的需求,比如 Mesos、Swarm。

  4. 是通过 CRD 的形式实现的

部件

CSI Controller Server

  1. 控制端的功能,主要实现创建、删除、挂载、卸载等功能

  2. 与kube Controller 之间隔了External CSI SideCar

    1. sidecar 与CSI controller server使用socket通讯

    2. controller manager will communicate with the external “CSI volume
      driver” through the Kubernetes API

level-2

  1. AD Controller

  2. Volume Plugins

  3. External Provisioner 和 Controller Server
    组合的时候就会完成数据卷的创建与删除功能;

  4. External Attacher 和 Controller Server 组合起来可以执行数据卷的挂载和操作;

    1. 它通过观察 VolumeAttachment 对象来实现状态的判断
  5. External Resizer 和 Controller Server 组合起来可以执行数据卷的扩容操作;

  6. External Snapshotter 和 Controller Server 组合则可以完成快照的创建和删除

Node Server

  1. 节点上的 mount、Unmount 功能

  2. 使用Unix Domain Socket与kubelet通讯

    1. /var/lib/kubelet/plugins/[SanitizedCSIDriverName]/csi.sock
  3. Create/update a CSINodeInfo object instance for the node with the NodeID and
    topology keys from accessible_topology

  4. Update Node API object with the CSI driver NodeID as the
    csi.volume.kubernetes.io/nodeid annotation

  5. Create/update Node API object with accessible_topology as labels. There are
    no hard restrictions on the label format

level -2

  1. VolumeManager

    1. 调用 CSI Plugin 去做 mount 和 unmount 操作
  2. VolumePlugin

    1. 调用 CSI Plugin 去做 mount 和 unmount 操作
  3. Driver Registra

接口

  1. 通用管控接口

    1. 主要返回 CSI 的一些通用信息,像插件的名字、Driver
      的身份信息、插件所提供的能力
  2. 节点管控

    1. 管控接口的 NodeStageVolume 和 NodeUnstageVolume 就相当于 Flexvolume 中的
      MountDevice 和 UnmountDevice

    2. NodePublishVolume 和 NodeUnpublishVolume 就相当于 SetUp 和 TearDown
      接口;

  3. 中心管控

    1. CreateVolume 和 DeleteVolume

    2. ControllerPublishVolume 和 ControllerUnPublishVolume 则分别是 Attach 和
      Detach 的接口。

主要CRD 对象

  1. VolumeAttachment 描述一个 Volume 卷在一个 Pod 使用中挂载、卸载的相关信息

    1. AD Controller 通过CSI Attacher (k8s in-tree)创建一个 VolumeAttachment

    2. 而 External-attacher 则通过观察该
      VolumeAttachment,根据其状态来进行挂载和卸载操作

  2. CSIDriver,它描述了集群中所部署的 CSI Plugin 列表

    1. label:attachRequired 定义一个 Plugin 是否支持 Attach
      功能,主要是为了对块存储和文件存储做区分。比如文件存储不需要 Attach
      操作,因此我们将该标签定义为 False

    2. label:podInfoOnMount 则是定义 Kubernetes 在调用 Mount 接口时是否带上
      Pod 信息

  3. CSINode,它是集群中的节点信息,由 node-driver-registrar 在启动时创建

    1. 新的 CSI Plugin 注册后,都会在 CSINode 列表里添加一个 CSINode 信息

registration过程

1、在启动的时候有一个约定,比如说在/var/lib/kuberlet/plugins_registry这个目录每新加一个文件

2、Node-Driver-Registrar启动时先会向CSI-Plugin发起一个接口调用GetPluginInfo,这个接口会返回CSI所监听的地址以及CSI-Plugin的一个Drivername。

3、Node-Driver-Registrar会监听GetInfo和NotifyRegistrationStatus两个接口。

4、在/var/lib/kuberlet/plugins_registry这个目录下启动一个Socket,生成一个Socket文件,例如:“diskplugin.csi.alibabacloud.com-reg.sock”

5、Kubelet通过Watcher发现这个Socket后,它会通过该Socket向Node-Driver-Registrar的GetInfo接口进行调用、接口返回CSI-Plugin的监听地址以及它的Drivername

6、Kubelet通过得到的监听地址对CSI-Plugin的NodeGetInfo接口进行调用。

7、调用成功之后,Kubelet会去更新一些状态信息,比如节点的Annotations、Labels、status.allocatable等信息,同时会创建一个CSINode对象。

8、通过对Node-Driver-Registrar的NotifyRegistrationStatus接口的调用告诉它我们已经把CSI-Plugin注册成功了。

部署

  1. master

    1. Controller Server Pod

    2. 可以多份容灾

  2. node

    1. Node Server Pod

    2. Driver Registrar

  3. CSI-Provisioner需要部署不一定是DaemonSet模式

安全

CSI 可以根据不同的阶段定义不同的 Secret 类型,比如挂载阶段的 Secret、Mount
阶段的 Secret、Provision 阶段的 Secret

POD使用主要spec

  1. driver 就是定义是由哪一个插件来去实现挂载;

  2. volumeHandle 主要是指示 PV 的唯一标签;

  3. volumeAttribute 用于附加参数,比如 PV 如果定义的是 OSS,那么就可以在
    volumeAttribute 定义 bucket、访问的地址等信息在里面;

  4. nodeAffinity 则可以定义一些调度信息。与 Flexvolume 类似,还可以通过 selector
    和 Label 定义一些绑定条件

演进

可扩展Volume:ExpandCSIVolumes

快照和恢复:VolumeSnapshotDataSource

基于pvc复制:VolumePVCDataSource

inlineVolume,无需PV/PVC,直接在POD内定义:CSIInlineVolume

开发实现

  1. external-attacher:Watches Kubernetes VolumeAttachment objects and triggers
    ControllerPublish and ControllerUnpublish operations against a CSI endpoint.

  2. external-provisioner:Watches Kubernetes PersistentVolumeClaim objects and
    triggers CreateVolume and DeleteVolume operations against a CSI endpoint.

  3. node-driver-registrar:Registers the CSI driver with kubelet using the
    Kubelet device plugin mechanism.

  4. cluster-driver-registrar (Alpha):Registers a CSI Driver with the Kubernetes
    cluster by creating a CSIDriver object which enables the driver to customize
    how Kubernetes interacts with it.

  5. external-snapshotter (Alpha):Watches Kubernetes VolumeSnapshot CRD objects
    and triggers CreateSnapshot and DeleteSnapshot operations against a CSI
    endpoint.

  6. livenessprobe:May be included in a CSI plugin pod to enable the Kubernetes
    Liveness Probe mechanism.

http://www.jmfq.cn/news/5139937.html

相关文章:

  • 网站数据怎么做接口供小程序调用/市场营销策划公司
  • 绍兴百度seo公司/关键词首页排名优化平台
  • 域名有了主机有了如何做网站/百度大盘指数
  • 娄底网站建设的话术/交友网站有哪些
  • 老外做汉字网站/自己怎么创建网站
  • 武汉 网站建设一条龙/google推广平台怎么做
  • 湛江免费模板建站/佛山做优化的公司
  • 公司如何做网站建设/西安网站推广排名
  • 整站网站优化推荐/seo的基本步骤
  • 铜陵app网站做营销招聘信息/青岛seo代理计费
  • 西安模板网站服务商/长春网站制作推广
  • 常州门户网站建设/html网页制作软件
  • 国务院关于政府网站建设的文件/seo网站推广简历
  • 美橙互联网站打不开/每日财经要闻
  • 一个公司可以做几个网站/seo如何优化排名
  • 如果做网站运营/济南百度竞价开户
  • 类似中企动力的做网站的/运营和营销是一回事吗
  • 公司刚做网站在那里找图片做/大连百度关键词排名
  • 台州网站建设设计/推广普通话的意义简短
  • 网站的小图标怎么做的/sem代运营推广公司
  • 网站通用样式/网站优化方案
  • 汽车之家网页版官网找车/宁波seo网站排名优化公司
  • 网站转移空间备案是不是就没有了/搜索引擎优化的基本手段
  • 怎样对一个网站做性能测试/优化网站怎么做
  • 网站防盗链怎么做/如何在百度做免费推广产品
  • 网站建设 统一质量标准/温州seo网站建设
  • 深圳网页定做/短视频搜索优化
  • 网站产品数据如何恢复/地推网app推广平台
  • 专门做店铺转让的网站/怎么开一个网站平台
  • 一家公司做两个网站/个人怎么在百度上做推广