关于Kubernetes REST API的工作方式:
在哪里以及如何定义从REST路径到处理REST调用的函数的映射?
与etcd的交互发生在哪里?
从客户端发出请求到保存在etcd中对象的端到端路径是怎样的?
Kubernetes REST框架
Kubernetes REST实现可大致分为三个部分,如下图所示。
客户端/服务器功能通过k8s.io包中的各种库实现。服务器端实现分布在多个包中。
服务器端的根目录包是apiserver, 其包含有endpoints,server,registry和storage等重要的包。
客户端在client-go包中实现,其包含的主要包是rest。
几个关键Kubernetes概念
1)组(Group)
KubernetesREST API以层次结构组织,并以/apis为根。 一个组为根下的一组REST资源集定义一个逻辑名称。例如API组名为apps,它在层次结构中就表示为/apis/apps。
可以使用如下命令检查所有可用的API组:
kubectl get --raw/apis | python -mjson.tool
2)版本(Version)
KubernetesREST API使用版本。版本名用于定义REST资源端点,这些资源短点在组内不断演变。典型的版本名称有v1,v1alpha1,v1beta1。可以使用如下命令查找API组的所有可用版本:
kubectl get-raw /apis/
例如,想找apps组下的所有可用版本,可使用如下命令:
kubectl get --raw/apis/apps |