精通Kubernetes
上QQ阅读APP看书,第一时间看更新

若想了解一个系统的功能及其提供的服务,需要关注它的API。API为使用该系统的用户提供了一个全局图。Kubernetes从多角度为开发者提供多组REST API。有些API需通过工具使用,有些则可以被开发者直接使用。API的一个重要方面在于它们也在不断地发展,Kubernetes开发者通过尝试扩展(向现有对象添加新对象和新字段),避免重命名或删除现有对象和字段来保持其可管理性。此外,所有API端点都是版本化的,通常也包含Alpha或Beta记法。代码如下。

/api/v1
/api/v2alpha1

通过基于客户端库的kubectl CLI,或者直接调用REST API,可以访问API。下面的章节会对认证和授权机制进行详细介绍。由此,读者可对API有初步的认识。

这是Kubernetes的主要API,它非常庞大。前文所讲的所有概念以及许多辅助概念,都有相应的API对象和运算。若有正确的权限,则可列出、获取、创建和更新对象。下面是一个常见操作的详细文档,可以得到所有的Pod列表。

GET /api/v1/pods

它支持各种可选参数。

  • pretty:如果为true,输出则用pretty打印。
  • labelSelector:用于限制结果的选择器表达。
  • watch:如果为true,则观察变化并返回事件流。
  • resourceVersion:使用watch,只返回该版本之后发生的事件。
  • timeoutSeconds:列表或监控器的超时时长。

自动伸缩API非常聚焦,允许控制同级别的Pod自动缩放器。该自动缩放器基于CPU利用率,甚至特定于应用的度量来管理一组Pod。它可以用/apis/autoscaling/v1端点来列出、查询、创建、更新和销毁自动缩放器对象。

批处理API

批处理API用来管理作业。作业是执行和终止某些活动的Pod。与副本控制器管理的常规Pod不同,它们在作业完成时就应该终止。批处理API使用Pod模板指定作业,然后在大部分情况下,允许通过/apis/batch/v1端点列出、查询、创建和删除作业。