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 组合定位问题。
相关推荐
脑子加油站3 天前
K8S-Ingress资源对象
算法·贪心算法·k8s
~黄夫人~5 天前
Kubernetes 入门到实战:概念详解 + kubeadm 安装 + 节点克隆全流程
linux·运维·学习·k8s·集群
yunson_Liu11 天前
aws EKS集群pvc存储扩容
k8s·aws
张32314 天前
k8s etcd备份恢复
数据库·k8s·etcd
脑子加油站16 天前
kubernetes安装部署流程
k8s·安全架构
SilentSamsara16 天前
Kubernetes 网络模型:CNI 插件与 Pod 间通信的底层实现
网络·云原生·容器·架构·kubernetes·k8s
久绊A17 天前
在K8s中构建Apache服务的弹性伸缩防线
k8s
梵得儿SHI18 天前
SpringCloud 生产级落地:Docker 容器化 + K8s 编排部署全攻略(含完整 yaml + 避坑指南)
docker·云原生·kubernetes·k8s·springcloud·微服务部署·java 后端
Minla20 天前
kubectl常用命令别名设置(linux|windows)
linux·运维·服务器·k8s
SilentSamsara20 天前
etcd 运维:数据一致性、备份恢复与性能调优
运维·服务器·数据库·kubernetes·kubectl·k8s·etcd