Kubernetes API介绍(6)

Kubernetes API

Kubernetes 控制面 的核心是 API 服务器 。 API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。

Kubernetes API 使你可以查询和操纵 Kubernetes API 中对象(例如:Pod、Namespace、ConfigMap 和 Event)的状态。

API 末端、资源类型以及示例都在API 参考中描述。

API 变更

任何成功的系统都要随着新的使用案例的出现和现有案例的变化来成长和变化。 为此,Kubernetes 的功能特性设计考虑了让 Kubernetes API 能够持续变更和成长的因素。 Kubernetes 项目的目标是 不要 引发现有客户端的兼容性问题,并在一定的时期内 维持这种兼容性,以便其他项目有机会作出适应性变更。

一般而言,新的 API 资源和新的资源字段可以被频繁地添加进来。 删除资源或者字段则要遵从 API 废弃策略。

关于什么是兼容性的变更,如何变更 API 等详细信息,可参考 API 变更。

OpenAPI 规范

完整的 API 细节是用 OpenAPI 来表述的。

Kubernetes API 服务器通过 /openapi/v2 末端提供 OpenAPI 规范。 你可以按照下表所给的请求头部,指定响应的格式:

头部 可选值 说明 Accept-Encoding gzip 不指定此头部也是可以的 Accept application/com.github.proto-openapi.spec.v2@v1.0+protobuf 主要用于集群内部 application/json 默认值 * 提供application/json

OpenAPI v2 查询请求的合法头部值

Kubernetes 为 API 实现了一种基于 Protobuf 的序列化格式,主要用于集群内部的通信。 相关文档位于设计提案。 每种 Schema 对应的 IDL 位于定义 API 对象的 Go 包中。

API 版本

为了简化删除字段或者重构资源表示等工作,Kubernetes 支持多个 API 版本, 每一个版本都在不同 API 路径下,例如 /api/v1 或 /apis/rbac.authorization.k8s.io/v1alpha1。

版本化是在 API 级别而不是在资源或字段级别进行的,目的是为了确保 API 为系统资源和行为提供清晰、一致的视图,并能够控制对已废止的和/或实验性 API 的访问。

JSON 和 Protobuf 序列化模式遵循 schema 更改的相同准则 - 下面的所有描述都同时适用于这两种格式。

请注意,API 版本控制和软件版本控制只有间接相关性。 Kubernetes 发行版本提案 中描述了 API 版本与软件版本之间的关系。

不同的 API 版本名称意味着不同级别的软件稳定性和支持程度。 每个级别的判定标准在 API 变更文档 中有更详细的描述。 这些标准主要概括如下:

Alpha 级别:

版本名称包含 alpha(例如:v1alpha1)

API 可能是有缺陷的。启用该功能可能会带来问题,默认情况是禁用的

对相关功能的支持可能在没有通知的情况下随时终止

API 可能在将来的软件发布中出现不兼容性的变更,此类变更不会另行通知

由于缺陷风险较高且缺乏长期支持,推荐仅在短暂的集群测试中使用

Beta 级别:

版本名称包含 beta(例如:v2beta3)

代码已经充分测试过。启用该功能被认为是安全的,功能默认已启用。

所支持的功能作为一个整体不会被删除,尽管细节可能会发生变更。

对象的模式和/或语义可能会在后续的 beta 发行版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供如何迁移到新版本的说明。 迁移操作可能需要删除、编辑和重新创建 API 对象。 执行编辑操作时可能需要动些脑筋。 迁移过程中可能需要停用依赖该功能的应用程序。

建议仅用于非业务关键性用途,因为后续版本中可能存在不兼容的更改。 如果你有多个可以独立升级的集群,则可以放宽此限制。

请尝试我们的 beta 版本功能并且给出反馈!一旦它们结束 beta 阶段,进一步变更可能就不太现实了。

稳定级别:

版本名称是 vX,其中 X 是整数。

功能的稳定版本将出现在许多后续版本的发行软件中。

API 组

为了更容易地扩展 Kubernetes API,Kubernetes 实现了 API组。 API 组在 REST 路径和序列化对象的 apiVersion 字段中指定。

集群中存在若干 API 组:

*核心(Core)*组,通常被称为 遗留(Legacy) 组,位于 REST 路径 /api/v1, 使用 apiVersion: v1。

命名(Named) 组 REST 路径 /apis/$GROUP_NAME/$VERSION,使用 apiVersion: $GROUP_NAME/$VERSION(例如 apiVersion: batch/v1)。 Kubernetes API 参考中枚举了可用的 API 组的完整列表。

有两种途径来扩展 Kubernetes API 以支持 自定义资源:

使用 CustomResourceDefinition, 你可以用声明式方式来定义 API 如何提供你所选择的资源 API。

你也可以选择实现自己的扩展 API 服务器 并使用聚合器 为客户提供无缝的服务。

启用或禁用 API 组

某些资源和 API 组默认情况下处于启用状态。可以通过为 kube-apiserver 设置 --runtime-config 命令行选项来启用或禁用它们。 --runtime-config 接受逗号分隔的值。 例如:要禁用 batch/v1,设置 --runtime-config=batch/v1=false; 要启用 batch/v2alpha1,设置--runtime-config=batch/v2alpha1。 该标志接受逗号分隔的一组"key=value"键值对,用以描述 API 服务器的运行时配置。

说明: 启用或禁用组或资源需要重新启动 kube-apiserver 和 kube-controller-manager 来使得 --runtime-config 更改生效。

持久性

Kubernetes 也将其 API 资源的序列化状态保存起来,写入到 etcd 。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容