ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

第 04 篇:kube-apiserver:集群唯一网关的认证、授权与准入三道关卡(底座认知 04)

第 04 篇:kube-apiserver:集群唯一网关的认证、授权与准入三道关卡(底座认知 04)

kube-apiserver

集群的唯一对外网关

底座认知 · 第 04 篇

所有请求的唯一入口,承载认证、授权与准入

目 录

一、apiserver 的定位

二、一次请求的必经三关

2.1 认证(Authentication)

2.2 授权(Authorization)

2.3 准入控制(Admission Control)

三、与 etcd 的关系

四、高可用部署

五、常用排障命令

一、apiserver 的定位

kube-apiserver 是整个集群的「大脑中枢」与「唯一网关」。集群内所有组件的通信、所有用户/管理工具的请求,都必须经过它,不存在旁路。

  1. 用户:kubectl、Dashboard、各种 operator 通过它管理集群
  2. 组件:scheduler、controller-manager、kubelet 都通过它读写状态
  3. etcd:只有 apiserver 能直接读写 etcd,其他组件均绕行 apiserver

正因如此,apiserver 是认证、授权、准入控制的集中执行点,也是安全加固的核心。

二、一次请求的必经三关

任何请求进入 apiserver,都要依次通过三道关卡,全部通过才会真正作用于集群状态。

2.1 认证(Authentication)

确认「你是谁」。apiserver 支持多种认证方式,典型包括:

  1. 客户端证书(X.509,kubeadm 默认用此方式)
  2. Bearer Token(含 ServiceAccount 的 JWT)
  3. 用户名/密码、OpenID Connect 等

2.2 授权(Authorization)

确认「你能做什么」。默认采用 RBAC(基于角色的访问控制),核心概念是 Role / ClusterRole 与 RoleBinding / ClusterRoleBinding。

2.3 准入控制(Admission Control)

在对象「落库前」做最后一道校验或修改,是安全与策略的守门员。

  1. 校验类:LimitRanger、ResourceQuota 等检查配额
  2. 修改类:MutatingAdmissionWebhook、默认标签注入等
  3. 安全类:Pod Security Admission(PSA)强制 Pod 安全级别

三、与 etcd 的关系

apiserver 是 etcd 唯一的前端。它把请求转换为对 etcd 的读写,并负责:

  1. 将声明式对象持久化到 etcd
  2. watch etcd 的变更,主动通知其他组件(如 scheduler、kubelet)
  3. 提供数据的缓存与聚合,减轻 etcd 压力

理解这一点对排障极重要:状态变更「以 etcd 为准」,但访问永远走 apiserver。

四、高可用部署

生产环境通常部署多个 apiserver 副本,前置负载均衡(如 HAProxy + VIP(虚拟 IP))对外提供稳定入口。在 Rocky9 高可用集群中:

  1. controlPlaneEndpoint 指向 VIP,使 kubeadm 初始化的集群对外暴露统一入口
  2. 多个 apiserver 共享同一 etcd 集群,保证状态一致
  3. apiserver 是水平可扩展的:多副本只是负载分担,无主从之分

五、常用排障命令

  1. kubectl get --raw=/healthz:apiserver 健康检查
  2. kubectl auth can-i get pods:检查当前用户权限
  3. journalctl -u kube-apiserver -f:查看 apiserver 日志
  4. kubectl logs -n kube-system <apiserver-pod>:容器方式查看日志

下一篇《etcd》,看看 apiserver 背后的这个「状态权威」如何存储与保证一致。

返回列表