现在需要掌握 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 <命名空间>
六、常用快捷技巧
-
别名(简化命令) :
bash# 添加到 ~/.bashrc 永久生效 alias k='kubectl' alias kgp='kubectl get pods' alias kgpa='kubectl get pods -A' alias kdp='kubectl describe pod' -
输出格式 :
bash# 只输出 Pod 名称 kubectl get pods -n kube-system -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' # 输出 yaml 格式 kubectl get pod <Pod名> -n <命名空间> -o yaml
总结
- 核心排查命令 :
kubectl get(查看资源)、kubectl describe(查详细信息)、kubectl logs(查 Pod 日志)、kubectl exec(进 Pod 调试)。 - 日常操作命令 :
kubectl apply(创建/更新资源)、kubectl delete(删除资源)、kubectl scale(扩缩容)。 - 节点问题排查 :优先用
kubectl get node+kubectl describe node+journalctl -u kubelet组合定位问题。