Kubernetes编程——API服务器是如何处理请求的?

API服务器是如何处理请求的

  Kubernetes API 服务器是 Kuberntes 控制平面中的一部分,负责对集群中的各种资源对象进行管理和操作。它通过提供一组 RESTful API 接口,用户和其他组件可以利用这些接口与集群进行交互。

  当 Kubernetes API 接收到一个 HTTP 请求时,究竟发生了什么?要了解 Kubernetes API 服务器如何通过 kubernetes/kubernetes/tree/master/staging/src/k8s.io/apiserver 处理每个传入的 HTTP 请求,可以研究源代码及请求在各个组件中的流程。以下是流程概述,以帮助浏览代码:

  1. HTTP 服务器: API 服务器是一个 HTTP 服务器,监听传入请求。

  2. HTTP 过滤器:传入请求首先按照在 https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/server/config.go 文件中定义的特定顺序通过一系列 HTTP 过滤器。DefaultBuildHandlerChain 函数指定请求通过的一系列中间件过滤器。一些常见过滤器包括身份验证、授权、模拟和审计日志等。

  3. Mux 和路由:经过过滤器处理后,请求到达 Go HTTP 多路复用器(mux),该复用器根据 HTTP 路径将请求路由到适当的处理程序。这是通过https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/server/mux/pathrecorder.go 和 https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/server/handler.go 文件中的 PathRecorderMux 结构实现的。

  4. 请求处理程序:到达正确的处理程序后,请求被处理并执行。针对每个特定 API 组注册处理程序,您通常可以在https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/apiserver/pkg/registry 目录中找到这些处理程序。有关特定处理程序,请查看每个 API 组的 groupversion.goinstaller.go 文件。

  通过遵循此请求流程并在 https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/apiserver 存储库中探索相关的源文件和目录,可以详细了解 Kubernetes API 服务器如何处理传入的 HTTP 请求。

posted @ 2023-06-26 15:29  左扬  阅读(72)  评论(0编辑  收藏  举报
levels of contents