前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s中Apimachinery、Api、Client-go库之间的关系

k8s中Apimachinery、Api、Client-go库之间的关系

原创
作者头像
kinnylee
修改2021-04-19 10:42:48
2.7K0
修改2021-04-19 10:42:48
举报
文章被收录于专栏:kinnylee钻研技术kinnylee钻研技术

概述

使用 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获取资源信息

高清地址

依赖库的关系
依赖库的关系

apimachinery

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

高清地址

apimachinery
apimachinery

api

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

高清地址

api
api

client-go

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

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

高清地址

client-go
client-go

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • apimachinery
      • api
        • client-go
          • 总结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档