kubernetes 的API 介绍
在API conventions doc中描述了API的全部协议。
在API Reference文档中描述了API的端点、资源类型和示例。
在Controlling API Access doc中讨论了通过远程访问API的相关问题。
Kubernetes API是系统声明式配置架构的基础。Kubectl命令行工具被用于创建、更新、删除、获取API对象。Kubernetes通过API资源存储自己的序列化状态(这些状态存储在etcd中)。Kubernetes被分成多个组件,各组件通过API相互交互。
API变更
根据经验,任何成功的系统都需要随着新的用例出现或现有用例发生变化的情况下,进行相应的进化与调整。因此,我们希望Kubernetes API也可以保持持续的进化和调整。同时,在较长一段时间内,我们也希望与现有客户端版本保持良好的向下兼容性。一般情况下,增加新的API资源和资源字段不会导致向下兼容性问题发生;但如果是需要删除一个已有的资源或者字段,那么必须通过API废弃流程来进行。可参考API变更文档,了解兼容性变更的要素以及如何变更API的流程
OpenAPI和API Swagger 定义
完整的API详细文档使用 OpenAPI生成,随着Kubernetes 1.10 版本的正式启用,Kubernetes API服务通过/openapi/v2接口提供OpenAPI规范。通过设置 HTTP 标头规定了请求的结构。

在1.14版本之前,区分结构的接口通过(/swagger.json, /swagger-2.0.0.json, /swagger-2.0.0.pb-v1, /swagger-2.0.0.pb-v1.gz) 提供不同格式的 OpenAPI规范。但是这些接口已经被废弃,并且已经在 Kubernetes 1.14 中被删除。
获取OpenAPI 规范的例子:

