Kubernetes kubectl 全面概述:语法、操作与常用示例

kubectl 是 Kubernetes 集群的核心命令行管理工具,用于执行集群部署、资源管理、状态查询等各类操作。本文将系统梳理 kubectl 的核心用法,包括语法规则、核心操作、资源类型、输出格式化选项及常用示例,帮助开发者快速掌握其核心能力。

一、核心语法

kubectl 的命令遵循统一语法结构,支持灵活指定资源和操作:

kubectl \[command] \[TYPE] \[NAME] \[flags]

各参数说明

  • command:指定对资源执行的操作(如 create、get、delete 等);

  • TYPE:资源类型(区分大小写,支持单数、复数或缩写形式,例如 pod/pods/po 效果一致);

  • NAME:资源名称(区分大小写,省略时显示该类型所有资源,如 kubectl get pods);

  • flags:可选参数(如 --server 指定 API Server 地址,命令行参数会覆盖默认值和环境变量)。

多资源操作支持

  • 同类型多资源:kubectl get pod pod1 pod2

  • 不同类型资源:kubectl get pod/pod1 rc/rc1

  • 通过文件指定资源:kubectl apply -f pod.yaml(推荐 YAML 格式,比 JSON 更易读)。

提示:执行

kubectl help

可获取实时帮助。

二、核心 Operations(操作)

kubectl 支持丰富的集群操作,以下是常用操作的语法和核心说明:

操作 语法 核心描述
annotate kubectl annotate (-f FILE|TYPE NAME) KEY=VAL [--overwrite] 为资源添加 / 更新注释
apply kubectl apply -f FILENAME 基于配置文件创建 / 更新资源(推荐)
get kubectl get [TYPE] [NAME] [-o FORMAT] [--sort-by=FIELD] 列出资源(支持格式化和排序)
describe kubectl describe (-f FILE|TYPE NAME| -l LABEL) 显示资源详细状态(含事件日志)
delete kubectl delete (-f FILE|TYPE NAME| -l LABEL| --all) 删除资源
exec kubectl exec POD [-c CONTAINER] -it -- COMMAND 在容器内执行命令(交互式终端)
logs kubectl logs POD [-c CONTAINER] [-f] 查看容器日志(-f 实时跟踪,类似 tail -f)
port-forward kubectl port-forward POD LOCAL_PORT:REMOTE_PORT 本地端口转发到 Pod(调试常用)
config kubectl config SUBCOMMAND 管理 kubeconfig 配置文件(切换集群、用户等)
scale kubectl scale deployment DEPLOY_NAME --replicas=NUM 调整副本数(扩容 / 缩容)

完整操作列表可参考

kubec

tl 官方

参考文档

三、Resource types(资源类型与缩写)

Kubernetes 支持多种资源类型,kubectl 提供常用缩写以简化输入,核心类型如下:

资源类型 缩写别名 用途说明
pods po 最小部署单元(容器集合)
services svc 暴露 Pod 网络访问(集群内 / 外)
deployments deploy 声明式管理 Pod 和 ReplicaSet
replicasets rs 确保指定数量的 Pod 运行
replicationcontrollers rc 传统 Pod 副本管理(逐步被 Deploy 替代)
namespaces ns 集群资源隔离(命名空间)
configmaps cm 存储非敏感配置信息
secrets - 存储敏感信息(如密码、密钥)
nodes no 集群节点(物理 / 虚拟机器)
persistentvolumes pv 持久化存储卷
persistentvolumeclaims pvc Pod 对存储卷的申请
ingresses ing HTTP/HTTPS 流量路由(负载均衡)

四、输出选项 Output options

kubectl 支持灵活的输出格式化和排序,满足不同场景需求(如数据解析、快速查看)。

4.1 格式化输出(Formatting output)

通过 -o--output 指定输出格式,常用格式如下:

输出格式 语法示例 描述
yaml kubectl get pod pod1 -o yaml 输出 YAML 格式(完整资源定义)
json kubectl get pod pod1 -o json 输出 JSON 格式(适合程序解析)
wide kubectl get pods -o wide 扩展信息(如 Pod 所在节点)
name kubectl get pods -o name 仅显示资源名称(简化输出)
custom-columns kubectl get pods -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName 自定义列(仅显示指定字段)
custom-columns-file kubectl get pods -o custom-columns-file=template.txt 从文件读取自定义列模板
4.1.1 自定义列(Custom columns)
  • inline 方式(直接指定字段):
kubectl get pods -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
  • 模板文件方式(template.txt 内容):
NAME          RSRC

.metadata.name .metadata.resourceVersion

执行命令:kubectl get pods -o custom-columns-file=template.txt

4.2 排序列表对象(Sorting list objects)

通过 --sort-by 基于 JSONPath 表达式排序,示例:

# 按 Pod 名称排序

kubectl get pods --sort-by=.metadata.name

# 按 Pod 创建时间排序(降序)

kubectl get pods --sort-by=.metadata.creationTimestamp

五、示例:常用操作实战

以下是日常工作中高频使用的 kubectl 命令示例,覆盖资源创建、查询、调试、删除等场景。

1. 资源创建(基于配置文件)

# 创建 Service

kubectl create -f example-service.yaml

# 创建 Deployment

kubectl create -f example-deploy.yaml

# 批量创建目录下所有 YAML/JSON 文件定义的资源

kubectl create -f ./k8s-config/

2. 资源查询

# 列出所有 Pod(简洁格式)

kubectl get pods

# 列出所有 Pod(扩展格式,含节点信息)

kubectl get pods -o wide

# 列出指定命名空间的 Pod

kubectl get pods -n default

# 列出 Deployment 和 Service(组合查询)

kubectl get deploy,svc

# 查看 Pod 详细状态(含事件、容器信息)

kubectl describe pod -name>

# 查看 Deployment 详细信息

kubectl describe deploy >

3. 容器交互与调试

# 查看 Pod 容器日志(实时跟踪)

kubectl logs -f -name>

# 查看指定容器的日志(多容器 Pod)

kubectl logs -f > -c >

# 进入 Pod 容器(交互式终端)

kubectl exec -ti bin/bash

# 执行单个命令(无需进入容器)

kubectl exec \<pod-name> -- ls /app

# 本地端口转发到 Pod(调试服务)

kubectl port-forward 080:80

4. 资源更新与删除

# 基于配置文件更新资源(推荐,支持增量更新)

kubectl apply -f example-deploy.yaml

# 直接编辑资源配置(实时生效)

kubectl edit deploy&#x20;

# 扩容/缩容 Deployment 副本数

kubectl scale deploy -name> --replicas=3

# 通过文件删除资源

kubectl delete -f pod.yaml

# 通过标签删除资源(删除所有标签为 app=demo 的 Pod)

kubectl delete pods -l app=demo

# 删除所有 Pod(谨慎使用)

kubectl delete pods --all

六、下一步学习建议

  1. 深入命令细节:通过 kubectl > --help 查看单个命令的所有参数(如 kubectl get --help),了解更多高级用法;

  2. 学习 JSONPath:掌握 JSONPath 表达式,灵活提取资源字段(适合自动化脚本解析);

  3. 熟悉 kubeconfig:学习 kubectl config 命令,管理多集群、多用户配置;

  4. 参考官方文档:查阅 kubectl 命令参考Kubernetes 官方指南,获取最新特性和最佳实践;

  5. 安装与升级:按照 安装 kubectl 指南配置环境,确保工具版本与集群兼容。

更多推荐