kubectl命令行工具用法简介

本文详细介绍了kubectl,一个用于Kubernetes集群操作的命令行工具,包括其基本语法、常用子命令(如创建、删除、查看资源对象,以及管理kubeconfig、运行容器等)、格式化输出选项,并推荐了相关学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始介绍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实践全接触》一书。

子命令语法含义说明
applykubectl apply -f FILENAME [flag]从配置文件或stdin中对资源对象进行配置更新。注意与kubectl replace命令的区别。kubectl replace的执行过程是使用新的YAML文件中的API对象替换原有的API对象,而kubectl apply则是执行了一个对原有API对象的PATCH操作。推荐使用kubectl apply命令。
attachkubectl attach POD -c CONTAINER [flag]附着到一个正在运行的容器上
configkubectl config SUBCOMMAND [flag]修改kubeconfig文件
cpkubectl cp [options]从容器中复制文件/目录到主机或将主机文件/目录复制到容器中。这个命令比较常用,比如讲日志文件拷贝到宿主机,以方便查看日志信息
createkubectl create -f FILENAME [flag]从配置我呢间或stdin中创建资源对象
deletekubectl delete (-f FILENAME|TYPE[NAME|/NAME|-l label|-all]) [flag]根据配置˙文件、stdin、资源名称或label selector删除资源对象,如经常使用删除资源的方式重新拉起pod实例
describekubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flag]描述一个或多个资源对象的详细信息
diffkubectl diff -f FILENAME [options]查看配置文件与当前系统中正在运行的资源对象的差异
drainkubectl drain NODE [flag]首先将指定的NODE设置为unschedulable,然后删除在该NODE上运行的所有POD,但不会删除不由API Server管理的POD
editkubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flag]编辑资源对象的属性,在线更新。当需要临时修改或验证POD配置信息时,经常使用该命令
execkubectl exec POD [-c CONTAINER] [-i] [-t] [flag] [–COMMAND[args…]]运行一个容器中的命令。当POD中只有一个容器时,无需指定容器ID。经常使用该命令进入容器的bash,这样就可在容器外查看信息,如 kubectl exec -it – /bin/bash。这里-i即stdin,-t即tty。可以简单地把tty看作Linux给用户提供的一个常驻小程序,用于接收用户的标准输人,返回操作系统的标准输出。为了能够在tty中输入信息,还需要同时开启stdin(标准输入流)。
exlainkubectl explain [–include-extended-apis=true] [–recursive=false] [flag]对资源对象属性的详细说明
getkubectl get (-f FILENAME|TYPE[NAME|/NAME|-l label]) [–watch] [–sort-by=FIELD] [[-o|–output]=OUTPUT_FORMAT] [flag]显式一个或多个资源对象的概要信息。最常用的一个命令
logskubectl logs POD [-c CONTAINER] [–follow] [flag]在屏幕上打印一个容器的日志。如kubectl logs -f 表示持续显示容器输出到stdout的日志,类似于tail -f命令
optionskubectl options显示作用于所有子命令的公共参数
pluginkubectl plugin [flag] [options]在kubectl命令行使用用户自定义的插件。Kubernetes支持自定义插件,当需要使用自定义插件时,需要使用到该命令。用户自定义插件的可执行文件名需要以"kubectl-"开头,复制到$PATH中的某个目录(如/usr/local/bin)下,然后就可以通过kubectl 运行自定义插件。卸载插件也很简单,只需要删除插件文件即可
runkubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags]基于一个镜像在Kubernetes集群中启动一个Deployment
topkubectl top [node | pod]查看NODE或POD的资源使用情况,需要在集群中运行Metrics Server
versionkubectl 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命令——配置篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值