本笔记所述的“对象”是指 Service、Pod、Deployment 等等对象。
如何查看所有可以使用的对象?
方法一、kubectl api-resoureces
# 查看全部资源对象 kubectl api-resources # 查看属于命名空间的资源 kubectl api-resources --namespaced=true # 查看属于非命名空间的资源 kubectl api-resources --namespaced=false
方法二、the API Reference guide
Kubernetes/Reference
Kubernetes API v1.18/API OVERVIEW
Kubernetes API v1.12/API OVERVIEW
如何指定 apiVerison 属性?
简单的方法
我们以 1.18 为例,我们需要定义 Deployment 资源,按如下步骤进行操作:
1)找到官方文档(Kubernetes API v1.18/API OVERVIEW)
2)找到 Deployment 对象,并查看 example 部分。
复杂的方法
每个对象的定义都要指定apiVerison字段,但是这个字段到底应该写什么呢?
第一步,执行kubectl api-resources命令,查看所有的对象及所属的「API组」,即「APIGROUP」列的值。
第二步,执行kubectl api-versions命令,查看APIGROUP所拥有的版本。列表项目的结构通常是:<APIGROUP>/<APIVERSION>
第三步,实际到第二步骤,我们就已经找到对象可用的apiVersion了。第三步是为了查看对应apiVersion的信息,比如:''kubectl explain configmap --api-version="<APIGROUP>/<APIVERSION>"''
如下操作,查看clusterroles的apiVerion值:
#!/bin/sh # kubectl api-resources | grep clusterroles clusterroles rbac.authorization.k8s.io false ClusterRole # kubectl api-versions | grep -i 'rbac.authorization.k8s.io' rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 # kubectl explain clusterroles --api-version='rbac.authorization.k8s.io/v1' # kubectl explain clusterroles --api-version='rbac.authorization.k8s.io/v1beta1'
获取特定版本的已定义对象,可以执行kubectl get <API_RESOURCE_NAME>.<API_VERSION>.<API_GROUP>命令。
例如:kubectl get deployments.v1.apps -n kube-system
参考文献
Where is the complete list of kubernetes objects?
Kubernetes API Resources: Which Group and Version to Use?
Not All Objects are in a Namespace