【转载】k8s中Apimachinery、Api、Client-go库之间的关系

转载自

概述

使用 k8s 相关 sdk 做二次开发时,经常用到 apimachinery、api、client-go 这三个库,一直对他们的职责不是很清楚,网上也没有找到合适的文章做分析,笔者通过研究三个库的源码,总结他们之间的依赖关系如下:

  • apimachinery 是最基础的库,包括核心的数据结构,比如 Scheme、Group、Version、Kind、Resource,以及排列组合出来的 常用的GVK、GV、GK、GVR等等,再就是编码、解码等操作
  • api 库,这个库依赖 apimachinery,提供了k8s的内置资源,以及注册到 Scheme 的接口,这些资源比如:Pod、Service、Deployment、Namespace
  • client-go 库,这个库依赖前两个库,提供了访问k8s 内置资源的sdk,最常用的就是 clientSet。底层通过 http 请求访问k8s 的 api-server,从etcd获取资源信息

高清地址

img

apimachinery

apimachinery提供k8s最核心的数据结构。

高清地址

img

api

api 库提供了k8s的内置资源,以及注册到 Scheme 的接口,这些资源比如:Pod、Service、Deployment、Namespace

高清地址

img

client-go

client-go 库访问k8s 内置资源的sdk,最常用的就是 clientSet。底层通过 http 请求访问k8s 的 api-server,从etcd获取资源信息。

关于 client-go 中最重要的 Informer 机制和原理,请参考本人另一篇文章: k8s源码分析- Informer机制,里面有一张详细的源码调用关系图。

高清地址

img

总结

  • 阅读源码是最好的学习方式,很多资料直接搜索博客是找不到答案的,通过研究源码可以帮助你建立独立思考的能力
  • apimachinery 再往下依赖的内容更多是一些工具库,就不再这里做分析
  • 三个库的依赖关系依次是:apimachinery -> api -> client-go
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值