使用 k8s 相关 sdk 做二次开发时,经常用到 apimachinery、api、client-go 这三个库,一直对他们的职责不是很清楚,网上也没有找到合适的文章做分析,笔者通过研究三个库的源码,总结他们之间的依赖关系如下:
apimachinery提供k8s最核心的数据结构。
api 库提供了k8s的内置资源,以及注册到 Scheme 的接口,这些资源比如:Pod、Service、Deployment、Namespace
client-go 库访问k8s 内置资源的sdk,最常用的就是 clientSet。底层通过 http 请求访问k8s 的 api-server,从etcd获取资源信息。
关于 client-go 中最重要的 Informer 机制和原理,请参考本人另一篇文章: k8s源码分析- Informer机制,里面有一张详细的源码调用关系图。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。