k8s storage随手记

k8s源码中关于每个资源对象(比如:pod、deployment等等)会有一个map类型的变量用于存储该资源对象相关的storage,什么是storage呢?如下简单描述,仅用于我个人方便理解,方便回忆起大致工作原理,因为本人最近在aggregated api,对apiserver中一些我关注的逻辑不是很明白

1)map[${资源路径,比如,取值可为:pod、pod/status 等等}]xxx_storage(说明:每个资源路径对应一个xxx_storage);

2)apiserver在注册url时,比如GET /api/xxx/xxx/xxx/pod/status时,会判断对应的xxx_storage有实现某个interface,并且这个interface有GET()方法,就会注册GET /api/xxx/xxx/xxx/pod/status这个url,否则就不会注册该url;

3)假如pod/status支持GET /api/xxx/xxx/xxx/pod/status(实际上也支持),通过第2)步可知道,该url的处理逻辑在xxx_storage实现的GET()方法中,GET方法中包含了如何和后端存储进行交互,获取pod/status

图示

 

总结:

storage的作用:

1)资源路径是否支持某个方法,要看对应的storage有没有实现对应接口,并且对应接口有对应的方法;

2)storage具体所实现的接口方法中,包含了如何和后端数据库进行交互,k8s内置的资源的对象都是和etcd进行交互的,在实现自己的aggregate api的时候,想要和其它后端存储进行交互来存取数据,可以在storage实现的接口方法中进行编写

3)实现了webservicer操作后端数据库的逻辑,链路为 url -> storage(实现了interface) -> 后端存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值