kubectl是用于针对Kubernetes集群运行命令的命令行接口。本概述涵盖kubectl语法,描述命令操作,并提供常见的示例。有关每个命令的详细信息,包括所有支持的flags和子命令,请参考kubectl相关文档。有关安装说明,请参阅安装kubectl。
从您的终端窗口使用以下语法运行kubectl命令:
kubectl [command] [TYPE] [NAME] [flags]其中command,TYPE,NAME,和flags分别是:
command: 指定要在一个或多个资源进行操作,例如create,get,describe,delete。
TYPE:指定资源类型。资源类型区分大小写,您可以指定单数,复数或缩写形式。例如,以下命令产生相同的输出:
$ kubectl get pod pod1 $ kubectl get pods pod1 $ kubectl get po pod1
NAME:指定资源的名称。名称区分大小写。如果省略名称,则会显示所有资源的详细信息,比如$ kubectl get pods。
在多个资源上执行操作时,可以按类型和名称指定每个资源,或指定一个或多个文件:
按类型和名称指定资源:
* 要分组资源,如果它们都是相同的类型:`TYPE1 name1 name2 name<#>`.<br/>
例: `$ kubectl get pod example-pod1 example-pod2`
* 要分别指定多种资源类型:  `TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>`.<br/>
例: `$ kubectl get pod/example-pod1 replicationcontroller/example-rc1`
使用一个或多个文件指定资源: -f file1 -f file2 -f file<#> 使用YAML而不是JSON,因为YAML往往更加用户友好,特别是对于配置文件。
 例:$ kubectl get pod -f ./pod.yaml
