Troubleshooting (10%)

244 阅读2分钟
原文链接: blog.kii.la

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 [排除应用程序失败]

show 检查可访问性

1
$  curl http://web-service-ip:node-port

检查服务状态

1
$ kubectl describe svc web-service

比较 POD 定义上的端点和 Selector

1
2
3
4
5
$ kubectl get pod 
$ kubectl describe pod web
$ kubectl logs web
$ kubectl logs web -f
$ kubectl logs web -f --previous

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.