[Summer Code Camp] 题目申请_issues27

题目:K8s/Deployment: Disk discovery · Issue #27 · opencurve/curve-operator · GitHub

1.磁盘事件监控
curve operator创建daemonset容器,自动检测宿主机上的磁盘增加、删除、修改事件,可以通过udev probe监控事件

2.过滤磁盘规则
容器监控到磁盘事件后,会对磁盘进行过滤,比如过滤系统盘,同时提供参数让用户选择过滤的磁盘,可以根据路径过滤,常见过滤的磁盘有loop,fd0,sr0,/dev/ram*,/dev/dm-,/dev/md,/dev/rbd*,/dev/zd*。如果是收到新增磁盘事件,并且磁盘已经格式化或已挂载则过滤磁盘。

3.获取磁盘信息并更新到curve cluster crd对象
获取磁盘信息,比如uuid,通过k8s api获取crd列表,循环curve cluster列表找到匹配磁盘对应节点的curve cluster crd对象,将uuid等信息更新到crd对象的device字段,这里chunk server挂载需要使用uuid挂载,如:mount UUID= <mount_point> ,因为宿主机重启后盘符有可能改变,curveadm部署没这个问题是因为宿主机通过/etc/fstab固定了uuid,但curve operator部署磁盘挂到chunk server容器会有这个问题。

4.curve cluster crd修改后,curve operator监控变化,然后增加删除chunk server
新增磁盘:curve operator监控到crd修改,通过device字段获取到要新增的磁盘,然后新增prepare-chunkfile容器格式化磁盘,然后创建新的chunk server。
删除磁盘:curve operator监控到crd修改,通过device字段获取到要删除的磁盘,然后删除chunk server对应的deployment。

但curve operator更新这个功能应该由issue 29实现K8s/Deployment: Update cluster · Issue #29 · opencurve/curve-operator · GitHub issue 27应该只负责更新crd对象device字段即可。