flags:指定可选标志。例如,您可以使用-s或--serverflags来指定Kubernetes API服务器的地址和端口。
重要提示:从命令行指定的标志将覆盖默认值和任何相应的环境变量。
如果您需要帮助,只需从终端窗口运行kubectl help。
下表包括所有kubectl操作的简短描述和一般语法:
| Operation | Syntax | Description | 
|---|---|---|
| annotate | `kubectl annotate (-f FILENAME | TYPE NAME | 
| api-versions | kubectl api-versions [flags] | 列出可用的API版本。 | 
| apply | kubectl apply -f FILENAME [flags] | 对文件或标准输入流更改资源应用配置。 | 
| attach | kubectl attach POD -c CONTAINER [-i] [-t] [flags] | attach 到正在运行的容器来查看输出流或与容器(stdin)进行交互。 | 
| autoscale | `kubectl autoscale (-f FILENAME | TYPE NAME | 
| cluster-info | kubectl cluster-info [flags] | 显示有关集群中master节点和服务的端点信息。 | 
| config | kubectl config SUBCOMMAND [flags] | 修改kubeconfig文件。有关详细信息,请参阅各个子命令。 | 
| create | kubectl create -f FILENAME [flags] | 从文件或stdin创建一个或多个资源。 | 
| delete | `kubectl delete (-f FILENAME | TYPE [NAME | 
| describe | `kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | 
| edit | `kubectl edit (-f FILENAME | TYPE NAME | 
| exec | kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] | 对pod中的容器执行命令 | 
| explain | kubectl explain [--include-extended-apis=true] [--recursive=false] [flags] | 获取各种资源的文档。例如 pods, nodes, services 等. | 
| expose | `kubectl expose (-f FILENAME | TYPE NAME | 
| get | `kubectl get (-f FILENAME | TYPE [NAME | 
| label | `kubectl label (-f FILENAME | TYPE NAME | 
| logs | kubectl logs POD [-c CONTAINER] [--follow] [flags] | 在pod的容器中打印日志。 | 
| patch | `kubectl patch (-f FILENAME | TYPE NAME | 
| port-forward | kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] | 将一个或多个本地端口转发到pod。 | 
| proxy | kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] | 运行一个代理到Kubernetes API服务器。 | 
| replace | kubectl replace -f FILENAME | 从文件或stdin替换资源。 | 
| rolling-update | `kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]` | 
| run | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags] | 在集群上运行指定的镜像。 | 
| scale | `kubectl scale (-f FILENAME | TYPE NAME | 
| stop | kubectl stop | 已弃用: 相应的, 请查看 kubectl delete. | 
| version | kubectl version [--client] [flags] | 显示在客户端和服务器上运行的Kubernetes版本。 | 
请记住:有关命令操作的更多信息,请参阅kubectl参考文档。
下表包括所有支持的资源类型及其缩写别名的列表:
| 资源类型 | 缩写别名 | 
|---|---|
| apiservices | |
| certificatesigningrequests | csr | 
| clusters | |
| clusterrolebindings | |
| clusterroles | |
| componentstatuses | cs | 
| configmaps | cm | 
| controllerrevisions | |
| cronjobs | |
| customresourcedefinition | crd,crds | 
| daemonsets | ds | 
| deployments | deploy | 
| endpoints | ep | 
| events | ev | 
| horizontalpodautoscalers | hpa | 
| ingresses | ing | 
| jobs | |
| limitranges | limits | 
| namespaces | ns | 
| networkpolicies | netpol | 
| nodes | no | 
| persistentvolumeclaims | pvc | 
| persistentvolumes | pv | 
| poddisruptionbudget | pdb | 
| podpreset | |
| pods | po | 
| podsecuritypolicies | psp | 
| podtemplates | |
| replicasets | rs | 
| replicationcontrollers | rc | 
| resourcequotas | quota | 
| rolebindings | |
| roles | |
| secrets | |
| serviceaccounts | sa | 
| services | svc | 
| statefulsets | |
| storageclasses | 
请使用以下部分查看如何格式化或排序某些命令的输出的信息,有关哪些命令支持各种输出选项的详细信息,请参阅kubectl参考文档。
所有kubectl命令的默认输出格式是可读的纯文本格式。要以特定格式将详细信息输出到终端窗口,您可以将一个-o或多个-output标志添加到支持的kubectl命令中。
kubectl [command] [TYPE] [NAME] -o=<output_format>根据kubectl操作,支持以下输出格式:
| 输出格式 | 描述 | 
|---|---|
| -o=custom-columns=<spec> | 输入使用逗号分隔的列表打印表格 custom columns。 | 
| -o=custom-columns-file=<filename> | 使用文件中的自定义列模板打印表 <filename>。 | 
| -o=json | 输出JSON格式的API对象。 | 
| -o=jsonpath=<template> | 打印在jsonpath表达式中定义的字段 | 
| -o=jsonpath-file=<filename> | 打印由文件中的jsonpath表达式定义的字段 <filename>。 | 
| -o=name | 仅打印资源名称,没有其他的。 | 
| -o=wide | 以纯文本格式输出任何附加信息。对于pod,包括节点名称。 | 
| -o=yaml | 输出YAML格式的API对象。 | 
例子
在此示例中,以下命令将单个pod的详细信息作为YAML格式化对象输出:
$ kubectl get pod web-pod-13je7 -o=yaml
记住:有关每个命令支持哪种输出格式的详细信息,请参阅kubectl参考文档。
自定义列
要定义自定义列并仅将所需的详细信息输出到表中,可以使用该custom-columns选项。您可以选择内联定义自定义列或使用模板文件:-o=custom-columns=<spec>或-o=custom-columns-file=<filename>。
一致:
$ kubectl get pods <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion模版文件:
$ kubectl get pods <pod-name> -o=custom-columns-file=template.txt该template.txt文件包含:
NAME                    RSRC
metadata.name           metadata.resourceVersion
运行任一命令的结果是:
NAME           RSRC
submit-queue   610995要将对象列表在终端窗口中排序输出,可以将该--sort-by标志添加到支持的kubectl命令中。通过使用--sort-by标志指定任何数字或字符串字段来对对象进行排序。要指定一个字段,请使用jsonpath表达式。
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>打印按名称排序的列表,请运行:
$ kubectl get pods --sort-by=.metadata.name
使用以下一组示例来帮助您熟悉运行常用kubectl操作:
// 使用在example-service.yaml中的定义创建一个service.
$ kubectl create -f example-service.yaml
// 使用在example-controller.yaml中的定义创建一个replication controller.
$ kubectl create -f example-controller.yaml
// 使用在<directory>目录下的any .yaml, .yml, or .json文件创建对象.
$ kubectl create -f <directory>kubectl get - 列出一个或更多资源.
// 使用文本格式列出所有的pods.
$ kubectl get pods
// 使用文本格式列出所有的信息,包含一些额外的信息(比如节点名称).
$ kubectl get pods -o wide
// 使用文本格式列出指定名称的replicationcontroller. 注: 你可以缩短 'replicationcontroller' 资源类型使用别名 'rc'.
$ kubectl get replicationcontroller <rc-name>
// 使用文本格式列出所有的rc,services.
$ kubectl get rc,services`kubectl describe` - 显示一个或多个资源的详情状态.
shell
// 显示指定节点名称的详情信息.
$ kubectl describe nodes 
// 显示指定pods名称的详情信息.
$ kubectl describe pods/
// 显示所有被名称为
`kubectl delete` - 从文件, stdin,或者指定的label selectors, 名称,资源选择器, 或者资源去删除资源.
shell // 通过 pod.yaml 文件中的资源类型和名称删除一个pod. $ kubectl delete -f pod.yaml
// 删除所有label名称为name=
// 删除所有pods. $ kubectl delete pods –all
`kubectl exec` - 针对pod中的某个容器执行命令.
shell
// 在名称为
// 在
// 从名称为
`kubectl logs` - 输出一个pod的容器日志.
shell
// 从名称为
// 从名称为
开始使用kubectl命令。
此页是否对您有帮助?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.