Reference

Design docs, concept definitions, and references for APIs and CLIs.

Edit This Page

Kubernetes API 概述

本页面包含对 Kubernetes API 的概述。

REST API 是 Kubernetes 的基础结构。所有的操作和组件间的通信,包括外部的用户命令,都是由 API Server 处理的 REST API 调用。因此,Kubernetes 中的所有事物都被视为一个 API 对象并且都有一个与之对应的 API 入口。

大部分的操作都可以通过 kubectl 命令行界面或者其它命令行工具完成,例如 kubeadm,它也是使用的 API。尽管如此,API 也是能够通过 REST 调用直接访问的。

如果您正在使用 Kubernetes API 来编写应用程序,您可以考虑选择一个 客户端库

API 版本控制

为了更容易地消除字段或者重新组织资源结构,Kubernetes 支持多个 API 版本,每个版本都在不同的 API 路径下,例如 /api/v1 或者 /apis/extensions/v1beta1

版本号在 API 级别设置而不是在资源或者字段级别,以确保 API 对系统资源和行为提供一个清晰一致的视图,并能够控制实验性 API 的生命周期。JSON 和 Protobuf 的序列化模式遵循同样的更改准则;以下的所有描述均适用于这两种格式。

这里需要注意到 API 版本控制和软件版本控制只是间接相关的。API 和发布版本建议 描述了 API 版本控制和软件版本控制的关系。

不同的 API 版本表明不同的稳定性和支持级别。对于每个级别标准的更详细描述可见 API 更改文档

以下是对标准的总结:

API 组

API 组 使得 Kubernetes API 更容易扩展。API 的组别在 REST 路径或者序列化对象的 apiVersion 字段中指定。

目前,有几个 API 组正在使用:

目前支持两种方法来扩展 自定义资源 API:

  1. CustomResourceDefinition 提供给需要最基本 CRUD 的用户。
  2. 即将支持:需要 Kubernetes API 语义全集的用户可以通过使用 aggregator 来实现自己的 apiserver,这能够与您的客户端无缝对接。

启用 API 组

一些资源和 API 组默认是被启用的。您可以通过设置 apiserver 的 --runtime-config 参数来启用或者禁用它们。--runtime-config 参数值以逗号分隔。例如,如果想要禁用 batch/v1 那么设置 --runtime-config=batch/v1=false,如果想要启用 batch/v2alpha1 那么设置 --runtime-config=batch/v2alpha1。该参数接受以逗号分隔的 key=value 的键值对,键值对描述了 apiserver 运行时的配置。

重要:启用或禁用组(或者资源)需要重启 apiserver 和 controller-manager,以便能够识别 --runtime-config 的变化。

启用组内的资源

DaemonSets、Deployments、HorizontalPodAutoscalers、Ingress、Jobs 和 ReplicaSets 默认都是启用的。 您可以通过设置 apiserver 的 --runtime-config 参数来启用其它的可扩展资源。--runtime-config 接受以逗号分隔的键值对。例如,如果想要禁用 deployments 和 jobs,那么设置 --runtime-config=extensions/v1beta1/deployments=false,extensions/v1beta1/jobs=false

Analytics

Create an Issue Edit this Page