本文已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。
介绍 Kubernetes API 版本 v1beta3
在过去的几个月中,我们一直在努力清理 API(有关详细信息,请参阅 https://github.com/GoogleCloudPlatform/kubernetes/issues/1519)。结果是 v1beta3,它被认为是 v1 API 的候选发布版本。
我们希望您尽快迁移到这个新的 API 版本。v1beta1 和 v1beta2 已被弃用,将在 6 月底(在我们推出 v1 API 后不久)移除。
截至最新版本 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
的映射中desiredState
现在称为spec
,而currentState
现在称为status
/minions
已移至/nodes
,并且该资源的种类为Node
- 命名空间是必需的(对于所有命名空间资源),并且已从 URL 参数移动到路径:
/api/v1beta3/namespaces/{namespace}/{resource_collection}/{resource_name}
- 所有资源集合的名称现在都使用小写字母 - 使用
replicationcontrollers
而不是replicationControllers
。 - 要监视资源的更改,请打开与集合 URL 的 HTTP 或 Websocket 连接,并提供
?watch=true
URL 参数以及所需的resourceVersion
参数来监视。 - 容器
entrypoint
已重命名为command
,而command
已重命名为args
。 - 容器、卷和节点资源表示为嵌套映射(例如,
resources{cpu:1}
),而不是作为单独的字段,并且资源值支持 缩放后缀,而不是固定的比例(例如,毫核)。 - 重启策略简单地表示为一个字符串(例如,“Always”),而不是作为嵌套映射(“always{}”)。
- 卷
source
已内联到volume
而不是嵌套。 - 主机卷已从 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 版本的更改,除非您指定“--api-version=v1beta1”或更新为 v1beta3 语法,否则使用“-o template”的命令将中断。可以在此处看到此类更改的示例
https://github.com/GoogleCloudPlatform/kubernetes/pull/6377/files
如果您使用“-o template”,我建议始终显式指定 API 版本,而不是依赖于默认值。将来我们可能会将此设置添加到 kubeconfig 中。
如果您有任何疑问,请告诉我们。与往常一样,我们可以在 IRC(#google-containers)和 github issues 上找到。