0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析K8S实用命令

马哥Linux运维 来源:马哥Linux运维 2025-07-24 14:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言:作为运维工程师,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文将深入解析 K8S 最实用的命令,从基础操作到高级技巧,助你成为容器化集群管理专家。

快速导航

•基础集群信息查看

•Pod 生命周期管理

•服务与网络管理

•存储与配置管理

•故障排查神技

•性能监控与优化

•高级运维技巧

基础集群信息查看

集群状态总览

# 查看集群信息
kubectl cluster-info

# 查看节点状态
kubectl get nodes -o wide

# 查看节点详细信息
kubectl describe node 

# 查看集群资源使用情况
kubectl top nodes
kubectl top pods --all-namespaces

命名空间管理

# 查看所有命名空间
kubectl get namespaces

# 创建命名空间
kubectl create namespace 

# 删除命名空间(谨慎操作)
kubectl delete namespace 

# 设置默认命名空间
kubectl config set-context --current --namespace=

实战技巧:使用kubectl config view --minify | grep namespace快速查看当前命名空间。

Pod 生命周期管理

Pod 基础操作

# 查看所有 Pod
kubectl get pods --all-namespaces

# 查看指定命名空间的 Pod
kubectl get pods -n 

# 实时监控 Pod 状态变化
kubectl get pods -w

# 查看 Pod 详细信息
kubectl describe pod  -n 

# 删除 Pod
kubectl delete pod  -n 

# 强制删除卡住的 Pod
kubectl delete pod  --grace-period=0 --force

Pod 高级查询

# 按标签选择器查询
kubectl get pods -l app=nginx

# 按字段选择器查询
kubectl get pods --field-selector status.phase=Running

# 查看 Pod 的 YAML 配置
kubectl get pod  -o yaml

# 查看 Pod 资源使用情况
kubectl top pod 

