kubectl 常用命令

以下是 kubectl 常用命令的全面总结,适用于日常 Kubernetes 集群管理、故障排查和应用部署。


🔧 一、基础命令(8个核心命令)

命令 说明
kubectl create 创建资源(如 deployment、service)
kubectl get 获取资源列表(pod、deployment、service 等)
kubectl describe 查看资源详细信息(事件、状态、配置)
kubectl delete 删除资源
kubectl apply 应用 YAML 配置文件(创建或更新)
kubectl edit 编辑运行中的资源(直接修改)
kubectl logs 查看 Pod 日志
kubectl exec 进入 Pod 执行命令

📋 二、常用命令示例

kubectl 是 Kubernetes 的命令行工具,用于部署、管理、监控和故障排除 Kubernetes 集群中的应用。以下是 kubectl 的常用命令,按功能分类整理,方便日常使用:


一、基础信息查看 (Get)

# 查看所有命名空间下的 Pod
kubectl get pods -A

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

# 查看所有节点
kubectl get nodes

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

# 查看所有服务
kubectl get services -A

# 查看所有部署 (Deployments)
kubectl get deployments -A

# 查看所有副本集 (ReplicaSets)
kubectl get replicasets -A

# 查看所有 DaemonSets
kubectl get daemonsets -A

# 查看所有 StatefulSets
kubectl get statefulsets -A

# 查看所有 ConfigMaps 和 Secrets
kubectl get configmaps -A
kubectl get secrets -A

# 以宽格式查看(显示更多信息)
kubectl get pods -o wide

二、资源创建与应用

# 应用 YAML/JSON 文件(创建或更新资源)
kubectl apply -f <file.yaml>

# 创建 Deployment 或 Service 等资源(不推荐用于生产,建议用 apply)
kubectl create deployment <name> --image=<image>

# 从文件创建
kubectl create -f <file.yaml>

三、资源删除

# 删除 Pod(注意:Deployment 管理的 Pod 会被重建)
kubectl delete pod <pod-name> -n <namespace>

# 删除 Deployment
kubectl delete deployment <deployment-name> -n <namespace>

# 删除 Service
kubectl delete service <service-name> -n <namespace>

# 删除整个命名空间(慎用!会删除其中所有资源)
kubectl delete namespace <namespace-name>

# 通过标签删除资源
kubectl delete pods -l app=myapp -n <namespace>

四、查看资源详情与状态

# 查看 Pod 详细信息(包括事件、IP、容器等)
kubectl describe pod <pod-name> -n <namespace>

# 查看 Deployment 详情
kubectl describe deployment <deployment-name> -n <namespace>

# 查看节点详情
kubectl describe node <node-name>

五、日志与调试

# 查看 Pod 日志
kubectl logs <pod-name> -n <namespace>

# 查看指定容器的日志(多容器 Pod)
kubectl logs <pod-name> -c <container-name> -n <namespace>

# 实时查看日志(类似 tail -f)
kubectl logs -f <pod-name> -n <namespace>

# 查看上一个崩溃容器的日志
kubectl logs <pod-name> -p -n <namespace>

# 进入 Pod 容器(交互式 shell)
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash

# 在 Pod 中执行单条命令
kubectl exec <pod-name> -n <namespace> -- ls /tmp

六、集群与配置管理

# 查看当前上下文(context)
kubectl config current-context

# 列出所有上下文
kubectl config get-contexts

# 切换上下文
kubectl config use-context <context-name>

# 查看集群信息
kubectl cluster-info

# 查看 kubectl 配置
kubectl config view

七、扩展与滚动更新

# 扩展 Deployment 的副本数
kubectl scale deployment <deployment-name> --replicas=5 -n <namespace>

# 滚动更新镜像
kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n <namespace>

# 查看滚动更新状态
kubectl rollout status deployment/<deployment-name> -n <namespace>

# 查看发布历史
kubectl rollout history deployment/<deployment-name> -n <namespace>

# 回滚到上一个版本
kubectl rollout undo deployment/<deployment-name> -n <namespace>

# 回滚到指定版本
kubectl rollout undo deployment/<deployment-name> --to-revision=2 -n <namespace>

八、端口转发与代理

# 将本地端口映射到 Pod
kubectl port-forward pod/<pod-name> 8080:80 -n <namespace>

# 将本地端口映射到 Service
kubectl port-forward svc/<service-name> 8080:80 -n <namespace>

# 启动本地代理访问 Kubernetes API
kubectl proxy

九、其他实用命令

# 查看资源使用情况(CPU/Memory)
kubectl top nodes
kubectl top pods -n <namespace>

# 标记节点为不可调度(用于维护)
kubectl cordon <node-name>

# 解除不可调度状态
kubectl uncordon <node-name>

# 排空节点(驱逐所有 Pod)
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

# 临时禁止调度(drain 的轻量版)
kubectl taint node <node-name> key=value:NoSchedule

十、常用选项 (Flags)

  • -n <namespace>:指定命名空间
  • -A--all-namespaces:作用于所有命名空间
  • -l <label>:根据标签筛选资源
  • -o wide:显示更多列信息
  • -o yaml:以 YAML 格式输出
  • --dry-run=client:试运行(不实际执行)

目的 命令
查看 Pod kubectl get pods -A
查看日志 kubectl logs -f pod-name
进入容器 kubectl exec -it pod-name -- /bin/sh
查看详情 kubectl describe pod pod-name
回滚 kubectl rollout undo deploy/deploy-name
扩容 kubectl scale deploy/my-app --replicas=3
端口转发 kubectl port-forward svc/my-svc 8080:80

掌握这些命令,你已经可以应对 90% 的 Kubernetes 日常操作了!建议结合 kubectl --helpkubectl explain pod 等命令深入学习。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容