Kubernetes 核心命令速查手册:运维与开发必备
本文整理了Kubernetes集群运维的实用命令集锦,涵盖8大核心场景:1)集群基础信息查看;2)Pod生命周期管理;3)服务与网络配置;4)存储与配置管理;5)故障排查方法;6)性能监控优化;7)高级运维技巧;8)命令行效率工具。重点包括节点状态查询、Pod调试、日志分析、网络连通性测试、资源监控等高频操作,并提供了批量处理、安全审计、集群维护等进阶技巧。每个命令均标注适用场景,可作为K8s运维
本文整理了Kubernetes集群运维的实用命令集锦,涵盖8大核心场景:1)集群基础信息查看;2)Pod生命周期管理;3)服务与网络配置;4)存储与配置管理;5)故障排查方法;6)性能监控优化;7)高级运维技巧;8)命令行效率工具。重点包括节点状态查询、Pod调试、日志分析、网络连通性测试、资源监控等高频操作,并提供了批量处理、安全审计、集群维护等进阶技巧。每个命令均标注适用场景,可作为K8s运维的速查手册,帮助管理员快速定位和解决集群问题。
一、基础集群信息查看
1.集群状态总览
# 查看集群信息
kubectl cluster-info
# 查看节点状态
kubectl get nodes -o wide
# 查看节点详细信息
kubectl describe node <node-name>
# 查看集群资源使用情况
kubectl top nodes
kubectl top pods --all-namespaces
2.命名空间管理
# 查看所有命名空间
kubectl get namespaces
# 创建命名空间
kubectl create namespace <namespace-name>
# 删除命名空间(谨慎操作)
kubectl delete namespace <namespace-name>
# 设置默认命名空间
kubectl config set-context --current --namespace=<namespace-name>
二、Pod 生命周期管理
pod基础管理详细文档请参考:Kubernetes 从入门到精通-pod基础管理
1.Pod 基础操作
# 查看所有 Pod
kubectl get pods --all-namespaces
kubectl get pods -A
# 查看指定命名空间的 Pod
kubectl get pods -n <namespace>
# 查看所有命令空间的pod并查看路由的节点
kubectl get pods -A -o wide
# 实时监控 Pod 状态变化
kubectl get pods -w
# 查看 Pod 详细信息
kubectl describe pod <pod-name> -n <namespace>
# 删除 Pod
kubectl delete pod <pod-name> -n <namespace>
# 强制删除卡住的 Pod
kubectl delete pod <pod-name> --grace-period=0 --force
#获取更多查看帮助信息
kubectl get pods --help
kubectl delete pods --help
2.Pod 高级查询
# 按标签选择器查询
kubectl get pods -l app=nginx
# 按字段选择器查询
kubectl get pods --field-selector status.phase=Running
# 查看 Pod 的 YAML 配置
kubectl get pod <pod-name> -o yaml
# 查看 Pod 资源使用情况
kubectl top pod <pod-name>
# 查看所有容器状态
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\n"}{end}'
#按创建时间排序 快速找到新部署应用
kubectl get pods --sort-by=.metadata.creationTimestamp
三、服务与网络管理
1.Service 服务管理
service详细文档请参考:Kubernetes从入门到精通-服务发现Service
# 查看所有服务
kubectl get services --all-namespaces
kubectl get service -A
# 查看服务详细信息
kubectl describe service <service-name>
# 查看服务端点
kubectl get endpoints <service-name>
# 临时端口转发(调试神器)
kubectl port-forward pod/<pod-name> 8080:80
kubectl port-forward service/<service-name> 8080:80
# 查看服务的选择器匹配的 Pod
kubectl get pods -l <service-selector>
2.Ingress 管理
service详细文档请参考:Kubernetes 之Ingress 从基础到实战全解析
# 查看 Ingress 规则
kubectl get ingress -A
kubectl get ingress --all-namespaces
# 查看 Ingress 详细配置
kubectl describe ingress <ingress-name>
# 查看 Ingress 控制器日志
kubectl logs -n ingress-nginx deployment/nginx-ingress-controller
3.网络策略与排查
# 查看网络策略
kubectl get networkpolicies -A
kubectl get networkpolicies --all-namespaces
# 测试 Pod 间网络连通性
kubectl exec -it <pod-name> -- ping <target-ip>
kubectl exec -it <pod-name> -- nslookup <service-name>
# 查看 DNS 配置
kubectl exec -it <pod-name> -- cat /etc/resolv.conf
四、存储与配置管理
1.ConfigMap 和 Secret
ConfigMap 和 Secret详细文档请参考:ConfigMap 与 Secret 核心机制
# 查看配置映射
kubectl get configmaps -A
# 查看 ConfigMap 内容
kubectl describe configmap <configmap-name>
kubectl get configmap <configmap-name> -o yaml
# 创建 ConfigMap
kubectl create configmap <name> --from-file=<file-path>
kubectl create configmap <name> --from-literal=key=value
# 查看密钥
kubectl get secrets -A
# 查看 Secret 内容(Base64 解码)
kubectl get secret <secret-name> -o jsonpath='{.data.password}' | base64 -d
2.持久化存储
持久化存储详细文档请参考:Kubernetes持久卷PV、PVC与动态存储类StorageClass实战
# 查看持久卷
kubectl get pv
# 查看持久卷声明
kubectl get pvc -A
# 查看存储类
kubectl get storageclass
# 查看卷详细信息
kubectl describe pv <pv-name>
kubectl describe pvc <pvc-name>
# 查看帮助信息
kubectl get sc --help
五、故障排查神器
1.故障定位步骤
- 先看 Pod 状态:
kubectl get pods 再看事件:kubectl describe pod <pod-name>查看日志:kubectl logs <pod-name>最后进容器调试:kubectl exec -it <pod-name> -- /bin/bash
2.日志查看与分析
# 查看 Pod 日志
kubectl logs <pod-name> -n <namespace>
# 查看多容器 Pod 的特定容器日志
kubectl logs <pod-name> -c <container-name>
# 实时跟踪日志
kubectl logs -f <pod-name>
# 查看之前崩溃容器的日志
kubectl logs <pod-name> --previous
# 查看最近指定时间的日志
kubectl logs <pod-name> --since=1h
kubectl logs <pod-name> --since-time=2024-01-01T00:00:00Z
# 导出所有 Pod 日志
for pod in $(kubectl get pods -o name); do
kubectl logs $pod > ${pod##*/}.log 2>&1
done
3.容器调试
# 进入容器 Shell
kubectl exec -it <pod-name> -- /bin/bash
kubectl exec -it <pod-name> -- /bin/sh
# 在多容器 Pod 中指定容器
kubectl exec -it <pod-name> -c <container-name> -- /bin/bash
# 复制文件到/从容器
kubectl cp <local-file> <pod-name>:<container-path>
kubectl cp <pod-name>:<container-path> <local-file>
# 临时运行调试容器
kubectl run debug-pod --rm -it --image=busybox -- /bin/sh
# 在现有网络命名空间中运行调试容器
kubectl debug <pod-name> -it --image=nicolaka/netshoot
4.事件与状态分析
# 查看集群事件
kubectl get events --sort-by='.lastTimestamp'
# 查看特定资源的事件
kubectl describe <resource-type> <resource-name>
# 监控资源变化
kubectl get pods -w
kubectl get events -w
# 查看资源使用情况
kubectl describe node <node-name> | grep -A 5 "Allocated resources"
六、性能监控与优化
1.资源监控
# 查看节点资源使用
kubectl top nodes
# 查看 Pod 资源使用
kubectl top pods -A
# 查看特定命名空间资源使用
kubectl top pods -n <namespace>
# 按 CPU 使用率排序
kubectl top pods --sort-by=cpu
# 按内存使用率排序
kubectl top pods --sort-by=memory
2.扩缩容管理
# 手动扩缩容 Deployment
kubectl scale deployment <deployment-name> --replicas=5
# 查看 HPA(水平自动扩缩容)
kubectl get hpa
# 查看 VPA(垂直自动扩缩容)
kubectl get vpa
# 查看 Deployment 滚动更新状态
kubectl rollout status deployment/<deployment-name>
# 查看滚动更新历史
kubectl rollout history deployment/<deployment-name>
# 回滚到上一个版本
kubectl rollout undo deployment/<deployment-name>
3.资源配额管理
# 查看资源配额
kubectl get resourcequota -A
# 查看 LimitRange
kubectl get limitrange -A
# 查看资源配额详情
kubectl describe resourcequota <quota-name>
七、高级运维技巧
1.批量操作与自动化
# 批量删除状态为 Evicted 的 Pod
kubectl get pods -A | grep Evicted | awk '{print $1, $2}'| xargs -n2 kubectl delete pod -n
# 批量重启所有 Deployment
kubectl get deployments -o name | xargs -I {} kubectl rollout restart {}
# 批量获取所有 Pod 的镜像信息
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'
# 查找没有设置资源限制的 Pod
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.containers[].resources.limits == null) | .metadata.name'
2.安全与权限管理
# 查看当前用户权限
kubectl auth can-i --list
# 检查特定用户权限
kubectl auth can-i create pods --as=<username>
# 查看 RBAC 角色
kubectl get roles,rolebindings -A
kubectl get clusterroles,clusterrolebindings
# 查看服务账户
kubectl get serviceaccounts -A
# 查看安全策略
kubectl get podsecuritypolicies
3.集群维护与备份
# 驱逐节点(维护前)
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
# 标记节点不可调度
kubectl cordon <node-name>
# 恢复节点调度
kubectl uncordon <node-name>
# 导出资源配置(备份)
kubectl get all -A -o yaml > cluster-backup.yaml
# 导出特定资源类型
kubectl get configmaps --all-namespaces -o yaml > configmaps-backup.yaml
kubectl get secrets --all-namespaces -o yaml > secrets-backup.yaml
4.性能调优命令
# 查看集群组件状态
kubectl get componentstatuses
# 查看 API Server 指标
kubectl get --raw /metrics
# 查看调度器队列
kubectl get events --field-selector reason=FailedScheduling
# 分析 Pod 启动时间
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,START_TIME:.status.startTime,NODE:.spec.nodeName
八、实用技巧锦囊
1.命令行优化
# 设置别名提高效率
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgn='kubectl get nodes'
alias kdp='kubectl describe pod'
alias kl='kubectl logs'
2.输出格式化
# JSON 输出
kubectl get pods -o json
# YAML 输出
kubectl get pods -o yaml
# 自定义列输出
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
# 使用 JSONPath 提取特定字段
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
# 格式化输出(需要 jq)
kubectl get pods -o json | jq '.items[] | {name: .metadata.name, status: .status.phase}'
本文整理了Kubernetes集群运维的实用命令集锦,每个命令均标注适用场景,可作为K8s运维的速查手册,帮助管理员快速定位和解决集群问题。
更多推荐




所有评论(0)