Kubernetes实现了另一种基于Protobuf的序列化格式,该格式主要用于集群内通信,并在设计方案中进行了说明,每个模式的IDL文件位于定义API对象的Go软件包中。 在 1.14 版本之前, Kubernetes apiserver 也提供API服务用于返回Swagger v1.2,Kubernetes API规范通过/swaggerapi接口,但是这个接口已经被废弃,并且在 Kubernetes 1.14 中已经被移除。
API 版本
为了使删除字段或者重构资源更加容易,Kubernetes支持多个API版本。每一个版本都在不同API路径下,例如/api/v1或者/apis/extensions/v1beta1。我们选择在API级别进行版本化,而不是在资源或字段级别进行版本化,以确保API提供清晰、一致的系统资源和行为视图,并控制对已废止的API和/或实验性API的访问。 JSON和Protobuf序列化模式遵循架构更改的相同准则 - 下面的所有描述都同时适用于这两种格式。请注意,API版本控制和软件版本控制只有间接相关性。API和发行版本建议描述了API版本与软件版本之间的关系。不同的API版本名称意味着不同级别的软件稳定性和支持程度。每个级别的标准在API变更文档中有更详细的描述。 内容主要概括如下:
alpha-内部测试版本:
1)版本名称包含了alpha (例如:v1alpha1)。
2)可能是有缺陷的。启用该功能可能会带来隐含的问题,默认情况是关闭的。
3)支持的功能可能在没有通知的情况下随时删除。
4)API的更改可能会带来兼容性问题,但是在后续的软件发布中不会有任何通知。
5)由于bugs风险的增加和缺乏长期的支持,推荐在短暂的集群测试中使用。
beta-公测版本:
1)版本名称包含了beta(例如:v2beta3)。
2)代码已经测试过。启用该功能被认为是安全的,功能默认已启用。
3)所有已支持的功能不会被删除,细节可能会发生变化。
4)对象的模式和/或语义可能会在后续的beta测试版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供迁移到下一个版本的说明。 这可能需要删除、编辑和重新创建API对象。执行编辑操作时需要谨慎行事,这可能需要停用依赖该功能的应用程序。
5)建议仅用于非业务关键型用途,因为后续版本中可能存在不兼容的更改。 如果有多个可以独立升级的集群,则可以放宽此限制。
stable-稳定版本:
1)版本名称是vX,其中X是整数。
2)功能的稳定版本将出现在许多后续版本的发行软件中。
API组
为了更容易地扩展Kubernetes API,我们实现了API组。 API组在REST路径和序列化对象的apiVersion字段中指定。目前有几个API组正在使用中:
- 核心组(通常被称为遗留组)位于REST路径/api/v1并使用apiVersion:v1。
2)指定的组位于REST路径/apis/$GROUP_NAME/$VERSION,并使用apiVersion:$GROUP_NAME/$VERSION(例如apiVersion:batch/v1)。在Kubernetes API参考中可以看到支持的API组的完整列表。
社区支持使用以下两种方式来提供自定义资源对API进行扩展自定义资源:
1)CustomResourceDefinition适用于具有非常基本的CRUD需求的用户。
2)需要全套Kubernetes API语义的用户可以实现自己的apiserver,并使用聚合器为客户提供无缝的服务。
kubernetes 的API 介绍的更多相关文章
- Kubernetes中StatefulSet介绍
StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考kubeadm安装kubernetes V1.11.1 集群 ...
- 常用ArcGIS for Silverlight 开发API介绍
1.API介绍 2.Map对象 3.Layer对象 4.Symbol对象 5.Task对象
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- python学习笔记(win32print API介绍)
最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...
- Commons-lang API介绍
4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...
- APP自动化框架LazyAndroid使用手册(3)--核心API介绍
作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...
- Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController
用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...
- FastDFS api介绍
1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...
随机推荐
- 用Python来控制Autocad的打印------以Pycomcad为例
from pycomcad import * #以pycomcad作为接口库为例 import win32com acad=Autocad() 打印最重要的设置都在上面的界面中,下面对这些个界面,用P ...
- python中lambda、yield、map、filter、reduce的使用
1. 匿名函数lambda python中允许使用lambda关键字定义一个匿名函数.所谓的匿名函数就是说使用一次或者几次之后就不再需要的函数,属于"一次性"函数. #例1:求两数 ...
- Caffe介绍与测试及相关Hi35xx平台下caffe yolox的使用参考
这一篇我大概讲讲Caffe框架下MNIST的实现与基于Hi35xx平台下caffe yolox的运用等,供大家参考 1.Caffe介绍与测试 caffe全称Caffe Convolutional Ar ...
- PAT-1102(Invert a Binary Tree)+二叉树的镜像+层次遍历+中序遍历+已知树的结构构树
Invert a Binary Tree pat-1102 import java.util.Arrays; import java.util.Queue; import java.util.Scan ...
- 五十:代码审计-PHP无框架项目SQL注入挖掘技巧
代码审计教学计划: 审计项目漏洞Demo->审计思路->完整源码框架->验证并利用漏洞 代码审计教学内容: PHP,JAVA网站应用,引入框架类开发源码,相关审计工具及插件使用 代码 ...
- TestLink测试用例管理工具使用说明
TestLink使用说明 打开网页,登录账号:(这里的账号是已经注册过的,并且拥有admin权限,可以创建用户.当然也可以通过点击登录页面的"新用户注册"按钮进行注册,但是权限是g ...
- Navicat 121版本激活工具
以下是工具的链接: https://github.com/DoubleLabyrinth/navicat-keygen/blob/windows/README_FOR_WINDOWS.zh-CN.md ...
- C# 通过ServiceStack 操作Redis——String类型的使用及示例
1.引用Nuget包 ServiceStack.Redis 我这里就用别人已经封装好的Reids操作类,来演示,并附上一些说明 RedisConfigInfo--redis配置文件信息 /// < ...
- 从本质彻底精通Git——4个模型1个周期1个史观1个工作流
一.什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软 ...
- 最小生成树(Prim算法,Kruskal算法 )
声明:图片及内容基于https://www.bilibili.com/video/BV1yp4y1Q74o?from=articleDetail 最小生成树原理 . 普利姆(Prim)算法 原理 Pr ...