# 查看所有容器状态
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"	"}{.status.phase}{"
"}{end}'

运维秘籍:使用kubectl get pods --sort-by=.metadata.creationTimestamp按创建时间排序,快速定位新部署的应用。

服务与网络管理

Service 服务管理

# 查看所有服务
kubectl get services --all-namespaces

# 查看服务详细信息
kubectl describe service 

# 查看服务端点
kubectl get endpoints 

# 临时端口转发(调试神器)
kubectl port-forward pod/ 8080:80
kubectl port-forward service/ 8080:80

# 查看服务的选择器匹配的 Pod
kubectl get pods -l 

Ingress 管理

# 查看 Ingress 规则
kubectl get ingress --all-namespaces

# 查看 Ingress 详细配置
kubectl describe ingress 

# 查看 Ingress 控制器日志
kubectl logs -n ingress-nginx deployment/nginx-ingress-controller

网络策略与排查

# 查看网络策略
kubectl get networkpolicies --all-namespaces

# 测试 Pod 间网络连通性
kubectlexec-it  -- ping 
kubectlexec-it  -- nslookup 

# 查看 DNS 配置
kubectlexec-it  --cat/etc/resolv.conf

存储与配置管理

ConfigMap 和 Secret

# 查看配置映射
kubectl get configmaps --all-namespaces

# 查看 ConfigMap 内容
kubectl describe configmap 
kubectl get configmap  -o yaml

# 创建 ConfigMap
kubectl create configmap  --from-file=
kubectl create configmap  --from-literal=key=value

# 查看密钥
kubectl get secrets --all-namespaces

# 查看 Secret 内容(Base64 解码)
kubectl get secret  -o jsonpath='{.data.password}'|base64-d

持久化存储

# 查看持久卷
kubectl get pv

# 查看持久卷声明
kubectl get pvc --all-namespaces

# 查看存储类
kubectl get storageclass

# 查看卷详细信息
kubectl describe pv 
kubectl describe pvc 

性能优化:使用kubectl get pvc -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,VOLUME:.spec.volumeName,CAPACITY:.status.capacity.storage,STORAGECLASS:.spec.storageClassName快速查看存储概况。

故障排查神技

日志查看与分析

# 查看 Pod 日志
kubectl logs  -n 

# 查看多容器 Pod 的特定容器日志
kubectl logs  -c 

# 实时跟踪日志
kubectl logs -f 

# 查看之前崩溃容器的日志
kubectl logs  --previous

# 查看最近指定时间的日志
kubectl logs  --since=1h
kubectl logs  --since-time=2024-01-01T0000Z

# 导出所有 Pod 日志
forpodin$(kubectl get pods -o name);do
 kubectl logs$pod>${pod##*/}.log2>&1
done

容器调试

# 进入容器 Shell
kubectlexec-it  -- /bin/bash
kubectlexec-it  -- /bin/sh

# 在多容器 Pod 中指定容器
kubectlexec-it  -c  -- /bin/bash

# 复制文件到/从容器
kubectlcp :
kubectlcp: 

# 临时运行调试容器
kubectl run debug-pod --rm-it --image=busybox -- /bin/sh

# 在现有网络命名空间中运行调试容器
kubectl debug  -it --image=nicolaka/netshoot

事件与状态分析

# 查看集群事件
kubectl get events --sort-by='.lastTimestamp'

# 查看特定资源的事件
kubectl describe  

# 监控资源变化
kubectl get pods -w
kubectl get events -w

# 查看资源使用情况
kubectl describe node  | grep -A 5"Allocated resources"

故障定位心法:

1. 先看 Pod 状态:kubectl get pods

2. 再看事件:kubectl describe pod

3. 查看日志:kubectl logs

4. 最后进容器调试:kubectl exec -it -- /bin/bash

性能监控与优化

资源监控

# 查看节点资源使用
kubectl top nodes

# 查看 Pod 资源使用
kubectl top pods --all-namespaces

# 查看特定命名空间资源使用
kubectl top pods -n 

# 按 CPU 使用率排序
kubectl top pods --sort-by=cpu

# 按内存使用率排序
kubectl top pods --sort-by=memory

扩缩容管理

# 手动扩缩容 Deployment
kubectl scale deployment  --replicas=5

# 查看 HPA(水平自动扩缩容)
kubectl get hpa

# 查看 VPA(垂直自动扩缩容)
kubectl get vpa

# 查看 Deployment 滚动更新状态
kubectl rollout status deployment/

# 查看滚动更新历史
kubectl rollouthistorydeployment/

# 回滚到上一个版本
kubectl rollout undo deployment/

资源配额管理

# 查看资源配额
kubectl get resourcequota --all-namespaces

# 查看 LimitRange
kubectl get limitrange --all-namespaces

# 查看资源配额详情
kubectl describe resourcequota 

高级运维技巧

批量操作与自动化

# 批量删除状态为 Evicted 的 Pod
kubectl get pods --all-namespaces | grep Evicted | awk'{print $1, $2}'| xargs -n2 kubectl delete pod -n

# 批量重启所有 Deployment
kubectl get deployments -o name | xargs -I {} kubectl rollout restart {}

# 批量获取所有 Pod 的镜像信息
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name}{"	"}{.spec.containers[*].image}{"
"}{end}'

# 查找没有设置资源限制的 Pod
kubectl get pods --all-namespaces -o json | jq'.items[] | select(.spec.containers[].resources.limits == null) | .metadata.name'

安全与权限管理

# 查看当前用户权限
kubectl auth can-i --list

# 检查特定用户权限
kubectl auth can-i create pods --as=

# 查看 RBAC 角色
kubectl get roles,rolebindings --all-namespaces
kubectl get clusterroles,clusterrolebindings

# 查看服务账户
kubectl get serviceaccounts --all-namespaces

# 查看安全策略
kubectl get podsecuritypolicies

集群维护与备份

# 驱逐节点(维护前)
kubectl drain  --ignore-daemonsets --delete-emptydir-data

# 标记节点不可调度
kubectl cordon 

# 恢复节点调度
kubectl uncordon 

# 导出资源配置(备份)
kubectl get all --all-namespaces -o yaml > cluster-backup.yaml

# 导出特定资源类型
kubectl get configmaps --all-namespaces -o yaml > configmaps-backup.yaml
kubectl get secrets --all-namespaces -o yaml > secrets-backup.yaml

性能调优命令

# 查看集群组件状态
kubectl get componentstatuses

# 查看 API Server 指标
kubectl get --raw /metrics

# 查看调度器队列
kubectl get events --field-selector reason=FailedScheduling

# 分析 Pod 启动时间
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,START_TIME:.status.startTime,NODE:.spec.nodeName

实用技巧锦囊

命令行优化

# 设置别名提高效率
aliask='kubectl'
aliaskgp='kubectl get pods'
aliaskgs='kubectl get services'
aliaskgn='kubectl get nodes'
aliaskdp='kubectl describe pod'
aliaskl='kubectl logs'

# 使用 kubectx 快速切换集群
kubectx 

# 使用 kubens 快速切换命名空间
kubens 

输出格式化

# JSON 输出
kubectl get pods -o json

# YAML 输出
kubectl get pods -o yaml

# 自定义列输出
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName

# 使用 JSONPath 提取特定字段
kubectl get pods -o jsonpath='{.items[*].metadata.name}'

# 格式化输出(需要 jq)
kubectl get pods -o json | jq'.items[] | {name: .metadata.name, status: .status.phase}'

总结与最佳实践

日常运维检查清单

1.集群健康检查

• 节点状态:kubectl get nodes

• 系统 Pod:kubectl get pods -n kube-system

• 资源使用:kubectl top nodes

2.应用状态监控

• Pod 状态:kubectl get pods --all-namespaces

• 服务状态:kubectl get services --all-namespaces

• 事件监控:kubectl get events --sort-by='.lastTimestamp'

3.性能优化检查

• 资源配额:kubectl describe node

• HPA 状态:kubectl get hpa

• 存储使用:kubectl get pvc --all-namespaces

安全运维准则

• 定期备份关键配置:ConfigMap、Secret、PV

• 设置合理的资源限制和配额

• 监控异常事件和失败的调度

• 及时清理不需要的资源和镜像

• 保持集群组件版本更新

写在最后

掌握这些 K8S 命令,你已经具备了高效管理容器化集群的核心技能。记住,熟练运用这些命令不仅能提高工作效率,更能在关键时刻快速定位和解决问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 集群
    +关注

    关注

    0

    文章

    130

    浏览量

    17600
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23447
  • kubernetes
    +关注

    关注

    0

    文章

    256

    浏览量

    9412

原文标题:30分钟掌握K8S核心命令:快速上手指南

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是 K8S,如何使用 K8S

    Kubernetes(简称K8S)是一个用于管理容器化应用程序的开源平台。以下是关于K8S及其使用方法的介绍: 一、什么是 K8S 核心特点 自动化容器编排:自动处理容器的部署、扩展、负载均衡
    发表于 06-25 06:45

    OpenStack与K8s结合的两种方案的详细介绍和比较

    OpenStack与K8S结合主要有两种方案。一是K8S部署在OpenStack平台之上,二是K8S和OpenStack组件集成。
    的头像 发表于 10-14 09:38 2.8w次阅读

    Docker不香吗为什么还要用K8s

    Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 K8s 的基本概念,后面再介绍实践,由浅入深步步为营
    的头像 发表于 06-02 11:56 3944次阅读

    简单说明k8s和Docker之间的关系

    ,但最近发现k8s概念较多,命令也有些不够用了,故想借此机会写点东西,更全面认识并使用k8s。本篇文章目的:让你更全面了解k8s概念,以及学到在工作中常用的操作。整体更偏向于原理和应用
    的头像 发表于 06-24 15:48 4004次阅读

    K8S集群服务访问失败怎么办 K8S故障处理集锦

    问题1:K8S集群服务访问失败?     原因分析:证书不能被识别,其原因为:自定义证书,过期等。 解决方法:更新证书即可。 问题2:K8S集群服务访问失败? curl: (7) Failed
    的头像 发表于 09-01 11:11 1.7w次阅读
    <b class='flag-5'>K8S</b>集群服务访问失败怎么办 <b class='flag-5'>K8S</b>故障处理集锦

    K8S(kubernetes)学习指南

    K8S(kubernetes)学习指南
    发表于 06-29 14:14 0次下载

    切换k8s上下文有多快

    use-context 命令就会很低效。 今天介绍3个工具会让你在多k8s集群环境中工作的很轻松。我将从以下几个方面来评估工具实用性: 速度 如果你有多个k8s集群可选择,你切换k8s
    的头像 发表于 05-29 15:26 1232次阅读
    切换<b class='flag-5'>k8s</b>上下文有多快

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful
    发表于 07-19 13:14 1555次阅读

    什么是K3sK8sK3sK8s有什么区别?

    Kubernetes,通常缩写为 K8s,是领先的容器编排工具。该开源项目最初由 Google 开发,帮助塑造了现代编排的定义。该系统包括了部署和运行容器化系统所需的一切。
    的头像 发表于 08-03 10:53 9100次阅读

    k8s生态链包含哪些技术

    去监听 K8s 中的 Ingress 资源,并对这些资源进行相应规则的解析和实际承载流量。在当下趋势中,像 Kubernetes Ingress Nginx 就是使用最广泛的 Ingress
    的头像 发表于 08-07 10:56 1936次阅读
    <b class='flag-5'>k8s</b>生态链包含哪些技术

    k8s云原生开发要求

    Kubernetes(K8s)云原生开发对硬件有一定要求。CPU方面,建议至少配备2个逻辑核心,高性能CPU更佳。内存至少4GB,但8GB或更高更推荐。存储需至少20-30GB可用空间,SSD提升
    的头像 发表于 10-24 10:03 1046次阅读
    <b class='flag-5'>k8s</b>云原生开发要求

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地与公有云分别建立K8s集群,并确保网络连接。接着,配置kubeconfig文件连接两集群,并安装云服务插件以实现资源互通。然后,编写Deployment文件部署应用,并使用kubectl命令
    的头像 发表于 11-07 09:37 761次阅读

    k8s和docker区别对比,哪个更强?

    Docker和Kubernetes(K8s)是容器化技术的两大流行工具。Docker关注构建和打包容器,适用于本地开发和单主机管理;而K8s则提供容器编排和管理平台,适用于多主机或云环境,具备自动化
    的头像 发表于 12-11 13:55 1129次阅读

    自建K8S集群认证过期

    今天使用kubectl命令查看pod信息时,一直正常运行的k8s集群突然不能访问了,输入任何命令都提示以下报错。
    的头像 发表于 02-07 12:32 650次阅读

    k8s权限管理指南说明

    我们在目前的k8s集群环境里面,只能在master节点上执行kubectl的一些命令,在其他节点上执行就会报错。
    的头像 发表于 06-26 14:06 539次阅读