type
status
date
slug
summary
category
tags
create_time
Aug 11, 2025 09:33 AM
icon
password
my_create_time

📝 前言

Kubernetes 集群是由一个控制平面和一组用于运行容器化应用的工作机器组成,这些工作机器称工作节点(Node)。
在控制平面中 kube-apiserver 是所有组件沟通的唯一入口,就像集群的大脑中枢,负责接收、校验和处理所有 API 请求。
本文是云原生之旅第三部分的第二篇,主要介绍 kube-apiserver 组件。

🧠 本章知识卡片

notion image

🚀 本章小节

1️⃣ Kubernetes 集群架构

notion image
组件说明:
  • Cloud Controller Manager(可选):与云服务商(如AWS、Azure)交互,管理负载均衡、存储卷等云资源。
  • API Server(kube-apiserver):负责与其他组件(如kubectl、控制器、调度器)通信。
  • Scheduler(kube-scheduler):监听未调度的Pod,根据资源需求、节点负载等因素,将Pod分配到合适的Worker节点。
  • Controller Manager(kube-controller-manager):运行一系列控制器(Controller),确保集群状态符合预期。
  • etcd:分布式键值存储数据库,保存集群的所有配置数据和状态(如Pod、Service信息)。
  • kubelet:节点上的“代理”,负责与API Server通信,确保Pod按预期运行(如启动/停止容器、监控资源)。
  • kube-proxy(可选):维护节点上的网络规则(如iptables/IPVS),实现 Service 的负载均衡和流量转发。有些网络插件自己实现了流量代理就不需要该组件,例如:Cilium、kube-router 等
  • CRI(Container Runtime):容器运行时,例如:Docker、containerd、CRI-O。

2️⃣ kube-apiserver 工作原理

kube-apiserver 是 Kubernetes 的“中央枢纽”,所有集群操作(无论是来自用户、控制器还是节点)都必须经过它。
但它本身并不存储数据,所有状态由etcd管理。
它在集群中的数据流程大致如下图:
notion image
PS:这里省去了认证、鉴权等部分。

3️⃣ kube-apiserver 作用与定位

在 Kubernetes 架构中,kube-apiserver 扮演以下角色:
  • 统一的 API 接口
    • 对外提供 RESTful API,供用户、控制器和节点组件调用。
  • 身份认证与权限控制
    • 处理请求时进行认证(Authentication)和鉴权(Authorization)。
  • 数据验证与持久化
    • 校验资源对象的合法性,并将其存储到 etcd。
  • 集群状态查询与变更
    • 所有状态读取、修改均通过它转发给 etcd 或相关控制器。

4️⃣ kube-apiserver 功能特性

kube-apiserver的主要功能特性包括以下:
  • 声明式 API:基于 YAML/JSON 的资源描述文件,适合 GitOps。
  • 无状态设计:kube-apiserver 本身不存储数据,可通过部署多副本提高可用性。
  • 多版本 API 支持:通过版本号(如 v1、v1beta1)实现平滑升级。
  • Watch 机制:支持长连接实时推送资源变更事件。
  • 聚合层(Aggregation Layer):允许扩展自定义 API(CRD)。

5️⃣ 常见启动参数

以下是 kube-apiserver 常用的部分启动参数:
参数
说明
--bind-address
监听的 IP 地址(建议改为内网 IP,如 172.16.0.1
--advertise-address
向集群其他组件通告的 API Server IP(多网卡时需指定)
--etcd-servers
etcd 集群的访问地址
--authorization-mode
鉴权模式(RBAC、Node、Webhook 等)
--enable-admission-plugins
启用的准入控制插件列表
--service-cluster-ip-range
Service ClusterIP 可分配的网段(需与 CNI 插件匹配)
--client-ca-file
客户端 CA 证书文件路径
--tls-cert-file / --tls-private-key-file
API Server 的 TLS 证书与私钥
💡
提示:生产环境中 kube-apiserver 通常会以静态 Pod 方式由 kubelet 管理,配置文件路径位于 /etc/kubernetes/manifests/kube-apiserver.yaml

✅ 总结

kube-apiserver 是 Kubernetes 集群的唯一 API 入口,承担了请求接收、认证鉴权、数据校验、持久化和事件分发等重要职责。
它的本质是一个 “状态机”
1. 接收请求 → 2. 验证请求 → 3. 持久化到 etcd → 4. 推送变更事件
其核心设计目标是:安全地暴露集群状态,并高效协调组件协作
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
第三部分:控制平面组件 etcd 介绍
下一篇
第三部分:从单机 Docker 到集群 Kubernetes

评论
Loading...