王小扬博客
Git
AI
产品
film
AI Code
Java
其他
计算机网络
DB
云原生
Node
Docker
操作系统
Elasticsearch
Apollo
Nestjs
Think
大前端
PHP
软件开发
设计
生活技巧
CI
缓存
kubectl常见命令
实际常用
GUI 可视化软件
JET Pilot is an open-source Kubernetes desktop client that focuses on less clutter, speed and good looks. - unxsist/jet-pilot.
jet-pilot
unxsist • Updated Mar 6, 2025
日志查看


一、基础命令
create,delete,get,run,expose,set,explain,edit
create 命令:根据文件或者输入来创建资源
delete 命令:删除资源
get 命令 :获得资源信息
run 命令:在集群中创建并运行一个或多个容器镜像。
语法:run NAME –image=image [–env=”key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] — [COMMAND] [args…]
expose 命令:创建一个service服务,并且暴露端口让外部可以访问
更多expose详细用法参见
:http://docs.kubernetes.org.cn/475.htmlset 命令:配置应用的一些特定资源,也可以修改应用已有的资源
使用 kubectl set --help查看,它的子命令,env,image,resources,selector,serviceaccount,subject。
语法:resources (-f FILENAME | TYPE NAME) ([–limits=LIMITS & –requests=REQUESTS]
set 命令详情参见
:http://docs.kubernetes.版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!org.cn/669.htmlkubectl set resources 命令
这个命令用于设置资源的一些范围限制。
资源对象中的Pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。
对于每个Pod资源,如果指定了
Limits
(限制)值,并省略了Requests
(请求),则Requests
默认为Limits
的值。可用资源对象包括(支持大小写)
:replicationcontroller
、deployment
、daemonset
、job
、replicaset
。例如
:kubectl set selector 命令
设置资源的
selector
(选择器)。如果在调用”set selector”命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。selector
必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符” – ” 、点”.”和下划线” _ “。如果指定了–resource-vers版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!ion,则更新将使用此资源版本,否则将使用现有的资源版本。注意
:目前selector
命令只能用于Service
对象。语法:selector (-f FILENAME | TYPE NAME) EXPRESSIONS [–resource-version=version]
kubectl set image 命令
用于更新现有资源的容器镜像。
可用资源对象包括:
pod (po)
、replicationcontroller (rc)
、deployment (deploy)
、daemonset (ds)
、job
、replicaset (rs)
。语法:image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 … CONTAINER_NAME_N=CONTAINER_IMAGE_N
explain 命令:用于显示资源文档信息
edit 命令: 用于编辑资源信息
二、设置命令
label,annotate,completion
label命令: 用于更新(增加、修改或删除)资源上的 label(标签)
label
必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
- 如果
-overwrite
为true
,则可以覆盖已有的label
,否则尝试覆盖label
将会报错。
- 如果指定了
-resource-version
,则更新将使用此资源版本,否则将使用现有的资源版本。
语法:label [–overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–resource-version=version]
例
:annotate命令:更新一个或多个资源的Ann版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!otations信息。也就是注解信息,可以方便的查看做了哪些操作。
Annotations
由key/value组成。
Annotations
的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。
- 如果
-overwrite
为true
,现有的annotations
可以被覆盖,否则试图覆盖annotations
将会报错。
- 如果设置了
-resource-version
,则更新将使用此resource version
,否则将使用原有的resource version
。
语法:annotate [–overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–resource-version=version]
例子
:completion命令:用于设置 kubectl 命令自动补全
BASH
ZSH
三、部署命令
rollout,rolling-update,scale,autoscale
rollout 命令: 用于对资源进行管理
可用资源包括:
deployments
,daemonsets
。子命令
:history
(查看历史版本)
pause
(暂停资源)
resume
(恢复暂停资源)
status
(查看资源状态)
undo
(回滚版本)
rolling-update命令: 执行指定ReplicationController的滚动更新。
该命令创建了一个新的
RC
, 然后一次更新一个pod
方式逐步使用新的PodTemplate
,最终实现Pod
滚动更新,new-controller.json
需要与之前RC
在相同的namespace
下。语法
:rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAG版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!E | -f NEW_CONTROLLER_SPEC)scale命令:扩容或缩容
Deployment
、ReplicaSet
、Replication Controller
或 Job
中Pod
数量scale
也可以指定多个前提条件,如:当前副本数量或 --resource-version
,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略。语法:kubectl scale [–resource-version=version] [–current-replicas=count] –replicas=COUNT (-f FILENAME | TYPE NAME)
autoscale命令:这个比
scale
更加强大,也是弹性伸缩策略 ,它是根据流量的多少来自动进行扩展或者缩容。指定
Deployment
、ReplicaSet
或ReplicationController
,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。语法:kubectl autoscale (-f FILENAME | TYPE NAME 版权声明:本文遵循 CC 4.0 BY-SA 版权协议,若要转载请务必附上原文出处链接及本声明,谢谢合作!| TYPE/NAME) [–min=MINPODS] –max=MAXPODS [–cpu-percent=CPU] [flags]
四、集群管理命令
certificate,cluster-info,top,cordon,uncordon,drain,taint
certificate命令:用于证书资源管理,授权等
cluster-info 命令:显示集群信息
top 命令:用于查看资源的cpu,内存磁盘等资源的使用率
- cordon命令:用于标记某个节点不可调度
- uncordon命令:用于标签节点可以调度
- drain命令:用于在维护期间排除节点。
- taint命令:用于给某个
Node
节点设置污点
五、集群故障排查和调试命令
describe,logs,exec,attach,port-foward,proxy,cp,auth
describe命令:显示特定资源的详细信息
logs命令:用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名
语法:kubectl logs [-f] [-p] POD [-c CONTAINER]
参数选项
:- c, –container=””: 容器名。
- f, –follow[=false]: 指定是否持续输出日志(实时日志)。
- –interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
- –limit-bytes=0: 输出日志的最大字节数。默认无限制。
- p, –previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
- –since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
- –since-time=””: 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
- –tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
- –timestamps[=false]: 在日志中包含时间戳。
exec命令:进入容器进行交互,在容器中执行命令
语法:kubectl exec POD [-c CONTAINER] — COMMAND [args…]
命令选项
:- c, –container=””: 容器名。如果未指定,使用pod中的一个容器。
- p, –pod=””: Pod名。
- i, –stdin[=false]: 将控制台输入发送到容器。
- t, –tty[=false]: 将标准输入控制台作为容器的控制台输入。
attach命令:连接到一个正在运行的容器。
语法:kubectl attach POD -c CONTAINER
参数选项
:- c, –container=””: 容器名。如果省略,则默认选择第一个 pod。
- i, –stdin[=false]: 将控制台输入发送到容器。
- t, –tty[=false]: 将标准输入控制台作为容器的控制台输入。
cp命令:拷贝文件或者目录到pod容器中
用于
pod
和外部的文件交换,类似于docker
的cp
,就是将容器中的内容和外部的内容进行交换。六、其他命令
api-servions,config,help,plugin,version
api-servions命令:打印受支持的
api
版本信息help命令:用于查看命令帮助
config 命令: 用于修改
kubeconfig
配置文件(用于访问api,例如配置认证信息)设置
kubectl
与哪个 Kubernetes
集群进行通信并修改配置信息。查看 使用 kubeconfig 跨集群授权访问 文档获取详情配置文件信息。version 命令:打印客户端和服务端版本信息
plugin 命令:运行一个命令行插件
七、高级命令
apply命令:通过文件名或者标准输入对资源应用配置
通过文件名或控制台输入,对资源进行配置。如果资源不存在,将会新建一个。可以使用
JSON
或者 YAML
格式。语法:kubectl apply -f FILENAME
参数选项
:- f, –filename=[]: 包含配置信息的文件名,目录名或者URL。
- –include-extended-apis[=true]: If true, include definitions of new APIs via calls to the API server. [default true]
- o, –output=””: 输出模式。”-o name”为快捷输出(资源/name).
- –record[=false]: 在资源注释中记录当前 kubectl 命令。
- R, –recursive[=false]: Process the directory used in -f, –filename recursively. Useful when you want to manage related manifests organized within the same directory.
- –schema-cache-dir=”~/.kube/schema”: 非空则将API schema缓存为指定文件,默认缓存到’$HOME/.kube/schema’
- –validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
patch命令:使用补丁修改,更新资源的字段,也就是修改资源的部分内容
语法:kubectl patch (-f FILENAME | TYPE NAME) -p PATCH
replace命令:通过文件或者标准输入替换原有资源
语法:kubectl replace -f FILENAME
convert命令:不同的版本之间转换配置文件
语法:kubectl convert -f FILENAME
八、终端输出
格式化输出
要以特定格式将详细信息输出到终端窗口,可以将
-o
或 --output
参数添加到支持的 kubectl
命令。输出格式 | 描述 |
-o=custom-columns=<spec> | 使用逗号分割的自定义列列表打印表格 |
-o=custom-columns-file=<filename> | 使用<filename>文件中的自定义列模版打印表格 |
-o=json | 输出JSON格式的API对象 |
-o=jsonpath=<template> | 打印jsonpath表达式定义的字段 |
-o=jsonpath-file=<filename> | 在<filename>文件中打印由jsonpath表达式定义的字段 |
-o=name | 仅打印资源名称而不打印任何其他内容 |
-o=wide | 使用任何其他信息以纯文本格式输出,对于pod来说,包含了节点名称 |
-o=yaml | 输出YAML格式的API对象 |
日志输出详细程度和调试
Kubectl
日志输出详细程度是通过 -v
或者 --v
来控制的,参数后跟了一个数字表示日志的级别。Kubernetes
通用的日志习惯和相关的日志级别在 这里 有相应的描述。1~10:测试下来 10 比 9 内容更加详细,一般到 7 或者 8 就够用了
详细程度 | 描述 |
--v=0 | 用于那些应该 始终 对运维人员可见的信息,因为这些信息一般很有用。 |
--v=1 | 如果你不想要看到冗余信息,此值是一个合理的默认日志级别。 |
--v=2 | 输出有关服务的稳定状态的信息以及重要的日志消息,这些信息可能与系统中的重大变化有关。这是建议大多数系统设置的默认日志级别。 |
--v=3 | 包含有关系统状态变化的扩展信息。 |
--v=4 | 包含调试级别的冗余信息。 |
--v=5 | 跟踪级别的详细程度。 |
--v=6 | 显示所请求的资源。 |
--v=7 | 显示 HTTP 请求头。 |
--v=8 | 显示 HTTP 请求内容。 |
--v=9 | 显示 HTTP 请求内容而且不截断内容。 |
Loading...