本文介绍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。

术语定义:

  1. kind:Object schema的名称
  2. Resource: 获取Object的特定URL(小写),所以Resource比如/api/v1/podsResource可以获取v1 Pod Object列表,这类Resource也被称为Collections;/api/v1/namespace/<namespace-name>/pods/<pod-name> resource可以 获取具体的v1 Pod Object,这类resource也被称为Elements。
  3. API Group: 一组绑定的resource,和版本号一起通过字段GROUP/VERSION,例:policy.k8s.io/v1
  4. Object: group+version+kinds

注意:

  1. 一个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有三种:

  1. Object