如何选择哪种Kubernetes apiVersion?

meShell · 2019-07-19

Kubernetes中的对象定义需要apiVersion字段。当Kubernetes有一个更新可供您使用的版本时 - 在其API中更改某些内容 - 将创建一个新的apiVersion

但是,官方的Kubernetes文档对apiVersion提供的指导很少。本文章为大家提供了一个备忘单,说明了要使用的版本,解释了每个版本,并为您提供了版本的时间表。

应该使用哪种apiVersion

下面这个表格列出所有对象对应的apiVersion值.

Kind apiVersion
CertificateSigningRequest certificates.k8s.io/v1beta1
ClusterRoleBinding rbac.authorization.k8s.io/v1
ClusterRole rbac.authorization.k8s.io/v1
ComponentStatus v1
ConfigMap v1
ControllerRevision apps/v1
CronJob batch/v1beta1
DaemonSet extensions/v1beta1
Deployment extensions/v1beta1
Endpoints v1
Event v1
HorizontalPodAutoscaler autoscaling/v1
Ingress extensions/v1beta1
Job batch/v1
LimitRange v1
Namespace v1
NetworkPolicy extensions/v1beta1
Node v1
PersistentVolumeClaim v1
PersistentVolume v1
PodDisruptionBudget policy/v1beta1
Pod v1
PodSecurityPolicy extensions/v1beta1
PodTemplate v1
ReplicaSet extensions/v1beta1
ReplicationController v1
ResourceQuota v1
RoleBinding rbac.authorization.k8s.io/v1
Role rbac.authorization.k8s.io/v1
Secret v1
ServiceAccount v1
Service v1
StatefulSet apps/v1

每个apiVersion是什么含义?

alpha

名称中带有alpha的API版本是进入Kubernetes的新功能的早期候选版本。这些可能包含错误,并且不保证将来可以使用。

beta

API版本名称中的beta表示测试已经超过了alpha级别,并且该功能最终将包含在Kubernetes中。 虽然它的工作方式可能会改变,并且对象的定义方式可能会完全改变,但该特征本身很可能以某种形式将其变为Kubernetes

stable

稳定的apiVersion这些名称中不包含alphabeta。 它们可以安全使用。


v1

这是Kubernetes API的第一个稳定版本。 它包含许多核心对象。

apps/v1

apps是Kubernetes中最常见的API组,其中包含许多核心对象和v1。 它包括与在Kubernetes上运行应用程序相关的功能,如Deployments,RollingUpdates和ReplicaSets。

autoscaling/v1

此API版本允许根据不同的资源使用指标自动调整容器。此稳定版本仅支持CPU扩展,但未来的alpha和beta版本将允许您根据内存使用情况和自定义指标进行扩展。

batch/v1

batchAPI组包含与批处理和类似作业的任务相关的对象(而不是像应用程序一样的任务,如无限期地运行Web服务器)。 这个apiVersion是这些API对象的第一个稳定版本。

batch/v1beta1

Kubernetes中批处理对象的新功能测试版,特别是包括允许您在特定时间或周期运行作业的CronJobs。

certificates.k8s.io/v1beta1

此API版本添加了验证网络证书的功能,以便在群集中进行安全通信。 您可以在官方文档上阅读更多内容。

extensions/v1beta1

此版本的API包含许多新的常用Kubernetes功能。 部署,DaemonSets,ReplicaSet和Ingresses都在此版本中收到了重大更改。

Note: 在Kubernetes 1.6中,其中一些对象已从扩展程序重定位到特定的API组(例如,应用程序)。 当这些对象退出测试版时,期望它们位于特定的API组中,例如apps/v1。 使用extensions/v1beta1已被弃用 - 尝试尽可能使用特定的API组,具体取决于您的Kubernetes集群版本。

policy/v1beta1

apiVersion增加了设置pod中断预算和pod安全性新规则的功能

rbac.authorization.k8s.io/v1

此apiVersion包含Kubernetes基于角色的访问控制的额外功能。这有助于您保护群集。查看官方博客文章

说明

此文章翻译于: https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-apiversion-definition-guide.html