title: 服务可用性定位问题常用命令 author: Gamehu tags:
以下命令主要针对现场经常出现的安装失败、升级失败、补丁失败、服务不断重启、服务不可用几个场景:
确认环境信息
环境信息
# 操作系统版本
cat /etc/redhat-release # CentOS版本
cat /etc/openEuler-release # 欧拉版本
uname -r # 内核版本
cat /proc/version # 内核编译信息
hostnamectl # 查看完整的系统信息
# 系统基础信息
df -h # 磁盘空间
free -h # 内存使用
top # CPU和进程状态
netstat -ant # 网络连接
uptime # 系统负载
iostat -x 1 10 # 磁盘状态
# 进程分析
ps -ef | grep 进程名
pstree -p 进程ID
lsof -p 进程ID
# 分区及挂载
lsblk # 查看块设备
df -Th # 查看文件系统类型和空间
mount | grep -E "^/dev" # 查看挂载参数
# 磁盘空间
du -sh /* | sort -hr # 大文件目录排序
# 时间同步状态
chronyc sources -v
K8s集群状态
# K8s集群状态
systemctl status kubelet # kubelet是否正常
systemctl status docker # docker是否正常
systemctl status NetworkManager # 网络连接工具是否正常
kubectl cluster-info #查看集群信息
kubectl get nodes # kubelet集群节点
kubectl get po -A # 查看所以pod状态
kubectl get po -A -owide # 查看所以pod的ip和所在的node
kubectl describe node <node-name>
kubectl get events -n <namespace> #Kubernetes 事件日志
journalctl -u kubelet -f # 日志查看
cat /var/log/messages | grep xx # 日志查看
# 应用Pod状态
kubectl get pods -n <namespace> -o wide
ping pod_ip # 判断容器之间的联通性
kubectl describe <pod-name> -n <namespace>
kubectl exec -it <pod-name> -n <namespace> /bin/sh # 进入容器内部
kubectl logs <pod-name> -n <namespace>
# 集群资源状态
kubectl top nodes
kubectl top pods -n <namespace>
客户网络环境限制(可用端口、防火墙策略)
# 网络组件
ip link show
iptables -L
# DNS配置
cat /etc/resolv.conf
# 网络分析
curl url # 应用连通性
fping -c xx -p xx 目标IP或域名 # 基础连通性
ping <目标IP> # 基础连通性
telnet <IP> <端口> # 端口连通性
traceroute # 路由跟踪
tcpdump -i any port <端口> -w dump.pcap # 抓包分析
https://jimmysong.io/kubernetes-hndbaook/guide/using-kubectl.html https://kubernetes.io/zh-cn/docs/tasks/debug/_print/ https://cheat.sh/ https://kubernetes.io/docs/reference/kubectl/cheatsheet/ https://kubernetes.io/zh/docs/reference/kubectl/ https://docs.docker.com/engine/reference/run/