Kubernetes 的20 个核心命令分类详解

文章目录

kubernetes 的命令行工具 kubectl 是集群管理的核心入口。本文通过 6 大场景分类,总结 20 个高频命令,并附详细示例,助你快速掌握日常操作。

一、集群与资源管理

命令 类别 说明 使用示例
kubectl get -A 基础查询 查看所有命名空间下的资源(Pod/Deployment 等) kubectl get pods,deployments -A -o wid查看全集群资源分布
kubectl describe 诊断分析 显示资源详细信息(事件、配置、状态) kubectl describe pod nginx-pod 诊断 Pod 异常原因
kubectl apply -f 声明式管理 创建或更新资源(推荐替代 create) kubectl apply -f deployment.yaml 应用配置
kubectl delete 资源清理 删除资源(支持名称/标签/YAML) kubectl delete pods -l app=nginx 按标签删除

二、应用部署与更新

命令 类别 说明 使用示例
kubectl rollout 版本控制 管理滚动更新(状态/回滚/暂停) kubectl rollout undo deployment/nginx 回滚到上一版本
kubectl scale 扩缩容 动态调整副本数 kubectl scale deploy/nginx --replicas=5 扩容至 5 副本
kubectl set image 镜像更新 热更新容器镜像 kubectl set image deploy/nginx nginx=nginx:1.25
kubectl autoscale 自动扩缩容 配置 HPA(水平自动扩缩容) kubectl autoscale deploy/nginx --min=2 --max=10 --cpu-percent=80

三、调试与诊断

命令 类别 说明 使用示例
kubectl logs 日志查看 实时追踪容器日志 kubectl logs -f nginx-pod --tail=100 实时查看日志
kubectl exec 容器操作 进入容器执行命令 kubectl exec -it nginx-pod -- /bin/bash 进入 Shell
kubectl port-forward 本地调试 端口转发到 Pod kubectl port-forward svc/nginx 8080:80 本地访问服务
kubectl top 资源监控 查看节点/Pod 资源利用率(需 Metrics Server) kubectl top nodes 监控节点 CPU/内存

四、节点与集群维护

命令 类别 说明 使用示例
kubectl cordon 节点维护 标记节点不可调度 kubectl cordon node-01 隔离节点
kubectl drain 安全驱逐 驱逐节点 Pod(准备维护) kubectl drain node-01 --ignore-daemonsets 清空节点
kubectl taint 调度控制 为节点添加污点 kubectl taint nodes node-01 env=prod:NoSchedule
kubectl cluster-info 集群状态 查看集群核心服务地址 kubectl cluster-info 检查 API Server 状态

五、配置与权限管理

命令 类别 说明 使用示例
kubectl config 上下文管理 切换多集群配置 kubectl config use-context prod 切换生产集群
kubectl auth can-i 权限验证 检查 RBAC 权限 kubectl auth can-i delete pods --as=system:serviceaccount:default:test

六、高阶操作

命令 类别 说明 使用示例
kubectl patch 字段更新 热更新资源字段(无需替换完整 YAML) kubectl patch deployment nginx -p '{"spec":{"replicas":3}}'
kubectl label 元数据管理 为资源添加标签 kubectl label pods nginx-pod env=prod 标记生产环境

七、详细命令示例与说明

7.1. 基础命令

kubectl get - 列出资源

bash 复制代码
# 列出所有命名空间的Pod
kubectl get pods --all-namespaces

# 列出默认命名空间的Deployment
kubectl get deployments

# 列出节点信息
kubectl get nodes -o wide

# 以yaml格式列出Pod信息
kubectl get pod nginx-pod -o yaml

kubectl describe - 显示资源详细信息

bash 复制代码
# 描述Pod详情
kubectl describe pod nginx-pod

# 描述节点详情
kubectl describe node worker-node-1

# 描述Service详情
kubectl describe service nginx-service

kubectl create - 创建资源

bash 复制代码
# 通过YAML文件创建资源
kubectl create -f nginx-deployment.yaml

# 创建命名空间
kubectl create namespace test-ns

# 从docker镜像创建Deployment
kubectl create deployment nginx --image=nginx:1.20

kubectl apply - 应用配置

bash 复制代码
# 应用YAML配置(创建或更新)
kubectl apply -f nginx-deployment.yaml

# 应用目录下的所有配置文件
kubectl apply -f ./manifests/

kubectl delete - 删除资源

bash 复制代码
# 删除Pod
kubectl delete pod nginx-pod

# 通过标签删除资源
kubectl delete pods -l app=nginx

# 删除命名空间及其所有资源
kubectl delete namespace test-ns --force

7.2. 故障排查命令

kubectl logs - 查看日志

bash 复制代码
# 查看Pod日志
kubectl logs nginx-pod

# 实时查看日志
kubectl logs -f nginx-pod

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

# 查看之前崩溃的容器日志
kubectl logs -p nginx-pod

kubectl exec - 在容器中执行命令

bash 复制代码
# 进入Pod的交互式shell
kubectl exec -it nginx-pod -- /bin/bash

# 在Pod中执行简单命令
kubectl exec nginx-pod -- ls /etc/nginx

