• 虎虎❤️
    2018-10-31
    思考题:

    1. Register过程: csi 插件应该作为 daemonSet 部署到每个节点(node)。然后插件 container 挂载 hostpath 文件夹,把插件可执行文件放在其中,并启动rpc服务(identity, controller, node)。External component Driver Registrar 利用 kubelet plugin watcher 特性watch指定的文件夹路径来自动检测到这个存储插件。然后通过调用identity rpc服务,获得driver的信息,并完成注册。


    2. Provision过程:部署External Provisioner。 Provisioner 将会 watch apiServer 中 PVC 资源的创建,并且PVC 所指定的 storageClass 的 provisioner是我们上面启动的插件。那么,External Provisioner 将会调用 插件的 controller.createVolume() 服务。其主要工作应该是通过阿里云的api 创建网络磁盘,并根据磁盘的信息创建相应的pv。

    3. Attach过程:部署External Attacher。Attacher 将会监听 apiServer 中 VolumeAttachment 对象的变化。一旦出现新的VolumeAttachment,Attacher 会调用插件的 controller.ControllerPublish() 服务。其主要工作是调用阿里云的api,把相应的磁盘 attach 到声明使用此 PVC/PV 的 pod 所调度到的 node 上。挂载的目录:/var/lib/kubelet/pods/<Pod ID>/volumes/aliyun~netdisk/<name>


    4. Mount过程:mount 不可能在远程的container里完成,所以这个工作需要kubelet来做。kubelet 的 VolumeManagerReconciler 控制循环,检测到需要执行 Mount 操作的时候,通过调用 pkg/volume/csi 包,调用 CSI Node 服务,完成 volume 的 Mount 阶段。具体工作是调用 CRI 启动带有 volume 参数的container,把上阶段准备好的磁盘 mount 到 container指定的目录。
    展开
    
     32
  • leo
    2018-11-20
    厉害了 新的知识!
    
     2
  • silver
    2018-11-01
    'test 正是我们前面定义的 PV 的名字',这个是否是typo?PV的名字是pv-flex-nfs?
    
     2
  • 左氧佛沙星人
    2019-10-16
    思考题,应该参考local path storage provisioner 或者 local volume storage provisioner,需要新增的是,讲创建好的云盘,attach到主机上,这样对吗?
    
    
  • kakj
    2019-07-10
    java程序员从入门到放弃到再入门到再放弃中
     1
    
  • 大星星
    2019-03-15
    有个问题,请教下,三个external组建为什么要独立出来。这个不需要吧。只要csi 三个服务起来了,自动注册插件。他们三个服务也负责watch api,每当有请求过来,provision attatch.mount动作时候分别找对应服务请求就行。不知道都一个个分出来有必要么?
     1
    
  • 陆培尔
    2018-11-02
    老师的课讲得太好了,什么时候开始讲容器网络方面的内容?感觉这一块一直有很多地方搞不明白,service,ingress,lb,跨节点组网等等

    作者回复: 很快

    
    
  • Alery
    2018-10-31
    你好,自己实现的nfs flexvolume是否可以在pvc中指定呢?怎么指定呢?
    
    
  • 虎虎❤️
    2018-10-31
    问题:

    1. 既然csi的PV是自己定义的类型,那么volume controller应该不会做这个红娘吧?所以问题是,他们是怎么完成绑定的?绑定后的状态会改变为 bound 吗?
    2. 按照我的理解 driver 插件应该安装到每个node上,那么适合使用 daemonSet 去部署插件和 Driver Registerar sidecar。而 External Provisioner/Attacher 则只需要一份部署就可以。为什么文中建议把三个 External components 都部署为sidecar?
    展开
    
    
我们在线,来聊聊吧