title: 【AI 总结】Kubernetes API
categories:
- K8s
date: 2026-01-08 14:36:14
tags:
- K8s
- API
index_img:
banner_img:

Kubernetes API | AI 总结

一、核心定位与作用

Kubernetes 控制面的核心是API 服务器(kube-apiserver),其通过暴露 HTTP API 实现多主体间通信,具体功能包括:

  1. 支持查询和操纵 Kubernetes 中的 API 对象(如 Pod、Namespace、ConfigMap、Event 等)状态。
  2. kubectlkubeadm 等命令行工具的底层依赖(工具背后均调用 API),同时也支持通过 REST 调用直接访问。
  3. 为开发者提供客户端库,便于编写基于 Kubernetes API 的应用。

{% fold danger @ kubectl 和 kubeadm 是什么 %}

在 Kubernetes(K8s)生态系统中,kubectl 和 kubeadm 是两个最核心的命令行工具,它们的作用如下:

1. kubectl (Kubernetes Command-Line Tool)

它是 Kubernetes 的日常操作工具,也是开发者和管理员最常用的工具。

2. kubeadm (Kubernetes Admin)

它是 Kubernetes 的集群生命周期管理工具

总结两者的区别:kubeadm 是用来盖房子的(创建和设置集群)。kubectl 是用来在房子里生活的(在集群里部署和管理应用)。

{% endfold %}

二、API 规范发布机制

Kubernetes 提供两种机制发布 API 规范,均用于实现自动互操作(如 kubectl 的命令行补全功能),具体对比如下:

机制 核心功能 关键特点
Discovery API(发现 API) 提供 API 名称、资源、版本、支持操作等简要信息,不包含资源具体模式 - 分为聚合式和非聚合式两种形式;
- 独立于 Kubernetes OpenAPI,仅作资源概要展示
Kubernetes OpenAPI 文档 提供完整的 API 规范(含所有端点、资源收发数据、可扩展组件) - 支持 OpenAPI v2.0 和 v3.0(v3.0 为首选,无字段丢失,描述更全面);
- 规范体积大于 Discovery API

{% fold danger @ 为什么要提供两种机制 %}

在 Kubernetes 中提供 Discovery API(发现 API) 和 OpenAPI 规范 这两种机制,主要是为了在性能效率、使用场景以及信息详情之间取得平衡。

具体原因可以归纳为以下几点:

1. 性能与体积的权衡 (Efficiency vs. Size)

2. 使用场景的不同 (Different Use Cases)

3. 引导过程的需要 (Bootstrapping)

客户端通常需要一个“两步走”的过程:

简单来说,Discovery API 是“导游图”(告诉你哪有景点,很快就能看完),而 OpenAPI 是“建筑图纸”(告诉你每个景点的砖头是怎么砌的,内容极其详细)。对于大多数日常操作,看一眼“导游图”就够了;只有在需要精确施工(如开发插件或生成代码)时,才需要查阅“建筑图纸”。

{% endfold %}

1. Discovery API 详解

(1)聚合的发现(Beta 阶段,需通过 AggregatedDiscoveryEndpoint 特性门控启用)

(2)非聚合的发现

{% fold danger @ 什么是聚合和非聚合 %}

在 Kubernetes API 的语境下,“聚合”(Aggregated)和“非聚合”(Non-aggregated)主要出现在 Discovery API(发现 API) 和 API 扩展机制这两个场景中。

1. Discovery API(发现 API)中的聚合与非聚合

这是 kubectl 等客户端用来了解集群支持哪些资源(如 Pod, Deployment 等)的机制。

2. API Server 的聚合层 (Aggregation Layer)

这是 Kubernetes 的一种架构模式,用于扩展 API。

总结

{% endfold %}

2. OpenAPI 接口定义详解

(1)OpenAPI v2

(2)OpenAPI v3(需通过 OpenAPIV3 特性门控启用,为首选方式)

(3)Protobuf 序列化

三、持久化机制

Kubernetes 将 API 对象的序列化状态存储在 etcd(集群的键值存储系统)中,实现数据持久化。

四、API 组与版本控制

1. 核心设计思路

2. API 变更规则

API 版本级别 兼容性承诺 变更注意事项
GA(稳定版,如 v1 强兼容性承诺,无意外 breaking change 新增资源/字段频繁,删除需严格遵循 API 废弃策略
Beta(测试版) 持久化数据兼容性承诺,功能进入稳定期后可通过 GA 版本访问 需在 Beta 弃用期内迁移到后续 Beta/GA 版本,弃用后仅支持替换版本
Alpha(阿尔法版) 不保证兼容性,升级前需查看发布说明,可能需删除现有 Alpha 对象 -

五、API 扩展方式

  1. 自定义资源(Custom Resource):通过声明式方式定义 API 服务器如何提供自定义资源的 API。
  2. 聚合层(Aggregation Layer):自行实现聚合层,扩展 Kubernetes API 功能。