k8s的api

时间:2021-09-19 23:19:14

一、namespaced resources

所谓的namespaced resources,就是这个resource是从属于某个namespace的, 比如pod, deployment, service都属于namespaced resource.
http://localhost:8080/api/v1/namespaces/default/pods/test-pod
 
可以看出, 该restful api的组织形式是:
api api版本  namespaces 所属的namespace 资源种类 所请求的资源名称
api v1 namespaces default pods test-pod
 
二、non-namespaced resources
http://localhost:8080/apis/rbac.authorization.k8s.io/v1/clusterroles/test-clusterrole
这里可以观察到它clusterrole与pod不同, apis表示这是一个非核心api. rbac.authorization.k8s.io指代的是api-group, 另外它没有namespaces字段, 其他与namespaced resources类似.不再赘述.
 
三、non-resource url
这类资源和pod, clusterrole都不同. 例如
http://localhost:8080/healthz/etcd
这就是用来确认etcd服务是不是健康的.它不属于任何namespace,也不属于任何api版本.
 
总结, k8s的REST API的设计结构为:
[api/apis]/api-group/api-version/namespaces/namespace-name/resource-kind/resource-name
apis/rbac.authorization.k8s.io/v1/namespaces/default/roles/test-role