网站首页 > 文章精选 正文
初学 Kubernetes,最重要也最基础的工具就是 kubectl。
但你是否曾被它的各种命令、参数搞晕?
本篇文章用一张“实用速查表 + 真实示例”,帮你从 0 上手 kubectl,做到“看得懂、敲得出、调得准”。
什么是 kubectl?
kubectl 是 Kubernetes 的命令行工具(CLI),你可以用它来:
- 创建、更新、删除各种资源(如 Pod、Deployment)
- 查看集群和资源的状态
- 调试容器、日志分析
- 管理配置与访问控制
简而言之,它是你与 Kubernetes 的“指挥部”对话的窗口。
入门命令:快速掌握日常操作
类别 | 命令 | 说明 |
集群状态 | kubectl cluster-info | 查看集群信息 |
节点列表 | kubectl get nodes | 查看所有节点 |
所有资源 | kubectl get all | 查看当前命名空间的所有资源 |
所有命名空间资源 | kubectl get all -A | 所有命名空间全资源 |
资源管理:Pod、Deployment 快速操作
1. 获取资源状态
kubectl get pods # 当前命名空间下所有 Pod
kubectl get deploy # 获取 Deployment
kubectl get svc # 查看服务 Service
kubectl get pods -o wide # 显示详细信息(IP、节点)
kubectl get pods -A # 查看所有命名空间下的 Pod
2. 查看资源详细信息
kubectl describe pod my-pod # 查看 Pod 详情
kubectl describe deploy my-deploy
提示:如果你怀疑某个 Pod 卡住了,describe 可以帮你查看事件(Events)。
3. 创建与删除资源
kubectl apply -f nginx.yaml # 根据 YAML 创建/更新资源
kubectl delete -f nginx.yaml # 删除 YAML 定义的资源
kubectl delete pod my-pod # 删除指定 Pod
排错调试:日志 + 终端进入容器
1. 查看容器日志
kubectl logs my-pod # 查看 Pod 日志(单容器)
kubectl logs my-pod -c container-name # 多容器 Pod 查看指定容器日志
kubectl logs -f my-pod # 实时追踪日志
2. 进入容器内部(类似 SSH)
kubectl exec -it my-pod -- /bin/sh
kubectl exec -it my-pod -c container-name -- /bin/bash
注意:容器镜像必须包含 sh 或 bash 才能进入。
临时测试工具 Pod(推荐技巧)
有时候你需要测试网络、DNS、连接情况,可以使用临时工具 Pod:
kubectl run testbox --rm -i -t --image=busybox -- /bin/sh
等价于快速拉起一个 busybox 容器进入交互模式,用完即删。
资源编辑、滚动更新、扩容
1. 手动编辑资源 YAML
kubectl edit deploy my-deploy
进入默认编辑器修改,保存后自动应用更新。
2. 滚动更新镜像版本
kubectl set image deploy/my-deploy nginx=nginx:1.25
更新 Deployment 中名为 nginx 的容器镜像,并触发滚动升级。
3. 扩容/缩容 Deployment 副本数
kubectl scale deploy my-deploy --replicas=3
进阶查询:label、selector、资源使用情况
1. 使用 Label 查询资源
kubectl get pods -l app=nginx
搭配命名空间查询:
kubectl get pods -n kube-system -l component=kube-proxy
2. 查看资源使用率(需安装 Metrics Server)
kubectl top pod # 查看 Pod 的 CPU/MEM 使用
kubectl top node # 查看各节点资源使用率
导出资源 YAML(推荐用于模板学习)
kubectl get deploy my-deploy -o yaml > my-deploy.yaml
你可以直接查看系统生成的完整 YAML 文件结构,进行自定义编辑。
常用组合参数说明
参数 | 含义 |
-n 或 --namespace | 指定命名空间 |
-o wide | 输出更多字段(如 IP、Node) |
-o yaml/json | 输出为 YAML 或 JSON 格式 |
-A | 等价于 --all-namespaces |
-f | 指定 YAML 文件 |
快速上手模板(一键试用)
示例 Deployment 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
部署命令:
kubectl apply -f nginx.yaml
小结:kubectl 命令体系记忆法
你可以这样理解:
操作类型 | 口诀 |
查看资源 | kubectl get ... |
查看详情 | kubectl describe ... |
日志输出 | kubectl logs ... |
进入容器 | kubectl exec -it ... -- /bin/sh |
创建更新 | kubectl apply/delete -f ... |
在线编辑 | kubectl edit ... |
临时工具 | kubectl run ... --rm |
推荐练习
- 使用 kubectl apply 创建一个 nginx Deployment;
- 用 kubectl edit 实现副本数从 2 改为 3;
- 用 kubectl exec 进入容器,执行 ping 操作;
- 用 kubectl get -o yaml 导出资源配置并手动修改;
- 创建 busybox 工具容器测试 DNS 解析。
关注我,不走丢,一起玩转 Kubernetes!
- 上一篇: 深度解析 K8S:容器编排的核心力量
- 下一篇: kubernetes:基于容器技术的分布式架构
猜你喜欢
- 2025-07-09 别被云原生忽悠了:接地气的 K8s 生产落地长这样
- 2025-07-09 简单了解下Kubernetes网络通信(kubernetes网络模型)
- 2025-07-09 pod结构说明-运行容器的容器(容器中pod是什么意思)
- 2025-07-09 佚名运维 k8s 训练营 - 第1天(k8s运维是什么)
- 2025-07-09 k8s实践(三):pod常用操作(k8s pod service deployment)
- 2025-07-09 Kubernetes 核心概念全景图:Pod、Node、Cluster、Control Plane 等
- 2025-07-09 K8S之调度器-精细控制Pod分布(k8s pod调度过程详解)
- 2025-07-09 【超融合云计算中心】核心K8S容器实践应用指南
- 2025-07-09 Kubernetes从零到精通(01-简介)(kubernetes入门教程)
- 2025-07-09 service详解(service理解)
- 最近发表
-
- Vue3+Django4全新技术实战全栈项目|高清完结
- 工厂模式+策略模式消除 if else 实战
- 每天一个 Python 库:httpx异步请求,让接口测试飞起来
- 如何高效实现API接口的自动化测试?
- 前端工程化:从“手忙脚乱”到“从容协作”的进化记
- 使用C#创建服务端Web API(c#开发web服务器)
- SpringBoot之旅第四篇-web开发(springboot做web项目)
- 一文读懂SpringMVC(一文读懂新型政策性金融工具)
- Rust Web编程:第十二章 在 Rocket 中重新创建我们的应用程序
- Apache Druid 数据摄取——本地数据和kafka流式数据 一篇文章看懂
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)