资源对象
Kubernetes 是基于 REST (Representational State Transfer,表现层状态转化) 设计的,REST 是网络应用中的一种设计原则,凡是符合 REST 原则的架构,就可以称之为 RESTful 架构。Kubernetes 就是 RESTful 架构。
因为 Kubernetes 遵循 REST 原则,每个 Resource 在 Kubernetes 中的位置用 REST 路径来表示,对于 Resource 的管理,Kubernetes 内部、外部之间交互都采用统一方式的接口, 称之为 REST API。
kubectl 等命令调用使用的就是 REST API。我们也可以直接按照规范访问这些 API,实现企业内部平台。例如 Pod 资源的 REST 路径为 /api/v/pods, 使用 REST 路径,再加上 HTTP POST、GET、DELETE、PUT 等就可以完成指定资源的管理工作。
查看 Kubernetes 支持的资源信息。
$ kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange ...
以上即为 整个 Kubernetes 的 API,和一页又一页的 API 接口函数比较,实在简洁太多。 这就是基于 REST 风格来设计架构所带来的好处。
Kubernetes 常用的资源
类型 | 对象 |
---|---|
资源资源 | Pod、RS、Deployment、StatefulSet、DaemonSet、Job、CronJob、Node、Namespace、Service、Ingress、Label |
存储资源 | Volume、PersistentVolume、Secret、ConfigMap |
策略资源 | SecurityContext、RsourceQuota、LimitRange |
身份资源 | ServiveAccount、Role、ClusterRole |
API object
RESTful 架构下,Kubernetes 中所有内容都被抽象为“资源”,如 Pod、Service、Node 等都是资源,对象则资源的实例,是持久化的实体。在 “REST API” 的调用过程中会用 API Object 来表示 resource。
查看 resource 具体的结构信息
$ kubectl explain pod KIND: Pod VERSION: v1 DESCRIPTION: Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources kind <string> ...
当然 Kubernetes 并不支持维持对象存在这么简单,还管理者对象的方方面面,每个 Kubernetes 对象包含两个嵌套的对象字段,他们负责管理对象的配置,他们分别是 “spec”, “status”.
添加评论