K8S基础架构
基础架构
https://www.cnblogs.com/wwchihiro/p/9261607.html
K8S源码包导览
/api:OpenAPI/Swagger 规范,JSON 模式文件,协议定义文件
/build:打包和持续集成,存放构建相关文件
/CHANGELOG:存放每个版本的变动
/cluster:存放一些脚步和yaml信息,该目录将会被弃用,已经进入维护模式,不会接受新的providers
/cmd:本项目的主干,存放可执行文件的入口代码,不会在这个目录放太多的代码,每个可执行文件都会对应一个 main 函数
/docs:设计和用户文档
/hack:存放与构建、测试等相关的脚本
/LICENSES:证书信息
/logo:logo
/pkg:核心库代码,可被项目内或外部直接使用
/plugin:存放k8s插件目录,例如准入、认证、授权
/staging:此目录是已拆分到各自库。这里的内容将定期发布给各自k8s.io库。存放部门核心库的暂存目录
/test:测试工具以及测试数据
/third_party:第三方工具、代码或脚本
/translations:存放国际化语言包相关文件
/vendor:存放项目依赖的库代码,第三方库代码
GO代码基础
https://github.com/golang-standards/project-layout
/cmd main函数文件,每个文件在编译生成一个可执行文件
/internal 应用程序的复用封装的代码
/pkg 一些通用的可以被其他项目所使用的代码
/vendor 项目依赖的其他第三方库,使用 glide 工具来管理依赖
/api 协议文件,Swagger/thrift/protobuf 等
/web web服务所需要的静态文件
/configs 配置文件
/init 服务启停脚本
/scripts 其他一些脚本,编译、安装、测试、分析等等
/build 持续集成目录 云 (AMI), 容器 (Docker), 操作系统 (deb, rpm, pkg)等的包配置和脚本放到 /build/package/ 目录
/deployments 部署相关的配置文件和模板
/test 其他测试目录,功能测试,性能测试等
/docs 设计文档
/tools 常用的工具和脚本,可以引用 /internal 或者 /pkg 里面的库
/examples 应用程序或者公共库使用的一些例子
/assets 其他一些依赖的静态资源
相关三方包
cobar命令方式 https://www.cnblogs.com/borey/p/5715641.html
go-restful,k8s中作为apiserver的rest框架来实现,实现路由和handler的对接
https://studygolang.com/articles/7896
https://pkg.go.dev/github.com/emicklei/go-restful
client-go kubernetes对外提供的就是Rest API
https://www.cnblogs.com/charlieroro/p/10330390.html
https://yuerblog.cc/2018/12/13/k8s-client-go-usage/
***https://github.com/owenliang/k8s-client-go
apimachinery apimachinery 解决的是 kubernetes 的 API Object 的 Scheme, typing, encoding, decoding, and conversion问题
https://cloud.tencent.com/developer/article/1519826
k8s.io/api 定义k8s api
例如:在kubernetes中需要有一个Pod的类型,每次执行kubectl create -f xxx.yaml创建Pod对象的时候需要实例化Pod,并把xxx.yaml中的参数赋值到Pod对象中
https://www.cnblogs.com/yuxiaoba/p/9803284.html