本文介绍kubernetes的API设计,主要面向想要深入了解kubernetes API结构的用户。
kubernetes API采用RESTful风格(客户端create,update,delet,get对象通过标准的HTTP verbs),并且这些API优先选择JSON。 同时kubernetes也暴露一些不是标准HTTP verb的接口和使用其他的content类型。服务端接收和发送的JSON数据都有对应schema( JSON schema) ,kind和apiVersion这两个字段确定唯一的schema。
术语定义:
- kind:Object schema的名称
- Resource: 获取Object的特定URL(小写),所以Resource比如
/api/v1/pods
Resource可以获取v1 Pod Object列表,这类Resource也被称为Collections;/api/v1/namespace/<namespace-name>/pods/<pod-name>
resource可以 获取具体的v1 Pod Object,这类resource也被称为Elements。 - API Group: 一组绑定的resource,和版本号一起通过字段
GROUP/VERSION
,例:policy.k8s.io/v1 - Object:
group+version+kinds
注意:
- 一个Resource只能获取对应唯一kind的数据,而一个kind可以从多个Resource获取数据。例如kind
Pod
可以从/api/v1/namespaces/<namespace-name>/pods/<pod-name>
和/api/v1/namespaces/<namespace-name>/pods/<pod-name>/status
。
Types(kinds)
Kinds有三种:
- Object