当前位置: 首页 > news >正文

kubectl 命令

一、常用命令

1、获取信息

#获取节点信息
kubectl get nodes
#获取pod信息
kubectl get pods
#获取pod信息包含具体在哪个节点
kubectl get pods -o wide

2、部署

# 部署pod
kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 

# 发布service
# --post=80 --target-post=8080 : pod的80端口映射容器的8080端口  
# --type=NodePort : service会代理pod的80端口
kubectl expose deployment tomcat9 --port=8080 --target-port=8080 --type=NodePort

# --dry-run 表示测试不实际运行
# -o yaml  生成yaml
# > tomcat.yaml  输出到tomcat.yaml
#根据kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17生成yaml并输出到tomcat.yaml
kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 --dry-run -o yaml > tomcat.yaml
# 应用tomcat.yaml(根据上面命令生成的 tomcat.yaml), 实际上和kubectl create deployment tomcat6 --image=tomcat:9.0.102-jre17一样的效果,只是yaml可以自己写更灵活
kubectl apply -f tomcat.yaml

二、基本命令

使用以下语法从终端窗口运行 kubectl 命令:

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

其中 commandTYPENAMEflags 分别是:

  • command:指定要对一个或多个资源执行的操作,例如 creategetdescribedelete

  • TYPE:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。

  • NAME:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。例如:kubectl get pods

  • flags: 指定可选的参数。例如,可以使用 -s--server 参数指定 Kubernetes API 服务器的地址和端口。

在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件,要按类型和名称指定资源:

  • 要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>
    例子:kubectl get pod example-pod1 example-pod2

  • 分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。
    例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1

  • 用一个或多个文件指定资源:-f file1 -f file2 -f file<#>
    例子:kubectl get -f ./pod.yaml(为什么使用 YAML 而不是 JSON, 是因为 YAML 对用户更友好, 特别是对于配置文件)

1、操作

操作名称描述语法示例
get列出指定类型的资源kubectl get <资源类型> [flags]kubectl get pods -n kube-system
describe显示资源详细配置和状态kubectl describe <资源类型>/<资源名称>kubectl describe node/node01
create通过文件创建资源kubectl create -f <文件路径>kubectl create -f deployment.yaml
apply通过文件更新/创建资源(幂等)kubectl apply -f <文件路径>kubectl apply -f service.yaml
delete删除指定资源kubectl delete <资源类型>/<资源名称>kubectl delete configmap/app-config
logs输出容器日志流kubectl logs <Pod名称> [-c 容器名]kubectl logs nginx-pod --tail=100
exec在容器中执行交互命令kubectl exec -it <Pod名称> -- <命令>kubectl exec -it redis-pod -- /bin/sh
port-forward将本地端口映射到Pod端口kubectl port-forward <资源类型>/<名称> <本地端口>:<目标端口>kubectl port-forward service/nginx 8080:80
scale调整Deployment副本数kubectl scale deploy/<名称> --replicas=<数量>kubectl scale deploy/web-server --replicas=5
rollout管理资源部署,包含子命令status(查看状态)、history(查看历史版本)、undo(回滚操作)、pause(暂停)、restart(恢复更新)kubectl rollout undo <资源类型>/<名称>kubectl rollout undo deployment/frontend
top显示Pod/Node资源消耗kubectl top [pods|nodes]kubectl top pods --sort-by=cpu
edit直接编辑资源定义kubectl edit <资源类型>/<资源名称>kubectl edit deployment/backend
label为资源添加/修改标签kubectl label <资源类型> <名称> <键>=<值>kubectl label nodes node01 disktype=ssd
config切换kubeconfig上下文kubectl config use-context <上下文名称>kubectl config use-context prod-cluster
patch通过JSON补丁修改资源kubectl patch <资源类型>/<名称> -p '<补丁内容>'kubectl patch deploy/nginx -p '{"spec":{"replicas":3}}'
cp在容器和本地间传输文件kubectl cp <源路径> <目标路径>kubectl cp default/nginx-pod:/log.txt ./local.log
taint管理节点的调度污点kubectl taint nodes <节点名> <键>=<值>:<效果>kubectl taint nodes node01 app=test:NoSchedule
cordon/uncordon禁止/允许节点调度Podkubectl cordon/uncordon <节点名>kubectl cordon node02
drain安全驱逐节点上的Podkubectl drain <节点名> [--ignore-daemonsets]kubectl drain node03 --delete-emptydir-data
run快速运行临时容器kubectl run <名称> --image=<镜像> [-- <命令]kubectl run debug-tool --image=busybox -- sleep 3600
diff对比集群配置与本地文件的差异kubectl diff -f <文件路径> [flags]kubectl diff -f updated-deployment.yaml
expose将资源暴露为 Kubernetes 服务kubectl expose <资源类型>/<名称> [--port=端口] [--target-port=目标端口]kubectl expose deploy/nginx --port=80 --target-port=9376
proxy创建到 Kubernetes API 的代理通道kubectl proxy [--port=端口] [--address=地址]kubectl proxy --port=8080 --address='192.168.1.100'
set动态修改资源配置(镜像/环境变量/资源限制)kubectl set <子命令> <资源类型>/<名称> [参数]kubectl set image deploy/nginx nginx=1.25.2-alpine
explain查看资源配置字段的文档说明kubectl explain [<资源类型>.<字段路径>] [--recursive]kubectl explain pod.spec.containers.resources.limits

