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 组合定位问题。
相关推荐
岁岁种桃花儿2 天前
【K8s实战】从Ingress到Pod:微服务完整部署架构全解析
k8s
fanruitian4 天前
使用harbor搭建私有仓库
k8s·harbor
潞哥的博客4 天前
Ingress nginx退役,该怎么换,gateway api 上线
运维·gateway·k8s
Y.O.U..9 天前
Kubernetes-控制器介绍
k8s
大都督老师9 天前
配置 containerd 使用镜像加速器拉取 Docker Hub 镜像
容器·kubernetes·k8s
放寒假脚后跟v10 天前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s
孤岛悬城10 天前
57 Rancher管理平台
云计算·k8s
HehuaTang11 天前
K8s labels 与 annotations 区别
k8s