Kubernetes API Server与调度器深度解析
1. API Server内部机制
1.1 CRD控制循环
自定义资源定义(CRDs)是可以添加到运行中的API服务器的动态API对象。由于创建CRD会创建新的HTTP路径,负责添加这些路径的控制器位于API服务器内部。虽然随着委托API服务器的引入,该控制器大部分已从API服务器中抽象出来,但默认情况下仍在进程内运行,也可在进程外运行。
CRD控制循环的操作如下:
for crd in AllCustomResourceDefinitions:
if !RegisteredPath(crd):
registerPath
for path in AllRegisteredPaths:
if !CustomResourceExists(path):
markPathInvalid(path)
delete custom resource data
delete path
创建自定义资源路径相对简单,但删除自定义资源较为复杂,因为删除自定义资源意味着删除与该类型资源关联的所有数据,以防止旧数据在CRD重新添加时复活。在删除HTTP服务路径之前,先将路径标记为无效,防止创建新资源,然后删除与CRD关联的所有数据,最后删除路径。
1.2 调试API服务器
1.2.1 基本日志
默认情况下,API服务器会记录发送到它的每个请求,包括客户端IP地址、请求路径和服务器返回的代