补充说明

  1. 表格中所有命令支持 -n <命名空间> 指定命名空间,--all-namespaces 查看全集群资源
  2. 资源类型支持缩写(如 po=pods, deploy=deployments, svc=services)
  3. 使用 --dry-run=client -o yaml 可生成资源模板(如 kubectl create deploy test --image=nginx --dry-run=client -o yaml
  4. 生产环境建议结合 kubectl diff -f <文件> 预演配置变更
  5. 资源名称需替换为实际环境中的标识符
  6. 可通过 kubectl explain <资源字段> 查看资源配置字段说明
  7. 时间敏感操作(如日志查看)可结合 --since 参数(如 --since=1h

使用技巧与注意事项

  1. 多文件操作
# 批量应用目录下所有配置 -R:递归应用某个目录及其子目录下的所有 YAML/JSON 文件
kubectl apply -f ./manifests/ -R 
  1. 资源选择器组合
# 联合使用文件选择与标签过滤 
kubectl delete -f deploy.yaml  -l app=critical 
  1. 输出格式化
# 生成资源配置模板(YAML 与 JSON 互转)
kubectl get deploy/nginx -o yaml > nginx-template.yaml  
  1. 版本控制集成
# 记录操作历史(需配合 --record 参数)
kubectl apply -f deploy.yaml  --record

安全提示:使用 --force 删除、drain 节点等高风险操作前,务必通过 --dry-run=server 验证影响范围。

2、资源

资源名缩写名API 版本按命名空间资源类型
Core/v1 资源
bindings-v1trueBinding
componentstatusescsv1falseComponentStatus
configmapscmv1trueConfigMap
endpointsepv1trueEndpoints
eventsevv1trueEvent
limitrangeslimitsv1trueLimitRange
namespacesnsv1falseNamespace
nodesnov1falseNode
persistentvolumeclaimspvcv1truePersistentVolumeClaim
persistentvolumespvv1falsePersistentVolume
podspov1truePod
replicationcontrollersrcv1trueReplicationController
secrets-v1trueSecret
servicessvcv1trueService
Apps 工作负载资源
daemonsetsdsapps/v1trueDaemonSet
deploymentsdeployapps/v1trueDeployment
statefulsetsstsapps/v1trueStatefulSet
replicasetsrsapps/v1trueReplicaSet
Network 网络资源
ingressesingnetworking.k8s.io/v1trueIngress
networkpoliciesnetpolnetworking.k8s.io/v1trueNetworkPolicy
扩展与安全资源
horizontalpodautoscalershpaautoscaling/v2trueHorizontalPodAutoscaler
cronjobscjbatch/v1trueCronJob
certificatesigningrequestscsrcertificates.k8s.io/v1falseCertificateSigningRequest
poddisruptionbudgetspdbpolicy/v1truePodDisruptionBudget
storageclassesscstorage.k8s.io/v1falseStorageClass
RBAC 权限资源
clusterroles-rbac.authorization.k8s.io/v1falseClusterRole
rolebindings-rbac.authorization.k8s.io/v1trueRoleBinding

关键特性标注

  1. API 版本差异

    • PodSecurityPolicy (psp) 使用已弃用的 policy/v1beta1(Kubernetes 1.25+ 移除)
    • FlowSchema/PriorityLevelConfiguration 使用测试版 API flowcontrol.apiserver.k8s.io/v1beta2
  2. 命名空间隔离性

    • 集群级资源false):nodes, persistentvolumes, storageclasses
    • 命名空间级资源true):pods, services, configmaps
  3. 高频缩写对照

    缩写全称使用场景
    dsDaemonSet节点守护进程部署
    hpaHorizontalPodAutoscaler自动水平扩缩容
    pdbPodDisruptionBudget维护期 Pod 中断预算

