Troubleshooting(10%) [故障排除 占比 10%]
Kubernetes.io > Documentation > Reference > kubectl CLI > kube Cheat Sheet
Kubernetes.io > Documentation > Tasks > Monitor,Logging & Debugging > Determine the Reason for Pod Failure
Kubernetes.io > Documentation > Tasks > Monitor, Logging & Debugging > Application Introspection and Debugging
Kubernetes.io > Documentation > Tasks > Monitor, Logging & Debugging > Debug Services
Kubernetes.io > Documentation > Tasks > Monitor, Logging & Debugging > Troubleshoot Applications
Kubernetes.io > Documentation > Tasks > Monitor , Logging & Debugging > Troubleshoot Clusters
Troubleshoot application failure [排除应用程序失败]
|
|
检查服务状态
|
|
比较 POD 定义上的端点和 Selector
|
|
Troubleshoot control plane failure [控制台故障排除]
show
检查节点状态
$ kubectl get nodes
$ kubectl get pods
检查控制台 Pod
$ kubectl get pods -n kube-system
检查控制台 Service
$ service kube-apiserver status
$ service kube-controller-manager status
$ service kube-scheduler status
$ service kube-proxy status
$ service kubelet stats
检查 Service 日志
$ kubectl logs kube-apiserver-master -n kube-system
$ sudo journalctl -u kube-apiserver
Troubleshoot worker node failure [排除工作节点故障]
show
检查节点状态
$ kubectl get nodes
$ kubectl describe node <nodename>
$ top
$ df -h
$ service kubelet status
$ journalctl -uy kubelet -f
$ open ssl x509 -n /var/lib/kubelet/worker-1.crt -text
Troubleshoot networking [排除网络问题]
show
1. 检查是否可以从集群内部连接到服务的集群IP, 而不是从外部.2. 不要费心使用
ping 服务 IP 来确定服务是否可访问(请记住,服务的集群 IP 是一个虚拟 IP, ping 它永远不会起作用).3. 如果已经定义了
readiness probe , 请确保它是成功的. 否则 Pod 将不会成为服务的一部分.4. 要确认
Pod 是服务的一部分, 请使用 kubectl get endpoint 检查相应的 endpoint 对象.5. 如果您试图通过服务的
FQDN 或它的一部分(例如, myservice.mynamespace.svc.cluster.local 或者 myservice.mynamespace) 访问该服务. 如果无响应,请查看是否可以使用它的集群 IP 而不是 FQDN 来访问它.6. 检查您是否连接到服务的公开端口,而不是目标端口.
7. 尝试直连
Pod IP, 以确认您的 Pod 正在接受正确的端口上的连接.8. 如果您甚至不能通过
Pod IP 来访问您的应用, 请确保您的应用并没有绑定到 localhost.