# 在指定容器中执行命令
kubectl exec -it nginx-pod -c nginx-container -- /bin/bash

kubectl port-forward - 端口转发

bash 复制代码
# 将本地8080端口转发到Pod的80端口
kubectl port-forward nginx-pod 8080:80

# 转发到Service
kubectl port-forward service/nginx-service 8080:80

# 在后台运行端口转发
kubectl port-forward nginx-pod 8080:80 &

kubectl top - 资源使用统计

bash 复制代码
# 查看节点资源使用情况
kubectl top nodes

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

# 查看指定命名空间的Pod资源使用
kubectl top pods -n kube-system

kubectl cp - 文件拷贝

bash 复制代码
# 从容器拷贝文件到本地
kubectl cp nginx-pod:/etc/nginx/nginx.conf ./nginx.conf

# 从本地拷贝文件到容器
kubectl cp ./config.txt nginx-pod:/tmp/config.txt

# 拷贝到指定容器
kubectl cp ./file.txt nginx-pod:/tmp/file.txt -c nginx-container

7.3.资源配置命令

kubectl edit - 编辑资源

bash 复制代码
# 编辑Deployment
kubectl edit deployment nginx-deployment

# 编辑指定命名空间的资源
kubectl edit deployment nginx -n production

# 使用特定编辑器
KUBE_EDITOR="vim" kubectl edit deployment nginx

kubectl scale - 扩缩容

bash 复制代码
# 扩展Deployment副本数
kubectl scale --replicas=5 deployment/nginx-deployment

# 基于当前副本数进行扩展
kubectl scale --current-replicas=3 --replicas=5 deployment/nginx-deployment

kubectl set - 配置资源参数

bash 复制代码
# 更新容器镜像
kubectl set image deployment/nginx nginx=nginx:1.21

# 设置环境变量
kubectl set env deployment/nginx DEBUG=true

# 更新资源限制
kubectl set resources deployment/nginx -c=nginx --limits=cpu=200m,memory=512Mi

kubectl patch - 部分更新资源

bash 复制代码
# 更新容器镜像
kubectl patch pod nginx -p '{"spec":{"containers":[{"name":"nginx","image":"nginx:1.21"}]}}'

# 添加注解
kubectl patch deployment nginx -p '{"metadata":{"annotations":{"version":"v2"}}}'

kubectl rollout - 部署管理

bash 复制代码
# 查看部署状态
kubectl rollout status deployment/nginx

# 回滚部署
kubectl rollout undo deployment/nginx

# 查看部署历史
kubectl rollout history deployment/nginx

# 重启部署(触发滚动更新)
kubectl rollout restart deployment/nginx

7.4. 集群管理命令

kubectl cluster-info - 集群信息

bash 复制代码
# 显示集群基本信息
kubectl cluster-info

# 显示详细集群信息
kubectl cluster-info dump

kubectl api-resources - API资源查询

bash 复制代码
# 列出所有API资源
kubectl api-resources

# 显示资源的API版本
kubectl api-resources --api-group=apps

kubectl config - 配置管理

bash 复制代码
# 显示当前上下文
kubectl config current-context

# 切换上下文
kubectl config use-context production-cluster

# 查看配置
kubectl config view

kubectl auth - 权限检查

bash 复制代码
# 检查当前用户是否有创建Pod的权限
kubectl auth can-i create pods

# 检查特定用户权限
kubectl auth can-i list deployments --as=system:serviceaccount:default:default

kubectl explain - 资源文档

bash 复制代码
# 查看Pod资源的文档
kubectl explain pods

# 查看Pod的spec字段文档
kubectl explain pods.spec

# 查看容器字段文档
kubectl explain pods.spec.containers

7.5. 实用技巧与最佳实践

  • 使用别名:为常用命令设置别名,如 alias k='kubectl'
  • 自动补全:启用kubectl自动补全功能提高效率
  • 使用 -o wide/yaml/json:获取更详细或特定格式的输出
  • 标签选择器:使用 -l 参数通过标签筛选资源
  • 跨命名空间操作:使用 -n 或 --all-namespaces 管理不同命名空间的资源

"人的一生会经历很多痛苦,但回头想想,都是传奇"。


相关推荐
1024find3 小时前
Spark on k8s部署
大数据·运维·容器·spark·kubernetes
kura_tsuki4 小时前
[Docker集群] Docker 容器入门
运维·docker·容器
能不能别报错16 小时前
K8s学习笔记(十六) 探针(Probe)
笔记·学习·kubernetes
能不能别报错17 小时前
K8s学习笔记(十四) DaemonSet
笔记·学习·kubernetes
火星MARK19 小时前
k8s面试题
容器·面试·kubernetes
Serverless社区20 小时前
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
阿里云·云原生·serverless·函数计算
赵渝强老师20 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
能不能别报错1 天前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
稚辉君.MCA_P8_Java1 天前
kafka解决了什么问题?mmap 和sendfile
java·spring boot·分布式·kafka·kubernetes
乄bluefox1 天前
保姆级docker部署nacos集群
java·docker·容器