0
点赞
收藏
分享

微信扫一扫

Kubernetes底层原理 二

Resin_Wu 03-07 21:15 阅读 2

一、API-Server

  • Api-Server除了将客户端(如kubectl)传来的资源信息存入Etcd中,还对这些资源进行校验,这样客户端就不能存入非法的资源信息。
  • Api-Server还会处理乐观锁,这样对于并发更新的情况,对对象做更改就不会被其他客户端覆盖。

当我们创建一个资源,Api-Server都做了哪些工作?

通过Kubectl创建一个资源后,他会通过一个HTTP POST请求将资源定义信息发送给Api-Server。当Api-Server接收到创建资源的请求后:

Kubernetes底层原理 二_K8s

通过认证插件认证客户端:确认是谁发送的请求

首先会轮流调用所有的认证插件,直到有一个能确认**(因此不用遍历完所有的认证插件)**是谁发送了该请求(这是通过检查HTTP请求来实现的)。

根据认证方式,用户信息可以从客户端证书 或者 HTTP的请求头Authorization获取。插件会抽取客户端的用户名、用户ID和归属组,这些信息会交给下一些段授权是时候使用。

通过授权插件授权客户端:决定认证的用户是否可以对请求资源执行请求操作。

通过准入控制插件验证:它主要对传入的资源进行修改完善

验证资源以及持久化存储

  请求通过了所有的准入控制插件以后,Api-Server会验证存储到Etcd的对象,然后返回一个响应给客户端。

API-Server的监听机制

在资源发生变更时通知这些组件,然后这些组件再执行自己需要完成的任务

这些组件通过创建到Api-Server的HTTP连接来监听变更。通过此连接,各个组件会接收到监听对象的一些列变更通过。每当更新对象,服务器把新版本对象发送至所有监听该对象的组件。

kube-apiserver作为整个Kubernetes集群操作etcd的唯一入口,负责Kubernetes各资源的认证&鉴权,校验以及CRUD等操作,提供RESTful APIs,供其它组件调用


Kubernetes API Server的核心功能

 提供Kubernetes各类资源对象(如Pod、RC、Service等)的增、删、改、查及Watch等HTTP  REST接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此之外,他还是,集群管理的API入口,是资源配额控制的入口,提供了完备的集群安全机制。


Kubernetes为所有资源增删改查的唯一入口,各组件均以list-watch的方式向Apiserve发送请求。为减少Apiserver的压力,各组件都采用缓存来缓存数据。功能模块在某些情况下不直接访问Apiserver,而是通过访问缓存来间接访问Apiserver。

  • Kubelet&Apiserver

每个node上的kubelet每隔一个时间周期(通过参数--node-status-update-frequency指定上报频率,默认是 10s 上报一次),就会调用Apiserver的REST接口来报告自身状态。Kubelet通过watch接口,监听pod信息。监听创建、删除、修改事件。


举报

相关推荐

0 条评论