14.pdf
- 文件大小: 2.01MB
- 文件类型: pdf
- 上传日期: 2025-10-22
- 下载次数: 0
概要信息:
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
从Docker到Kubernetes 第14周
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
法律声明
【声明】本视频和幻灯片为炼数成金网络课程的教学资料
,所有资料只能在课程内使用,不得在课程以外范围散
播,违者将可能被追究法律和经济责任。
课程详情访问炼数成金培训网站
http://edu.dataguru.cn
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
第十四课 Kubernetes API与源码入门
• Kubernetes API入门
• Kubernetes 源码入门
• Ku8 eye开源项目
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes API入门
Kubernetes API
get
put
patch
GET /watch
HTTP Redirect
HTTP Proxy
API Server
Kubernetes Rest API的接口形式
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes API入门
资源类型 方 法 URL Path 说 明 备 注
NODES
GET /api/v1/nodes 获取Node列表
POST /api/v1/nodes 创建一个Node对象
DELETE /api/v1/nodes/{name} 删除一个Node对象
GET /api/v1/nodes/{name} 获取一个Node对象
PATCH /api/v1/nodes/{name} 部分更新一个Node对象
PUT /api/v1/nodes/{name} 替换一个Node对象
NAMESPACES
GET /api/v1/namespaces 获得Namespace列表
POST /api/v1/namespaces 创建一个Namespace对象
DELETE /api/v1/namespaces/{name} 删除一个Namespace对象
GET /api/v1/namespaces/{name} 获取一个Namespace对象
PATCH /api/v1/namespaces/{name} 部分更新一个Namespace对象
PUT /api/v1/namespaces/{name} 替换一个Namespace对象
PUT
/api/v1/namespaces/{name}/finaliz
e
替换一个Namespace对象的最终方案对
象
在 Fabric8 中 没
有实现
PUT /api/v1/namespaces/{name}/status 替换一个Namespace对象的状态
在 Fabric8 中 没
有实现
Kubernetes Rest API汇总 (一)
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes API入门
SERVICES
GET /api/v1/services 获取Service列表
POST /api/v1/services 创建一个Service对象
GET
/api/v1/namespaces/{nam
espace}/services
获取某个 Namespace 下的
Service列表
资源类型 方 法 URL Path 说 明 备 注
SERVICES
GET /api/v1/services 获取Service列表
POST /api/v1/services 创建一个Service对象
GET /api/v1/namespaces/{namespace}/services 获取某个Namespace下的Service列表
POST
/api/v1/namespaces/{namespace}/servic
es
在某个Namespace下创建列表
DELETE
/api/v1/namespaces/{namespace}/servic
es/{name}
删除某个Namespace的一个Service对象
GET
/api/v1/namespaces/{namespace}/servic
es/{name}
获取某个Namespace下的一个Service对象
PATCH
/api/v1/namespaces/{namespace}/servic
es/{name}
部分更新某个Namespace下的一个Service
对象
PUT
/api/v1/names aces/{namespace}/se ic
es/{name}
替换某个Namespace下的一个Service对象
REPLICATIONCONT
ROLLERS
GET /api/v1/replicationcontrollers 获取RC列表
POST /api/v1/replicationcontrollers 创建一个RC对象
GET
/api/v1/namespaces/{namespace}/replic
ationcontrollers
获取某个Namespace下的RC列表
POST
/api/v1/namespaces/{namespace}/replic
ationcontrollers
在某个Namespace下创建一个RC对象
DELETE
/api/v1/namespaces/{namespace}/replic
ationcontrollers/{name}
删除某个Namespace下的RC对象
GET
/api/v1/namespaces/{namespace}/replic
ationcontrollers/{name}
获取某个Namespace下的RC对象
PATCH
/api/v1/namespaces/{namespace}/replic
ationcontrollers/{name}
部分更新某个Namespace下的RC对象
PUT
/api/v1/namespaces/{namespace}/replic
ationcontrollers/{name}
替换某个Namespace下的RC对象
Kubernetes Rest API汇总 (二)
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes API入门
Swagger-UI查看API说明
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes API入门
Swagger-UI查看API说明
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
源码主要在pkg目录下
cmd目录下是k8s各个进程的启动进程源码
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
kube-apiserver进程的入口类名源码位置如下:
github/com/GoogleCloudPlatform/kubernetes/cmd/kube-apiserver/apiserver.go
入口main()函数的逻辑如下:
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
rand.Seed(time.Now().UTC().UnixNano())
s := app.NewAPIServer()
s.AddFlags(pflag.CommandLine)
util.InitFlags()
util.InitLogs()
defer util.FlushLogs()
verflag.PrintAndExitIfRequested()
if err := s.Run(pflag.CommandLine.Args()); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
}
上述代码核心为下面三行,创建一个APIServer结构体并将
命令行启动参数传入,最后启动监听:
s := app.NewAPIServer()
s.AddFlags(pflag.CommandLine)
s.Run(pflag.CommandLine.Args())
API Server
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
kube-apiserver进程的启动过程进行了详细分析,我们发现Kubernetes API Service的关键代码就隐藏在
pkg\master\master.go里,APIServer这个结构体只不过是一个参数传递通道而已,它的数据最终传给了
pkg/master/master.go里的Master结构体
Rest server相关类,采用了go-restful框架设计
权限以及准入控制
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
Controller
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Kubernetes 源码入门
多数都用了
Controller
Framework
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
为什么会有Ku8 eye开源项目
Kubernetes安装配置
不简单
Kubernetes还只有容
易出错的命令行操作
作为一个分布式平台,
目前没有标准的
“Application”概念
不容易推广使用
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
https://github.com/bestcloud/ku8eye
Github使用说明,史上最完整的操作文档,建议参与开源的同学都能熟练流程
设计文档、用户手册、安装文档等
md文档中所引用的图片资源
源码工程
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
Ku8eye-web采用spring-boot +bootstrap admin模板
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
Ku8eye-web ku8eye-ansible
ansible
图形化方式一键自
动安装kubernetes
集群
Docker镜像
目标物理机
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
Application管理及
可视化定义
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
资源分区及配额管理
从Docker到Kubernetes之技术实战 讲师 Leader-us
DATAGURU专业数据分析社区
Ku8 eye开源项目
丰富的统计图表
DATAGURU专业数据分析网站
FAQ时间
当前页面二维码