kubectl 常用命令

现在需要掌握 Kubernetes 中最核心、最常用的 kubectl 基础命令,这些命令是日常管理 K8s 集群的必备知识

一、集群/节点相关命令(解决你之前 Node NotReady 问题常用)

1. 查看集群信息
bash 复制代码
# 查看集群版本(客户端+服务端)
kubectl version

# 查看集群整体状态
kubectl cluster-info

# 查看所有节点(核心命令)
kubectl get nodes
# 查看节点详细信息(排查 NotReady 关键)
kubectl describe node <节点名>  # 例:kubectl describe node localhost.localdomain
# 只显示节点名称和状态
kubectl get nodes -o custom-columns=NAME:.metadata.name,STATUS:.status.conditions[-1].status
2. 节点管理(慎用)
bash 复制代码
# 标记节点不可调度(维护时用)
kubectl cordon <节点名>
# 取消不可调度
kubectl uncordon <节点名>
# 驱逐节点上的所有 Pod(维护前)
kubectl drain <节点名> --ignore-daemonsets --force

二、Pod 相关命令(最常用)

1. 查看 Pod
bash 复制代码
# 查看当前命名空间所有 Pod
kubectl get pods
# 查看指定命名空间 Pod(例:kube-system)
kubectl get pods -n kube-system
# 查看所有命名空间 Pod
kubectl get pods -A
# 查看 Pod 详细信息(排查 Pod 异常)
kubectl describe pod <Pod名> -n <命名空间>
# 查看 Pod 标签、IP 等精简信息
kubectl get pods -o wide
2. Pod 操作
bash 复制代码
# 创建 Pod(从 yaml 文件)
kubectl apply -f <yaml文件>
# 删除 Pod
kubectl delete pod <Pod名> -n <命名空间>
# 强制删除卡住的 Pod
kubectl delete pod <Pod名> -n <命名空间> --force --grace-period=0
# 查看 Pod 日志(排查 Pod 报错核心)
kubectl logs <Pod名> -n <命名空间>
# 实时跟踪日志(类似 tail -f)
kubectl logs <Pod名> -n <命名空间> -f
# 进入 Pod 内部(类似 ssh)
kubectl exec -it <Pod名> -n <命名空间> -- /bin/bash
# 复制文件到/从 Pod
kubectl cp <本地文件> <命名空间>/<Pod名>:<Pod路径>
kubectl cp <命名空间>/<Pod名>:<Pod路径> <本地文件>

三、命名空间(Namespace)相关

bash 复制代码
# 查看所有命名空间
kubectl get ns
# 创建命名空间
kubectl create ns <命名空间名>
# 删除命名空间(会删除该空间下所有资源)
kubectl delete ns <命名空间名>
# 设置默认命名空间(避免每次加 -n)
kubectl config set-context --current --namespace=<命名空间名>

四、Deployment/Service 相关(部署应用常用)

1. Deployment(无状态应用部署)
bash 复制代码
# 查看 Deployment
kubectl get deploy -n <命名空间>
# 查看 Deployment 详细信息
kubectl describe deploy <Deployment名> -n <命名空间>
# 创建 Deployment
kubectl apply -f <deployment.yaml>
# 扩缩容 Deployment
kubectl scale deploy <Deployment名> --replicas=<数量> -n <命名空间>
# 重启 Deployment(更新配置后)
kubectl rollout restart deploy <Deployment名> -n <命名空间>
# 删除 Deployment
kubectl delete deploy <Deployment名> -n <命名空间>
2. Service(暴露应用)
bash 复制代码
# 查看 Service
kubectl get svc -n <命名空间>
# 查看 Service 详细信息
kubectl describe svc <Service名> -n <命名空间>
# 创建 Service
kubectl apply -f <service.yaml>
# 删除 Service
kubectl delete svc <Service名> -n <命名空间>
# 快速创建 NodePort 类型 Service(临时测试)
kubectl expose deploy <Deployment名> --type=NodePort --port=<端口> -n <命名空间>

五、配置相关

bash 复制代码
# 查看 kubectl 配置(集群、上下文、用户)
kubectl config view
# 查看当前上下文
kubectl config current-context
# 导出资源配置(备份/修改用)
kubectl get deploy <Deployment名> -n <命名空间> -o yaml > deploy-backup.yaml
# 编辑资源(直接修改集群中配置)
kubectl edit deploy <Deployment名> -n <命名空间>

六、常用快捷技巧

  1. 别名(简化命令)

    bash 复制代码
    # 添加到 ~/.bashrc 永久生效
    alias k='kubectl'
    alias kgp='kubectl get pods'
    alias kgpa='kubectl get pods -A'
    alias kdp='kubectl describe pod'
  2. 输出格式

    bash 复制代码
    # 只输出 Pod 名称
    kubectl get pods -n kube-system -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    # 输出 yaml 格式
    kubectl get pod <Pod名> -n <命名空间> -o yaml

总结

  1. 核心排查命令kubectl get(查看资源)、kubectl describe(查详细信息)、kubectl logs(查 Pod 日志)、kubectl exec(进 Pod 调试)。
  2. 日常操作命令kubectl apply(创建/更新资源)、kubectl delete(删除资源)、kubectl scale(扩缩容)。
  3. 节点问题排查 :优先用 kubectl get node + kubectl describe node + journalctl -u kubelet 组合定位问题。
相关推荐
菜地里的小菜鸟12 小时前
kubectl debug
k8s·kubectldebug
腾飞开源3 天前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
小匠石钧知5 天前
02_在多个RockyLinux10虚拟机上安装k8s集群
云原生·容器·kubernetes·k8s
ShirleyWang01211 天前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s
spider_xcxc11 天前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s
ShirleyWang01211 天前
Day02 K3s NGF(Nginx Gateway Fabric)单 Worker 环境网关更新与故障处置 SOP
linux·服务器·python·k8s·k3s
ShirleyWang01211 天前
DAY01 K3s 私有化部署排障复盘与 SOP
linux·服务器·k8s·k3s·企业部署
XUHUOJUN15 天前
AKS 不是安装在 Windows Server 上,而是运行在 Windows Server 之上的 Azure 平台能力
windows·架构·k8s·azure local·azure stack
Geek-Chow15 天前
Connecting kubectl to a Private EKS Cluster Over an Internal Domain
kubernetes·k8s·aws
spider_xcxc17 天前
Docker Compose 容器通信详解:同一个 Compose 文件才能互通吗?
docker·容器·k8s·容器化·容器网络