1. Kubernetes api versions清單
如下是Kubernetes 1.16.x 下的API版本清單
# kubectl api-versions 前一部分是apigroup,後一部分是版本
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
crd.projectcalico.org/v1
events.k8s.io/v1beta1
extensions/v1beta1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
traefik.containo.us/v1alpha1
v1
2. 各api_group包含的資源類型
這裏舉例的api_group爲核心API組(’ ')以及 apps組下的資源類型
2.1 核心API組(’ ')下的資源類型
# kubectl api-resources --api-group='' -o wide
NAME SHORTNAMES APIGROUP NAMESPACED KIND VERBS
bindings true Binding [create]
componentstatuses cs false ComponentStatus [get list]
configmaps cm true ConfigMap [create delete deletecollection get list patch update watch]
endpoints ep true Endpoints [create delete deletecollection get list patch update watch]
events ev true Event [create delete deletecollection get list patch update watch]
limitranges limits true LimitRange [create delete deletecollection get list patch update watch]
namespaces ns false Namespace [create delete get list patch update watch]
nodes no false Node [create delete deletecollection get list patch update watch]
persistentvolumeclaims pvc true PersistentVolumeClaim [create delete deletecollection get list patch update watch]
persistentvolumes pv false PersistentVolume [create delete deletecollection get list patch update watch]
pods po true Pod [create delete deletecollection get list patch update watch]
podtemplates true PodTemplate [create delete deletecollection get list patch update watch]
replicationcontrollers rc true ReplicationController [create delete deletecollection get list patch update watch]
resourcequotas quota true ResourceQuota [create delete deletecollection get list patch update watch]
secrets true Secret [create delete deletecollection get list patch update watch]
serviceaccounts sa true ServiceAccount [create delete deletecollection get list patch update watch]
services svc true Service [create delete get list patch update watch]
2.2 apps組下的資源類型
# kubectl api-resources --api-group='apps' -o wide
NAME SHORTNAMES APIGROUP NAMESPACED KIND VERBS
controllerrevisions apps true ControllerRevision [create delete deletecollection get list patch update watch]
daemonsets ds apps true DaemonSet [create delete deletecollection get list patch update watch]
deployments deploy apps true Deployment [create delete deletecollection get list patch update watch]
replicasets rs apps true ReplicaSet [create delete deletecollection get list patch update watch]
statefulsets sts apps true StatefulSet [create delete deletecollection get list patch update watch]
3. 同一個apigroup可能存在多個版本,到底用那個呢
我們可以選擇當前Kubernetes版本(例如1.16.x)推薦的版本 :preferredVersion,例如
# kubectl get --raw "/apis" |python -mjson.tool
# 選擇個apigroup中的preferredVersion
{ "kind": "APIGroupList"
"apiVersion": "v1",
"groups": [
{ "name": "apiregistration.k8s.io",
"preferredVersion": {"groupVersion": "apiregistration.k8s.io/v1","version": "v1"},
"versions": [{"groupVersion": "apiregistration.k8s.io/v1", "version": "v1"},
{"groupVersion": "apiregistration.k8s.io/v1beta1", "version": "v1beta1"}]
},
{ "name": "extensions",
"preferredVersion": {"groupVersion": "extensions/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "extensions/v1beta1", "version": "v1beta1"}]
},
{
"name": "apps",
"preferredVersion": {"groupVersion": "apps/v1", "version": "v1"},
"versions": [{"groupVersion": "apps/v1", "version": "v1"}]
},
{
"name": "events.k8s.io",
"preferredVersion": {"groupVersion": "events.k8s.io/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "events.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "authentication.k8s.io",
"preferredVersion": {"groupVersion": "authentication.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "authentication.k8s.io/v1", "version": "v1"},
{"groupVersion": "authentication.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "authorization.k8s.io",
"preferredVersion": {"groupVersion": "authorization.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "authorization.k8s.io/v1", "version": "v1"},
{"groupVersion": "authorization.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "autoscaling",
"preferredVersion": {"groupVersion": "autoscaling/v1", "version": "v1"},
"versions": [{"groupVersion": "autoscaling/v1", "version": "v1"},
{"groupVersion": "autoscaling/v2beta1", "version": "v2beta1"},
{"groupVersion": "autoscaling/v2beta2", "version": "v2beta2"}]
},
{
"name": "batch",
"preferredVersion": {"groupVersion": "batch/v1", "version": "v1"},
"versions": [{"groupVersion": "batch/v1", "version": "v1"},
{"groupVersion": "batch/v1beta1", "version": "v1beta1"}]
},
{
"name": "certificates.k8s.io",
"preferredVersion": {"groupVersion": "certificates.k8s.io/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "certificates.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "networking.k8s.io",
"preferredVersion": {"groupVersion": "networking.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "networking.k8s.io/v1", "version": "v1"},
{"groupVersion": "networking.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "policy",
"preferredVersion": {"groupVersion": "policy/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "policy/v1beta1", "version": "v1beta1"}]
},
{
"name": "rbac.authorization.k8s.io",
"preferredVersion": {"groupVersion": "rbac.authorization.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "rbac.authorization.k8s.io/v1", "version": "v1"},
{"groupVersion": "rbac.authorization.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "storage.k8s.io",
"preferredVersion": {"groupVersion": "storage.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "storage.k8s.io/v1", "version": "v1beta1"}]
},
{
"name": "admissionregistration.k8s.io",
"preferredVersion": {"groupVersion": "admissionregistration.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "admissionregistration.k8s.io/v1", "version": "v1"},
{"groupVersion": "admissionregistration.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "apiextensions.k8s.io",
"preferredVersion": {"groupVersion": "apiextensions.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "apiextensions.k8s.io/v1", "version": "v1"},
{"groupVersion": "apiextensions.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "scheduling.k8s.io",
"preferredVersion": {"groupVersion": "scheduling.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "scheduling.k8s.io/v1", "version": "v1"},
{"groupVersion": "scheduling.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "coordination.k8s.io",
"preferredVersion": {"groupVersion": "coordination.k8s.io/v1", "version": "v1"},
"versions": [{"groupVersion": "coordination.k8s.io/v1", "version": "v1"},
{"groupVersion": "coordination.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "node.k8s.io",
"preferredVersion": {"groupVersion": "node.k8s.io/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "node.k8s.io/v1beta1", "version": "v1beta1"}]
},
{
"name": "crd.projectcalico.org",
"preferredVersion": {"groupVersion": "crd.projectcalico.org/v1", "version": "v1"},
"versions": [{"groupVersion": "crd.projectcalico.org/v1", "version": "v1"}]
},
{
"name": "traefik.containo.us",
"preferredVersion": {"groupVersion": "traefik.containo.us/v1alpha1", "version": "v1alpha1"},
"versions": [{"groupVersion": "traefik.containo.us/v1alpha1", "version": "v1alpha1"}]
},
{
"name": "metrics.k8s.io",
"preferredVersion": {"groupVersion": "metrics.k8s.io/v1beta1", "version": "v1beta1"},
"versions": [{"groupVersion": "metrics.k8s.io/v1beta1", "version": "v1beta1"}]
}
]
}