聊聊kube-apiserver

作者: 码字算不算码农 | 来源:发表于2019-02-14 11:12 被阅读131次

    简述

    kube-apiserver 是k8s 最重要的核心之一,主要功能如下:

    -提供集群管理的rest api接口,包括认证授权、数据校验一级集群状态变更等;

    -提供与其他模块之间的数据交互和通信

    特:其他模块通过api server 查询或修改数据,只有api server能直接操作etcd数据库

    工作原理

    kube-apiserver提供了k8s的rest api,实现了认证、授权和准入控制等安全功能,同时也负责了集群状态的存储操作。

    示意图如下:

    工作原理

    rest api

    kube-apiserver支持同时提供https和http api,其中http api是非安全接口,不做任何认证授权机制,不建议生产环境启用,但两个接口提供的rest api格式相同。

    -https api 默认监听在6443端口

    -http api 默认监听在127.0.0.1的8080端口

    实际使用过程中,通常通过kubectl来访问apiserver,也可通过k8s各语言的client库来访问,同时,使用kubectl时,打开调试日志还可以看每个api调用的格式。

    访问控制说明

    k8s api 每个请求都会经过多阶段的访问控制才会被接受,包括认证、授权及准入控制等。

    认证

    开启TLS情况下,所有请求都需要首先认证。k8s支持多种认证机制,并且支持同时开启多个认证插件(仅一个认证通过即可),如认证成功,则用户的username会传入授权模块做进一步的授权验证,而认证失败的请求则返回http 401 。

    授权

    认证之后的请求就到了授权模块,和认证类似,k8s也支持多种授权机制,并支持同时开启多个授权插件(仅一个验证通过即可)。如授权成功,则用户的请求会发送到准入控制模块做进一步的请求验证,失败的请求则返回http403

    准入控制

    用来对请求做进一步的验证或添加默认参数,不同于认证和授权只关心请求的用户和操作,准入控制还会处理请求的内容,并且仅对创建、更新、删除或连接(如代理)等有效,而对读操作无效。准入控制也支持同时开启多个插件,但他们是依次调用的,只有全部插件都通过的请求才可以允许进入系统。

    相关文章

      网友评论

        本文标题:聊聊kube-apiserver

        本文链接:https://www.haomeiwen.com/subject/cywseqtx.html