这篇文章已发布一年以上。较旧的文章可能包含过时的内容。请检查页面信息自发布以来是否仍然正确。

介绍 Kubernetes API 版本 v1beta3

在过去的几个月里,我们一直在努力清理 API(详情请参见 https://github.com/GoogleCloudPlatform/kubernetes/issues/1519)。结果就是 v1beta3,它被认为是 v1 API 的发布候选版本。

我们希望你尽快迁移到这个新的 API 版本。v1beta1 和 v1beta2 已被废弃,将在我们引入 v1 API 后不久,即 6 月底移除。

截至最新发布的 v0.15.0 版本,v1beta3 是主要的默认 API。我们已经更改了默认的 kubectl 和客户端 API 版本以及默认存储版本(这意味着存储在 etcd 中的对象在重写时将从 v1beta1 转换为 v1beta3)。 

你可以查看 v1beta3 的示例,例如

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/guestbook/v1beta3

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/walkthrough/v1beta3

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/update-demo/v1beta3

为了帮助过渡,我们还创建了一个转换 工具,并整理了一份重要的不同的 API 变更列表

  • 资源 id 现在称为 name
  • name、 labels、 annotations 以及其他元数据现在嵌套在一个名为 metadata 的 map 中
  • desiredState 现在称为 spec,而 currentState 现在称为 status
  • /minions 已移至 /nodes,资源类型为 Node
  • Namespace 是必需的(对于所有 namespaced 资源),并且已从 URL 参数移至路径:/api/v1beta3/namespaces/{namespace}/{resource_collection}/{resource_name}
  • 所有资源集合的名称现在都使用小写字母 - 不再是 replicationControllers,而是使用replicationcontrollers
  • 要监视资源的更改,请向集合 URL 打开 HTTP 或 Websocket 连接,并提供 ?watch=true URL 参数以及所需的 resourceVersion 参数来指定从哪个版本开始监听。
  • 容器的 entrypoint 已重命名为 command,而 command 已重命名为 args
  • 容器、卷和节点资源表示为嵌套 map(例如,resources{cpu:1}),而不是单独字段,并且资源值支持缩放后缀,而不是固定单位(例如,milli-cores)。
  • 重启策略仅表示为字符串(例如,“Always”),而不是嵌套 map(“always{}”)。
  • 卷的 source 内联到 volume 中,而不是嵌套。
  • Host volumes 已从 hostDir 更改为 hostPath ,以更好地反映它们可以是文件或目录

API 最新生成的 Swagger 规范在这里

https://kubernetes.ac.cn/third_party/swagger-ui/#!/v1beta3

有关我们 API 版本控制方法和过渡的更多详细信息可以在这里找到

https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api.md

我们发现的另一个变化是,随着 kubectl 中默认 API 版本的更改,使用 "-o template" 的命令将会失效,除非你指定 "--api-version=v1beta1" 或更新到 v1beta3 语法。这种更改的一个示例可以在这里看到

https://github.com/GoogleCloudPlatform/kubernetes/pull/6377/files

如果你使用 "-o template",我建议始终显式指定 API 版本,而不是依赖默认设置。将来我们可能会将此设置添加到 kubeconfig 中。

如果你有任何问题,请告诉我们。像往常一样,我们随时可以在 IRC (#google-containers) 和 github issues 上为你提供帮助。