k8s常用的排查命令

1. 查看组件状态#kubectl get cs

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-1               Healthy   {"health":"true"}
etcd-2               Healthy   {"health":"true"}
etcd-0               Healthy   {"health":"true"}

2. 查看集群状态#kubectl cluster-info

Kubernetes master is running at https://10.45.1.1:6443
metrics-server is running at https://10.45.1.1:6443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://10.45.1.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

导出集群信息供排查
#kubectl cluster-info dump --namespace kube-system --output-directory=/path/to/cluster-state

3. 查看node状态#kubectl get node

NAME                            STATUS   ROLES                                           AGE     VERSION
c43k090101.cloud.k09    Ready    master,minio-0,ops1,prometheus,redis-0,worker   6d22h   v1.14.8-aliyun.1
c43k090108.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090109.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090110.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090111.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090112.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090113.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090114.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k090115.cloud.k09    Ready    worker                                          6d20h   v1.14.8-aliyun.1
c43k09012.cloud.k09     Ready    master,minio-1,prometheus,redis-1,worker        6d22h   v1.14.8-aliyun.1
c43k09108.cloud.k10.    Ready    master,minio-2,redis-2,worker                   6d22h   v1.14.8-aliyun.1

#kubectl describe node <node-name>

4. 查看pod#kubectl get pod -owide -A 查看所有命名空间的pod

#kubectl get pod -owide -n <namespace> 查看指定命名空间的pod
#kubectl get pod <pod-name> -oyaml -n <namespace> 查看pod定义及状态
#kubectl describe pod <pod-name> -n <namespace> 查看pod信息及event事件
#kubectl logs -f <pod-name> -n <namespace> -c <container-name> 查看pod日志

5. 查看svc

#kubectl get svc -owide -A 查看所有命名空间的svc
#kubectl get svc -owide -n <namespace> 查看指定命名空间的svc
#kubectl get svc <svc-name> -oyaml -n <namespace> 查看svc定义及状态
#kubectl describe svc <svc-name> -n <namespace> 查看svc信息,event及后端endpoint

6. 查看组件日志获取核心组件:

#kubectl get pod -l component=xxx -n kube-system (component:kube-apiserver/kube-controller-manager/kube-scheduler)

获取addon组件:
#kubectl get pod -l k8s-app=xxx -n kube-system (k8s-app:kube-dns/kube-proxy-master/kube-proxy-worker)

查看日志
#kubectl logs <pod-name> -n kube-system

查看上一次的log
#kubectl logs <pod-name> -n kube-system --previous

获取集群日志
#kubectl cluster-info dump --namespace default,kube-system,... --output-directory=/path/to/dump

7. kubelet日志#cd /cloud/app/kube-base/NodeDaemon#/kubelet/current/

#vim log/tianji/stderr
#vim log/tianji/stdout

8. 其他命令请参考

https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/
https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html​
<think>好的,我现在需要回答用户关于常用Kubernetes故障排除命令的问题。首先,用户提到了查找常用排查命令,所以我要整理出最常用的kubectl命令。 我记得kubectl get pods是查看Pod状态的基础命令,加上--all-namespaces可以查看所有命名空间的资源,这很重要,因为问题可能出在其他命名空间里。然后kubectl describe pod能显示详细信息,比如事件和配置错误,这对诊断具体问题很有帮助。 接下来是日志查看,kubectl logs <pod-name>是基本的,但有时候需要加上-f来实时跟踪日志,或者--previous查看之前容器的日志,特别是当Pod崩溃重启时。用户可能还会需要进入容器内部,所以kubectl exec -it <pod-name> -- /bin/sh也是必要的。 节点和集群状态方面,kubectl get nodes可以检查节点是否Ready,kubectl top查看资源使用情况,比如CPU和内存,这对性能问题排查有用。网络问题的话,kubectl get services和endpoints可以验证服务是否正确关联到Pod。 用户提供的引用里提到kubectl run创建临时Pod,这可以用来做网络测试,比如用busybox进行curl或nslookup。此外,kubectl cluster-info显示集群信息,可能帮助发现组件问题。 另外,事件监控kubectl get events --sort-by=.metadata.creationTimestamp可以按时间排序事件,找出异常。资源检查和YAML导出也是常用的,比如kubectl get deployments和kubectl get pod -o yaml > pod.yaml。 要确保这些命令覆盖了常见的故障场景,比如Pod启动失败、服务无法访问、资源不足等。同时,需要按照用户给的引用正确标注来源,比如引用[1]和引用[2]。最后生成相关问题,可能涉及命令的具体使用场景、网络问题排查方法、资源监控工具等。</think>### 常用Kubernetes故障排除命令列表 以下是Kubernetes集群故障排除的常用命令及场景说明: #### 1. **查看资源状态** - **查看Pod状态** ```bash kubectl get pods --all-namespaces -o wide ``` 检查Pod是否处于`Running`状态,异常状态如`CrashLoopBackOff`可能表示容器启动失败[^1]。 - **查看节点状态** ```bash kubectl get nodes ``` 确认所有节点状态为`Ready`,异常节点可能影响服务调度。 #### 2. **诊断Pod问题** - **查看Pod详细信息** ```bash kubectl describe pod <pod-name> -n <namespace> ``` 显示事件(Events)、容器状态和配置错误,例如镜像拉取失败或资源不足。 - **查看容器日志** ```bash kubectl logs <pod-name> -c <container-name> --tail=100 -f ``` 使用`-f`实时追踪日志,`--previous`查看已终止容器的日志。 #### 3. **网络与服务诊断** - **验证服务端点** ```bash kubectl get endpoints <service-name> ``` 检查服务是否关联到正确的Pod IP和端口。 - **临时Pod网络测试** ```bash kubectl run busybox --image=busybox --rm -it --restart=Never -- sh ``` 在临时Pod内执行`curl`或`nslookup`测试服务连通性[^2]。 #### 4. **集群级调试** - **查看集群信息** ```bash kubectl cluster-info ``` 检查控制平面组件(如API Server、DNS)是否正常运行[^3]。 - **查看资源使用情况** ```bash kubectl top nodes # 节点资源使用 kubectl top pods # Pod资源使用 ``` 快速定位CPU/内存过载问题。 #### 5. **高级排查工具** - **导出资源配置YAML** ```bash kubectl get pod <pod-name> -o yaml > pod.yaml ``` 分析资源配置是否符合预期。 - **查看事件时间线** ```bash kubectl get events --sort-by=.metadata.creationTimestamp ``` 按时间排序事件,识别异常操作或组件故障。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值