kubectl命令行工具用法简介

在开始介绍kubectl前,先说明下kubectl的读音。针对kubectl,没有统一的读音,各种读法都有,推荐读作kube control或者将其作为一个单词kubectl,即/ku’bætl/,这里使用前面的读法。
kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集群进行操作。本节对kubectl的子命令和用法进行详细说明。

kubectl用法概述

kubectl命令行的语法如下:

$ kubectl [command] [TYPE] [NAME] [flags]

其中,command、TYPE、NAME、flags的含义如下:
(1) command:子命令,用于操作资源对象,如create、get、describe、delete等。
(2) TYPE:资源对象的类型,区分大小写,能以单数、复数或者简写形式表示。如以下三种表述是等价的:

$ kubectl get pod pod1  
$ kubectl get pods pod1  
$ kubectl get po pod1  

(3) NAME:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表,如运行kubectl get pods 命令后将返回所有Pod的列表。
(4) flags:kubectl子命令的可选参数,如使用-s或–server设置 API Server的URL地址。

kubectl子命令详解

kubectl的子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。这里记录下常用的子命令,更多的命令介绍可以参考《Kubernetes权威指南 从Docker到Kubernetes实践全接触》一书。

子命令 语法 含义说明
apply kubectl apply -f FILENAME [flag] 从配置文件或stdin中对资源对象进行配置更新
attach kubectl attach POD -c CONTAINER [flag] 附着到一个正在运行的容器上
config kubectl config SUBCOMMAND [flag] 修改kubeconfig文件
cp kubectl cp [options] 从容器中复制文件/目录到主机或将主机文件/目录复制到容器中。这个命令比较常用,比如讲日志文件拷贝到宿主机,以方便查看日志信息
create kubectl create -f FILENAME [flag] 从配置我呢间或stdin中创建资源对象
delete kubectl delete (-f FILENAME|TYPE[NAME|/NAME|-l label|-all]) [flag] 根据配置˙文件、stdin、资源名称或label selector删除资源对象,如经常使用删除资源的方式重新拉起pod实例
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flag] 描述一个或多个资源对象的详细信息
diff kubectl diff -f FILENAME [options] 查看配置文件与当前系统中正在运行的资源对象的差异
drain kubectl drain NODE [flag] 首先将指定的NODE设置为unschedulable,然后删除在该NODE上运行的所有POD,但不会删除不由API Server管理的POD
edit kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flag] 编辑资源对象的属性,在线更新。当需要临时修改或验证POD配置信息时,经常使用该命令
exec kubectl exec POD [-c CONTAINER] [-i] [-t] [flag] [–COMMAND[args…]] 运行一个容器中的命令。当POD中只有一个容器时,无需指定容器ID。经常使用该命令进入容器的bash,这样就可在容器外查看信息,如 kubectl exec -it – /bin/bash
exlain kubectl explain [–include-extended-apis=true] [–recursive=false] [flag] 对资源对象属性的详细说明
get kubectl get (-f FILENAME|TYPE[NAME|/NAME|-l label]) [–watch] [–sort-by=FIELD] [[-o|–output]=OUTPUT_FORMAT] [flag] 显式一个或多个资源对象的概要信息。最常用的一个命令
logs kubectl logs POD [-c CONTAINER] [–follow] [flag] 在屏幕上打印一个容器的日志。如kubectl logs -f 表示持续显示容器输出到stdout的日志,类似于tail -f命令
options kubectl options 显示作用于所有子命令的公共参数
plugin kubectl plugin [flag] [options] 在kubectl命令行使用用户自定义的插件。Kubernetes支持自定义插件,当需要使用自定义插件时,需要使用到该命令。用户自定义插件的可执行文件名需要以"kubectl-"开头,复制到$PATH中的某个目录(如/usr/local/bin)下,然后就可以通过kubectl 运行自定义插件。卸载插件也很简单,只需要删除插件文件即可
run kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags] 基于一个镜像在Kubernetes集群中启动一个Deployment
top kubectl top [node | pod] 查看NODE或POD的资源使用情况,需要在集群中运行Metrics Server
version kubectl version [–client] [flags] 打印系统的版本信息

kubectl格式化输出

kubectl命令可以对结果进行多种格式化显示,输出的格式通过-o参数指定:

$ kubectl [command] [TYPE] [NAME] -o=<output_format>

根据不同子命令的输出结果,可选的输出格式有:

输出格式 含义说明
-o custom-columns= 根据自定义列名进行输出,以逗号分隔
-o custom-columns-file= 设置自定义列名的配置文件名称
-o json 以JSON格式显示结果
-o jsonpath= 输出jsonpath表达式定义的字段信息
-o jsonpath-file= 输出jsonpath表达式定义的字段信息,来源于文件
-o name 仅输出资源对象的名称
-o wide 输出额外信息。经常使用的格式,对于POD,将输出POD所在的NODE名称
-o yaml 以YAML格式显示结果

参考

https://www.zhihu.com/tardis/zm/art/468291559 10本 Kubernetes 学习书籍推荐
《Kubernetes权威指南 从Docker到Kubernetes实践全接触》 龚正 吴治辉 闫健勇 编著
《深入剖析 Kubernetes》 张磊 著
https://developer.aliyun.com/article/766998 Kubernetes 调度系统之 Scheduling Framework
https://www.howtopronounce.com/ howtopronounce
https://www.voidking.com/dev-kubectl-config/ kubectl命令——配置篇

猜你喜欢

转载自blog.csdn.net/wangxufa/article/details/135414642