使用kubectl explain來了解可能的API物件欄位
瞭解API物件屬性的方法
在準備manifest檔案時,可以參考kubernetes官網的http://kubernetes.io/docs/api參考文件,來了解API物件支援的屬性,也可以使用kubectl explain命令。很多時候,使用後者更便捷。
如何使用kubectl explain命令
從零開始以編寫POD的manifest檔案,可以使用該命令先了解pod的相關規格:
[jinguang1@m104120196 ~]$ kubectl explain pods
KIND: Pod
VERSION: v1
DESCRIPTION:
Pod is a collection of containers that can run on a host. This resource is
created by clients and scheduled onto hosts.
FIELDS:
apiVersion <string>
APIVersion defines the versioned schema of this representation of an
object. Servers should convert recognized schemas to the latest internal
value, and may reject unrecognized values. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
kind <string>
Kind is a string value representing the REST resource this object
represents. Servers may infer this from the endpoint the client submits
requests to. Cannot be updated. In CamelCase. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
metadata <Object>
Standard object's metadata. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
spec <Object>
Specification of the desired behavior of the pod. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
status <Object>
Most recently observed status of the pod. This data may not be up to date.
Populated by the system. Read-only. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
從顯示的幫助資訊來看,Pod的manifest檔案包含apiVersion, kind, metadata, spec, status屬性,其中status屬性為只讀,編寫manifest檔案時並不需要提供。
如果我們需要進一步瞭解metadata更詳細的資訊,那麼可以通過下列命令來顯示幫助資訊:
[jinguang1@m104120196 ~]$ kubectl explain pod.metadata
KIND: Pod
VERSION: v1
RESOURCE: metadata <Object>
DESCRIPTION:
Standard object's metadata. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
ObjectMeta is metadata that all persisted resources must have, which
includes all objects users must create.
FIELDS:
annotations <map[string]string>
Annotations is an unstructured key value map stored with a resource that
may be set by external tools to store and retrieve arbitrary metadata. They
are not queryable and should be preserved when modifying objects. More
info: http://kubernetes.io/docs/user-guide/annotations
clusterName <string>
The name of the cluster which the object belongs to. This is used to
distinguish resources with same name and namespace in different clusters.
This field is not set anywhere right now and apiserver is going to ignore
it if set in create or update request.
creationTimestamp <string>
CreationTimestamp is a timestamp representing the server time when this
object was created. It is not guaranteed to be set in happens-before order
across separate operations. Clients may not set this value. It is
represented in RFC3339 form and is in UTC. Populated by the system.
Read-only. Null for lists. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
deletionGracePeriodSeconds <integer>
Number of seconds allowed for this object to gracefully terminate before it
will be removed from the system. Only set when deletionTimestamp is also
set. May only be shortened. Read-only.
deletionTimestamp <string>
DeletionTimestamp is RFC 3339 date and time at which this resource will be
deleted. This field is set by the server when a graceful deletion is
requested by the user, and is not directly settable by a client. The
resource is expected to be deleted (no longer visible from resource lists,
and not reachable by name) after the time in this field, once the
finalizers list is empty. As long as the finalizers list contains items,
deletion is blocked. Once the deletionTimestamp is set, this value may not
be unset or be set further into the future, although it may be shortened or
the resource may be deleted prior to this time. For example, a user may
request that a pod is deleted in 30 seconds. The Kubelet will react by
sending a graceful termination signal to the containers in the pod. After
that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL)
to the container and after cleanup, remove the pod from the API. In the
presence of network partitions, this object may still exist after this
timestamp, until an administrator or automated process can determine the
resource is fully terminated. If not set, graceful deletion of the object
has not been requested. Populated by the system when a graceful deletion is
requested. Read-only. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
finalizers <[]string>
Must be empty before the object is deleted from the registry. Each entry is
an identifier for the responsible component that will remove the entry from
the list. If the deletionTimestamp of the object is non-nil, entries in
this list can only be removed.
generateName <string>
GenerateName is an optional prefix, used by the server, to generate a
unique name ONLY IF the Name field has not been provided. If this field is
used, the name returned to the client will be different than the name
passed. This value will also be combined with a unique suffix. The provided
value has the same validation rules as the Name field, and may be truncated
by the length of the suffix required to make the value unique on the
server. If this field is specified and the generated name exists, the
server will NOT return a 409 - instead, it will either return 201 Created
or 500 with Reason ServerTimeout indicating a unique name could not be
found in the time allotted, and the client should retry (optionally after
the time indicated in the Retry-After header). Applied only if Name is not
specified. More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency
generation <integer>
A sequence number representing a specific generation of the desired state.
Populated by the system. Read-only.
initializers <Object>
An initializer is a controller which enforces some system invariant at
object creation time. This field is a list of initializers that have not
yet acted on this object. If nil or empty, this object has been completely
initialized. Otherwise, the object is considered uninitialized and is
hidden (in list/watch and get calls) from clients that haven't explicitly
asked to observe uninitialized objects. When an object is created, the
system will populate this list with the current set of initializers. Only
privileged users may set or modify this list. Once it is empty, it may not
be modified further by any user.
labels <map[string]string>
Map of string keys and values that can be used to organize and categorize
(scope and select) objects. May match selectors of replication controllers
and services. More info: http://kubernetes.io/docs/user-guide/labels
name <string>
Name must be unique within a namespace. Is required when creating
resources, although some resources may allow a client to request the
generation of an appropriate name automatically. Name is primarily intended
for creation idempotence and configuration definition. Cannot be updated.
More info: http://kubernetes.io/docs/user-guide/identifiers#names
namespace <string>
Namespace defines the space within each name must be unique. An empty
namespace is equivalent to the "default" namespace, but "default" is the
canonical representation. Not all objects are required to be scoped to a
namespace - the value of this field for those objects will be empty. Must
be a DNS_LABEL. Cannot be updated. More info:
http://kubernetes.io/docs/user-guide/namespaces
ownerReferences <[]Object>
List of objects depended by this object. If ALL objects in the list have
been deleted, this object will be garbage collected. If this object is
managed by a controller, then an entry in this list will point to this
controller, with the controller field set to true. There cannot be more
than one managing controller.
resourceVersion <string>
An opaque value that represents the internal version of this object that
can be used by clients to determine when objects have changed. May be used
for optimistic concurrency, change detection, and the watch operation on a
resource or set of resources. Clients must treat these values as opaque and
passed unmodified back to the server. They may only be valid for a
particular resource or set of resources. Populated by the system.
Read-only. Value must be treated as opaque by clients and . More info:
https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency
selfLink <string>
SelfLink is a URL representing this object. Populated by the system.
Read-only.
uid <string>
UID is the unique in time and space value for this object. It is typically
generated by the server on successful creation of a resource and is not
allowed to change on PUT operations. Populated by the system. Read-only.
More info: http://kubernetes.io/docs/user-guide/identifiers#uids
來檢視一個真是manifest的例子,你可以查詢使用kubectl explain來檢視每個屬性:
[jinguang1@m104120196 ~]$ kubectl get pod etcd-m104120191 --namespace kube-system -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubernetes.io/config.hash: 6bc14c8cf2154ca1c46bf10329d714ac
kubernetes.io/config.mirror: 6bc14c8cf2154ca1c46bf10329d714ac
kubernetes.io/config.seen: "2019-03-19T15:23:46.221011601+08:00"
kubernetes.io/config.source: file
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: "2019-03-19T07:23:47Z"
labels:
component: etcd
tier: control-plane
name: etcd-m104120191
namespace: kube-system
resourceVersion: "2350"
selfLink: /api/v1/namespaces/kube-system/pods/etcd-m104120191
uid: efca37b8-4a17-11e9-b351-b4432655bdb0
spec:
containers:
- command:
- etcd
- --advertise-client-urls=https://10.41.20.191:2379
- --initial-advertise-peer-urls=https://10.41.20.191:2380
- --initial-cluster=m104120196=https://10.41.20.196:2380,m104120195=https://10.41.20.195:2380,m104120193=https://10.41.20.193:2380,m104120192=https://10.41.20.192:2380,m104120191=https://10.41.20.191:2380
- --initial-cluster-state=existing
- --listen-client-urls=https://127.0.0.1:2379,https://10.41.20.191:2379
- --listen-peer-urls=https://10.41.20.191:2380
- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --client-cert-auth=true
- --data-dir=/var/lib/etcd
- --key-file=/etc/kubernetes/pki/etcd/server.key
- --name=m104120191
- --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
- --peer-client-cert-auth=true
- --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
- --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
- --snapshot-count=10000
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
image: registry.intra.xxxx.com/xxxx_rd_algorithmplatform/google_containers/etcd:3.2.24
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/sh
- -ec
- ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt
--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key
get foo
failureThreshold: 8
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 15
name: etcd
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/etcd
name: etcd-data
- mountPath: /etc/kubernetes/pki/etcd
name: etcd-certs
dnsPolicy: ClusterFirst
enableServiceLinks: true
hostNetwork: true
nodeName: m104120191
priority: 2000000000
priorityClassName: system-cluster-critical
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
operator: Exists
volumes:
- hostPath:
path: /etc/kubernetes/pki/etcd
type: DirectoryOrCreate
name: etcd-certs
- hostPath:
path: /var/lib/etcd
type: DirectoryOrCreate
name: etcd-data
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2019-03-19T07:23:46Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2019-03-19T07:24:08Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2019-03-19T07:24:08Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2019-03-19T07:23:46Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: docker://eafc899991dd8023ee4a09d3671345e2932df302d61373e2cc23a75d19dd3ee1
image: registry.aliyuncs.com/google_containers/etcd:3.2.24
imageID: docker-pullable://registry.aliyuncs.com/google_containers/etcd@sha256:7b073bdab8c52dc23dfb3e2101597d30304437869ad8c0b425301e96a066c408
lastState:
terminated:
containerID: docker://f08bdff1c367fd5a36e243ff4daac6ff682cc22a49bc406331f47dbabcfa7ecc
exitCode: 1
finishedAt: "2019-03-19T07:23:48Z"
reason: Error
startedAt: "2019-03-19T07:23:48Z"
name: etcd
ready: true
restartCount: 2
state:
running:
startedAt: "2019-03-19T07:24:08Z"
hostIP: 10.41.20.191
phase: Running
podIP: 10.41.20.191
qosClass: BestEffort
startTime: "2019-03-19T07:23:46Z"
相關文章
- 使用 Eloquent ORM 使用 with 模型關聯查詢,如何處理select不同模型的欄位(欄位名可能相同)ORM模型
- Scala的類、屬性、物件欄位物件
- 舉例解釋一下explain各欄位的含義AI
- abc欄位數的使用
- 卡卡西:一文詳解explain各欄位含義AI
- 關於Thinkphp 使用AdvModel來讀取Blob欄位PHP
- 使用欄位格式化來自定義SharePoint(八)
- 使用欄位格式化來自定義SharePoint(七)
- 使用欄位格式化來自定義SharePoint(四)
- 使用欄位格式化來自定義SharePoint(二)
- 使用欄位格式化來自定義SharePoint(五)
- 使用欄位格式化來自定義SharePoint(一)
- 使用欄位格式化來自定義SharePoint(六)
- 使用欄位格式化來自定義SharePoint(三)
- java 將物件集合轉為欄位值的 listJava物件
- MySQL 中 JSON 欄位的使用技巧MySqlJSON
- MySQL中JSON欄位的使用技巧MySqlJSON
- api 介面欄位規範的問題,請教大家API
- Mybatis框架:foreach迴圈遍歷欄位(為了解決動態表、動態欄位查詢資料)MyBatis框架
- 使用hibernate校驗欄位
- PhpCms自定義欄位的使用說明PHP
- mac 使用 sed 抽取 json 中的欄位MacJSON
- [20181022]lob欄位的lobid來之那裡.txt
- Django REST framework API 指南(10):序列化·欄位DjangoRESTFrameworkAPI
- pydantic 欄位欄位校驗
- 使用Hybris Commerce User API讀取使用者資訊時,電話欄位沒有返回API
- JSON欄位型別在ORM中的使用JSON型別ORM
- 【Mongo】mongo更新欄位為另一欄位的值Go
- 在 Laravel 中動態 隱藏 / 顯示 API 欄位LaravelAPI
- kettle從入門到精通 第八十課 ETL之kettle kettle中的json物件欄位寫入postgresql中的json欄位JSON物件SQL
- fastadmin 新增欄位記圖片欄位AST
- MySQL中explain語句的使用MySqlAI
- Dynamics CRM使用計算欄位自動計算兩個時間欄位的天數差
- MySQL null值欄位是否使用索引的總結MySqlNull索引
- JPA實體中欄位對映補充和嵌入物件物件
- 外來鍵欄位未建索引引發的死鎖索引
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- kubectl-debug使用記錄