Kubernetes api版本清單以及api版本選擇

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"}]
        }
    ]
}
發佈了62 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章