K8S命令速查宝典,建议收藏,少走弯路!
yund56 2025-07-17 00:03 3 浏览
两年前,我刚接触Kubernetes(以下简称K8S)时,面对一堆晦涩的命令行和复杂的集群管理,简直头大如斗。作为一个运维工程师,我深刻体会到K8S的强大,但也深知它的“门槛”不低。无论是部署应用、调试问题,还是优化集群性能,熟练掌握K8S命令行工具kubectl都是基本功。一次深夜加班,我靠着一串精准的命令解决了Pod异常重启的问题,客户直接打电话来表扬,这让我意识到:K8S命令不仅是工具,更是运维工程师的“武林秘籍”。
今天,我把自己两年来整理的K8S常用命令集合分享出来,从基础操作到高级调试,涵盖了日常运维的方方面面。希望这篇攻略能帮你从“运维小白”快速进阶为“K8S老司机”,少走弯路,直击痛点!
运维的“瑞士军刀”
Kubernetes是当前容器编排的王者,无论是互联网大厂还是中小企业,都在用它来管理容器化应用。K8S的核心魅力在于自动化:自动扩缩容、负载均衡、故障自愈……但这些功能背后,离不开kubectl这个命令行工具。它就像运维工程师的“瑞士军刀”,几乎能搞定所有K8S集群的管理任务。
不过,kubectl的命令繁多,参数复杂,初学者很容易被绕晕。比如,kubectl get、kubectl describe、kubectl apply,每个命令都有几十个子选项,稍不留神就可能敲错。为了让大家少踩坑,我把K8S常用命令按场景分类,整理成一份“速查手册”,涵盖集群管理、资源操作、调试排障和高级用法,干货满满!
快速上手K8S集群
先从最基础的命令开始。这些命令是日常运维的“敲门砖”,帮你快速了解和管理K8S集群。
1. 查看集群信息
- kubectl version:检查K8S客户端和服务器的版本。运行后会返回Client Version(kubectl版本)和Server Version(集群版本)。这在排查兼容性问题时特别有用。
kubectl version --short
加上--short参数,输出更简洁。
- kubectl cluster-info:显示集群的控制平面地址,比如API Server的URL。首次接触新集群时,用这个命令快速确认集群状态。
kubectl cluster-info
- kubectl get nodes:列出集群中的所有节点,显示节点名称、状态(Ready/NotReady)、角色(master/worker)等。
kubectl get nodes -o wide
-o wide会额外显示节点的IP地址,方便排查网络问题。
2. 配置kubectl上下文
多集群管理是运维的常见场景,kubectl支持通过上下文切换集群:
- kubectl config view:查看当前kubectl的配置文件(通常是~/.kube/config),包括集群、用户和上下文信息。
- kubectl config use-context <context-name>:切换到指定上下文。比如:
kubectl config use-context prod-cluster
这在管理生产、测试等多套集群时特别实用。
资源管理
K8S的核心资源包括Pod、Deployment、Service等,日常运维中90%的操作都围绕它们展开。
以下是常用命令:
1. 查看资源
- kubectl get:列出指定类型的资源,比如Pod、Deployment、Service等。
kubectl get pods -n <namespace>
-n指定命名空间,不加则默认查看default命名空间。
- kubectl describe:查看资源的详细信息,比如Pod的事件日志、状态等。调试问题时必备。
kubectl describe pod <pod-name> -n <namespace>
- kubectl get all:快速查看当前命名空间下的所有资源,包括Pod、Deployment、Service等。
kubectl get all -n kube-system
2. 创建和更新资源
- kubectl apply:通过YAML或JSON文件创建/更新资源。这是声明式管理的核心命令。
kubectl apply -f deployment.yaml
- kubectl create:直接创建资源,适合快速测试(但不支持更新)。
kubectl create deployment my-app --image=nginx
- kubectl edit:实时编辑资源的YAML配置,改完自动应用。
kubectl edit deployment my-app -n <namespace>
3. 删除资源
- kubectl delete:删除指定资源,比如Pod、Deployment等。
kubectl delete pod <pod-name> -n <namespace>
加上--force --grace-period=0可强制删除,避免等待。
4. 管理Pod
- kubectl logs:查看Pod的日志,调试应用问题时必用。
kubectl logs <pod-name> -n <namespace> --follow
--follow会实时跟踪日志输出。
- kubectl exec:进入Pod的容器,类似SSH登录。
kubectl exec -it <pod-name> -n <namespace> -- bash
-it表示交互模式,-- bash指定运行bash(如果容器支持)。
找到问题的“罪魁祸首”
K8S集群问题五花八门,比如Pod卡在Pending、容器反复重启、网络不通等。
1. 查看Pod状态
- kubectl get pods -o wide:显示Pod的详细信息,包括所在节点、IP地址等。
kubectl get pods -o wide -n kube-system
- kubectl describe pod <pod-name>:查看Pod的事件日志,常见问题如镜像拉取失败、调度失败都会在这里有线索。
2. 排查容器问题
- kubectl logs --previous:查看Pod中已终止容器的日志,适合排查容器崩溃问题。
kubectl logs <pod-name> --previous -n <namespace>
- kubectl top:监控Pod或节点的资源使用情况(需安装metrics-server)。
kubectl top pod <pod-name> -n <namespace>
这能帮你发现CPU/内存占用过高的问题。
3. 网络调试
- kubectl port-forward:将Pod的端口映射到本地,方便测试服务。
kubectl port-forward <pod-name> 8080:80 -n <namespace>
比如,把Pod的80端口映射到本地的8080端口。
- kubectl get svc:查看Service的配置,确认ClusterIP、端口等是否正确。
kubectl get svc -n <namespace> -o wide
4. 集群健康检查
- kubectl get events:查看集群事件日志,快速发现异常。
kubectl get events -n <namespace> --sort-by='.metadata.creationTimestamp'
- kubectl describe node <node-name>:检查节点状态,比如磁盘压力、内存不足等。
让K8S更高效
掌握了基础和调试命令后,一些高级命令能让你的运维工作事半功倍。
1. 批量操作
- kubectl label:给资源打标签,方便分组管理。
kubectl label pod <pod-name> app=frontend -n <namespace>
- kubectl annotate:为资源添加注释,记录额外信息。
kubectl annotate pod <pod-name> description="frontend-pod" -n <namespace>
2. 滚动更新与回滚
- kubectl rollout:管理Deployment的滚动更新。
kubectl rollout status deployment my-app -n <namespace>
查看滚动更新状态。
kubectl rollout undo deployment my-app -n <namespace>
回滚到上一个版本。
3. 自动扩缩容
- kubectl autoscale:为Deployment设置自动扩缩容。
kubectl autoscale deployment my-app --min=2 --max=5 --cpu-percent=80 -n <namespace>
当CPU使用率超过80%时,自动扩展Pod,最多5个,最少2个。
4. 清理无用资源
- kubectl delete pod --field-selector=status.phase=Failed:删除失败状态的Pod。
kubectl delete pod --field-selector=status.phase=Failed -n <namespace>
5. 自定义输出
- kubectl get -o json/yaml:以JSON或YAML格式输出资源详情,适合脚本化处理。
kubectl get pod <pod-name> -o yaml -n <namespace>
- kubectl get -o custom-columns:自定义输出列,方便快速查看关键信息。
kubectl get pods -o custom-columns=NAME:.metadata.name,IP:.status.podIP -n <namespace>
实用技巧与踩坑经验
在实际使用K8S的两年里,我踩过不少坑,也总结了一些实用技巧:
1. 善用命名空间
默认情况下,kubectl操作的是default命名空间,但生产环境通常按项目或团队划分命名空间。每次操作前确认命名空间(-n参数),避免误操作其他环境的资源。
2. 命令自动补全
配置kubectl命令自动补全,能大幅提升效率。在Linux上,运行以下命令:
source <(kubectl completion bash)
将补全脚本添加到~/.bashrc,一劳永逸。
3. 善用dry-run
在创建或更新资源前,用--dry-run=client预览效果,避免出错:
kubectl apply -f deployment.yaml --dry-run=client
4. 避免常见错误
- Pod卡在Pending:检查调度器日志(kubectl describe pod),常见原因是节点资源不足或镜像拉取失败。
- Service不通:确认Service的selector是否匹配Pod的标签(kubectl get svc -o yaml)。
- 命令超时:检查API Server状态,可能是网络问题或集群超载。
K8S命令是运维的“加速器”
从最初的“命令恐惧症”到如今的“信手拈来”,我深刻体会到,熟练掌握K8S命令不仅是技术能力的体现,更是运维效率的“加速器”。无论是快速部署一个应用、排查深夜的集群故障,还是优化资源利用率,这些命令都能让你事半功倍。
这份K8S常用命令集合,是我两年来踩坑和实践的结晶,希望能为你的运维工作提供一份“速查宝典”。如果你也有自己的K8S“独门秘籍”,欢迎留言分享!让我们一起在K8S的世界里,修炼成真正的“高级运维”!
相关推荐
- 柚墨个人简历Word模板分享(柚墨ppt)
-
1、棕色商务风餐饮店长个人通用简历:http://www.yomoer.cn/template/detail/7801.html2、棕色商务风猎头个人通用简历:http://www.yomoer.cn...
- 纯粹的 Prompt 优化:输出HTML一步到位, 简历诊断 AI 小程序揭秘
-
最近我琢磨着,能不能搞一个超便捷的简历诊断工具,用户只需上传简历和岗位要求截图,AI就能一步到位生成HTML报告,这想法是不是听着就带劲?现在,我把这整个过程拆解出来,跟大家分享一下,保证干货满...
- 代码式动态录入生成个人简历页面html页面前端源码
-
大家好,今天给大家介绍一款,代码式动态录入生成个人简历页面html页面前端源码(图1)。送给大家哦,获取方式在本文末尾。整个页面分为两个部分,左右布局,左边动态输入一个代码编辑器,根据输入的代码动态变...
- Web前端开发,HTML超链接标签,不懂的可以学习一下
-
一、什么是HTML的超链接大家平时浏览的网页中都可以找到链接。点击链接就可以从一个页面跳转到另一个页面。HTML超链接可以是一个字,一个词,或者一组词,也可以是一幅图像。可以点击这些内容来跳转到新的文...
- HTML-列表标签(双标签) 208(html项目列表标签)
-
列表标签有3种:1)dl,dd与dt(定义列表)2)ol与li(有序列表)3)ul与li(无序列表)前两者一般不怎么用,网页中运用最多的是第三种1)<dl><dd>与<...
- html开发笔记06- 字体标签和文字标签
-
1、字体标签:用于在页面中加粗、倾斜、加下划线等操作(不推荐)。字体标签分为:<b>加粗</b>,<i>倾斜</i>,<u>下划线&...
- Web前端:HTML的10大重要用途(web前端开发html总结)
-
HTML是最流行的Web前端开发技术之一,它是一种用于创建网页和Web应用程序的标记语言。HTML与CSS和JavaScript结合使用以创建有吸引力且响应迅速的前端网页。 HTML提供了...
- 晨间解析!HTML canvas 标签面试题,绘图知识轻松掌握
-
当清晨的阳光如笔尖般轻轻划过窗台,泡一杯温润的金骏眉,坐在桌前翻开这篇文章——此刻的学习,就像在网页的“电子画布”上从容调色,让HTML中<canvas>标签的知识点如晨光般细...
- 想学 HTML,不知从何入手?看完这篇文章你就知道了
-
很多人都说HTML是一门很简单的语言,看看书,看看视频就能读懂。但是,如果你完全没有接触过,就想通过看一遍教程,背背标签,想要完全了解HTML,真的有点太天真了。HTML中文“超文本标记语言”,英文名...
- B端设计|页面标签的认识和实操应用
-
既然浏览器中可以使用页面标签,那为什么在项目中还需要使用这个组件和交互框架的形式呢?本文IE等浏览器界面为例,介绍了页面标签在产品设计中的作用,以及它们在不同使用场景当中的效果。希望能帮助你对页面标签...
- 视频号超链接怎么设置能成功?核心要点:标签代码格式
-
视频号超链接怎么设置能成功?坦白来讲,成功背后的方法很简单,唯一需要注意的点,就是<a>标签代码背后对应的格式。前两天一朋友跟我说:为什么视频号超链接设置完以后,在用户端看测试效果时,显示...
- 那些容易被你忽略的HTML重要属性,你知道几个?
-
前言在前端开发编写html文件的时候,我们可能会很熟练的写出常见的html元素,但是如果问到某些元素的差别时,大家不一定能说的出来,今天就给大家总结一下那些很常见但容易混淆的属性。html与csscs...
- 「测试开发全栈-HTML」(18) label标签的使用
-
说完了标签属性后,接着说下HTML中最后的标签--label<label>标签为input元素定义标注,用于绑定一个表单元素,当点击一个<label>标签内的文本时,浏览器就会...
- Markdown 各种标签说明介绍(markdownhere)
-
介绍主要介绍各种Markdown的标签。汇总一下自己在Markdown中编辑中的常用标签。本篇内容的标签,全部是在Typora的环境下自测使用过。1.基础标签主要介绍Markdown中的一些基础标签,...
- 10 个罕见的 HTML 标签,几乎无人使用 - 、等等
-
HTML的内容远不止<div>、<a>和<p>。如此多更复杂、更强大的标签,你可能从未使用过。具有从交互式图像到复杂的UI组件的有趣功能。1.<...
- 一周热门
- 最近发表
- 标签列表
-
- filter函数js (37)
- filter函数excel用不了 (73)
- 商城开发 (40)
- 影视网站免费源码最新版 (57)
- 影视资源api接口 (46)
- 网站留言板代码大全 (56)
- java版软件下载 (52)
- java教材电子课本下载 (48)
- 0基础编程从什么开始学 (50)
- java是用来干嘛的 (51)
- it入门应该学什么 (55)
- java线上课程 (55)
- 学java的软件叫什么软件 (38)
- 程序开发软件有哪些 (53)
- 软件培训 (59)
- 机器人编程代码大全 (50)
- 少儿编程教程免费 (45)
- 新代系统编程教学 (61)
- 共创世界编程网站 (38)
- 亲测源码 (36)
- 三角函数积分公式表 (35)
- 函数的表示方法 (34)
- 表格乘法的公式怎么设置 (34)
- sumif函数的例子 (34)
- 图片素材 (36)