系列目录html
在kubernetes里,pod,service,rs,rc,deploy,resource等对象都须要使用yaml文件来建立,不少时候咱们都是参照照官方示例或者一些第三方示例来编写yaml文件以建立对象.虽然这些示例颇有典型性和表明性,可以知足咱们大部分时候的需求,然而这每每仍是不够的,根据项目不一样,实际配置可能远比官方提供的demo配置复杂的多,这就要求咱们除了掌握经常使用的配置外,还须要对其它配置有所了解.若是有一个文档可以速查某一对象的全部配置,不但方便咱们学习不一样的配置,也能够作为一个小手册以便咱们记不起来某些配置时能够速查.node
下面咱们介绍一些小技巧来快速查看kubernetes apimysql
能够经过命令kubectl api-resources
来查看全部api资源git
[centos@k8s-master ~]$ kubectl api-resources NAME SHORTNAMES APIGROUP NAMESPACED KIND bindings true Binding componentstatuses cs false ComponentStatus configmaps cm true ConfigMap endpoints ep true Endpoints events ev true Event limitranges limits true LimitRange namespaces ns false Namespace nodes no false Node persistentvolumeclaims pvc true PersistentVolumeClaim persistentvolumes pv false PersistentVolume pods po true Pod podtemplates true PodTemplate replicationcontrollers rc true ReplicationController resourcequotas quota true ResourceQuota secrets true Secret serviceaccounts sa true ServiceAccount services svc true Service mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration customresourcedefinitions crd,crds apiextensions.k8s.io false CustomResourceDefinition apiservices apiregistration.k8s.io false APIService controllerrevisions apps true ControllerRevision daemonsets ds apps true DaemonSet deployments deploy apps true Deployment replicasets rs apps true ReplicaSet statefulsets sts apps true StatefulSet tokenreviews authentication.k8s.io false TokenReview localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview subjectaccessreviews authorization.k8s.io false SubjectAccessReview horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler cronjobs cj batch true CronJob jobs batch true Job certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest leases coordination.k8s.io true Lease events ev events.k8s.io true Event daemonsets ds extensions true DaemonSet deployments deploy extensions true Deployment ingresses ing extensions true Ingress networkpolicies netpol extensions true NetworkPolicy podsecuritypolicies psp extensions false PodSecurityPolicy replicasets rs extensions true ReplicaSet networkpolicies netpol networking.k8s.io true NetworkPolicy poddisruptionbudgets pdb policy true PodDisruptionBudget podsecuritypolicies psp policy false PodSecurityPolicy clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding clusterroles rbac.authorization.k8s.io false ClusterRole rolebindings rbac.authorization.k8s.io true RoleBinding roles rbac.authorization.k8s.io true Role priorityclasses pc scheduling.k8s.io false PriorityClass storageclasses sc storage.k8s.io false StorageClass volumeattachments storage.k8s.io false VolumeAttachment
除了能够看到资源的对象名称外,还能够看到对象的别名,这时候咱们再看到别人的命令如kubectl get no
这样费解的命令时就能够知道它实际上表明的是kubectl get nodes
命令web
查看api的版本,不少yaml配置里都须要指定配置的资源版本,咱们常常看到v1,beta1,beta2这样的配置,到底某个资源的最新版本是什么呢?sql
其实,能够经过kubectl api-versions
来查看api的版本centos
[centos@k8s-master ~]$ kubectl api-versions admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 apps/v1beta1 apps/v1beta2 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/v1beta1 events.k8s.io/v1beta1 extensions/v1beta1 networking.k8s.io/v1 policy/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 scheduling.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 v1
以上只是总体概况,不少时候咱们还想要看到某个api下面都有哪些配置,某一荐配置的含义等,下面罗列一些经常使用的api范例和一些查看api的技巧api
Replica Setsbash
Replication Controllersession
1) 经过kubectl explain <资源名对象名>
查看资源对象拥有的字段
前面说过,能够经过kubectl api-resources
来查看资源名称,若是想要查看某个资源的字段,能够经过kubectl explain <资源名对象名>
来查点它都有哪些字段
[centos@k8s-master ~]$ kubectl explain pod 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 [centos@k8s-master ~]$
以上Description是对资源对象的简要描述,Fields
则是对全部字段的描述
2) 列出全部api字段
经过以上咱们能感受到,以上好像并无罗列出全部的api字段,实际上以上列出的仅是一级字段,一级字段可能还包含二级的,三级的字段,想要罗列出全部的字段,能够加上
--recursive
来列出全部可能的字段
[centos@k8s-master ~]$ kubectl explain svc --recursive KIND: Service VERSION: v1 DESCRIPTION: Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy. FIELDS: apiVersion <string> kind <string> metadata <Object> annotations <map[string]string> clusterName <string> creationTimestamp <string> deletionGracePeriodSeconds <integer> deletionTimestamp <string> finalizers <[]string> generateName <string> generation <integer> initializers <Object> pending <[]Object> name <string> result <Object> apiVersion <string> code <integer> details <Object> causes <[]Object> field <string> message <string> reason <string> group <string> kind <string> name <string> retryAfterSeconds <integer> uid <string> kind <string> message <string> metadata <Object> continue <string> resourceVersion <string> selfLink <string> reason <string> status <string> labels <map[string]string> name <string> namespace <string> ownerReferences <[]Object> apiVersion <string> blockOwnerDeletion <boolean> controller <boolean> kind <string> name <string> uid <string> resourceVersion <string> selfLink <string> uid <string> spec <Object> clusterIP <string> externalIPs <[]string> externalName <string> externalTrafficPolicy <string> healthCheckNodePort <integer> loadBalancerIP <string> loadBalancerSourceRanges <[]string> ports <[]Object> name <string> nodePort <integer> port <integer> protocol <string> targetPort <string> publishNotReadyAddresses <boolean> selector <map[string]string> sessionAffinity <string> sessionAffinityConfig <Object> clientIP <Object> timeoutSeconds <integer> type <string> status <Object> loadBalancer <Object> ingress <[]Object> hostname <string> ip <string> [centos@k8s-master ~]$
以上输出的内容是通过格式化了的,咱们能够根据缩进很容易看到某一个字段从属于关系
经过上面kubectl explain service --recursive
能够看到全部的api名称,可是以上仅仅是罗列了全部的api名称,若是想要知道某一个api名称的详细信息,则能够经过kubectl explain <资源对象名称.api名称>
的方式来查看,好比如下示例能够查看到service
下的spec
下的ports
字段的信息
[centos@k8s-master ~]$ kubectl explain svc.spec.ports KIND: Service VERSION: v1 RESOURCE: ports <[]Object> DESCRIPTION: The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies ServicePort contains information on service's port. FIELDS: name <string> The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service. nodePort <integer> The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport port <integer> -required- The port that will be exposed by this service. protocol <string> The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is TCP. targetPort <string> Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service