-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
本着开发封闭的原则, 这部分工作其实是甩给 barrel 的, 但是我觉得这片净土比较适合写 proposal...
总得来说, 现有的 docker-cni 的流程是:
shim -> docker-cni -> cni-bin (calico)
-> oci (runc)
-> 表示一次 fork(2) + exec(2) 的进程调用, 下同.
为了支持 fixed-ip 特性, 我发现只要再多加一层就可以了, 变成:
shim -> docker-cni -> cni-wrapper (barrel) -> cni-bin (calico)
-> oci (runc)
多加的这层 cni-wrapper (其实就是 barrel 二进制):
- 在没有
fixed-ip标记的时候啥都不干, 透明的; - 在有
fixed-ip标记的时候:
a. add 流程里, 根据 ID(或者 IP) 去查询 barrel db, 有结果就直接返回, 而不必再调用cni-bin add; 如果调用了cni-bin add, 则把结果记录在 barrel db 里;
b. del 流程里, 不调用cni-bin del, 只是更新 barrel db 里的数据状态;
剩下要处理的就是 remove, 让作为 dockerd-wrapper 的 barrel daemon 去真正调用 cni-bin del 释放 ip, 就可以了.
Metadata
Metadata
Assignees
Labels
No labels