使用建议

# 查询资源缩写(含扩展资源)
kubectl api-resources --verbs=list -o wide 
 
# 检查特定资源的 API 版本兼容性 
kubectl explain <resource> --api-version=<version>

3、可选参数

Flag 参数默认值适用命令功能描述
--namespace=<ns>default所有命令指定操作的命名空间,缩写 -n
--kubeconfig=<path>~/.kube/config所有命令指定 Kubernetes 配置文件路径
--output=<format>textget/describe输出格式控制(json, yaml, wide, name),缩写 -o
--dry-run=<mode>noneapply/create试运行模式(client/server/none),用于验证配置
--forcefalsedelete强制删除资源(绕过优雅删除策略)
--selector=<label>资源查询命令按标签筛选资源,缩写 -l
--field-selector=<query>get按字段条件筛选资源(如 status.phase=Running
--recordfalseapply/set在资源注解中记录命令操作历史
--server=<address>所有命令直接指定 Kubernetes API 服务器地址
--insecure-skip-tls-verifyfalse所有命令跳过 TLS 证书验证(仅测试环境使用)
--filenameapply/create/delete/diff/replace/get/explain本地文件/目录/URL/标准输入流 加载资源配置,驱动声明式或命令式操作,缩写 -f

特殊场景参数扩展表

Flag 参数典型使用场景示例命令
--watch / -w实时监控资源变化kubectl get pods -w
--timeout=<duration>设置命令超时时间(如 30s, 5mkubectl delete pod --timeout=10s
--all操作全部资源(慎用)kubectl delete pods --all
--show-labels显示资源标签列kubectl get pods --show-labels
--sort-by=<jsonpath>按字段排序输出结果kubectl get pods --sort-by=.metadata.creationTimestamp

使用说明

  1. 命令兼容性:不同子命令支持的 flags 存在差异(如 --replicas 仅适用于 kubectl scale
  2. 动态查看帮助
# 查看全局 flags 
kubectl options 
# 查看子命令专属 flags 
kubectl <command> --help 

参考1
参考2

相关文章:

  • LLM的Sink(水槽) Token
  • 【漫话机器学习系列】168.最大最小值缩放(Min-Max Scaling)
  • 解锁兰亭妙微桌面端 UE/UI 设计,抢占数字先机
  • 主流数据库的存储引擎/存储机制的详细对比分析,涵盖关系型数据库、NoSQL数据库和分布式数据库
  • go游戏后端开发21:处理nats消息
  • 数据结构实验1.2: 顺序表的基本运算
  • 【CSS】- 表单控件的 placeholder 如何控制换行显示?
  • 自动驾驶---学术论文的常客:nuScenes数据集的使用
  • 卫星电话究竟是“锦上添花”?还是“刚需之选”?
  • android 设置状态栏背景
  • JAVA-Spring Boot多线程
  • React(九)React Hooks
  • RabbitMQ的工作模式
  • nginx的自动跳转https
  • 客户端给服务器发数据,服务器不显示:开放端口操作
  • 【工作梳理】怎么把f12里面的东西导入到postman
  • 赛逸展2025“创新引擎”启动:限量席位,点亮科技绿色新征程
  • 七. JAVA类和对象(一)
  • 权限框架SpringSecurity介绍
  • 【功能开发】DSP F2837x 检测中断所有函数运行一次的时间
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:机器人行业没包袱,很多事都能从零开始
  • 浙江省委金融办原副主任潘广恩被“双开”
  • 马上评|家长抱婴儿值护学岗,如何避免“被自愿”?
  • 陕西三原高新区违法占用土地,被自然资源局罚款10万元
  • 著名词作家陈哲逝世,代表作《让世界充满爱》《同一首歌》等
  • 当番茄霸总遇上晋江古言,短剧IP小变局