服务是 Kubernetes的一个重要概念,也是让许多开发人员感到困扰的根源。许
多开发人员为了弄清楚无法通过服务IP或FQDN连接到他们的pod的原因花费了
大量时间。出于这个原因,了解一下如何排除服务故障是很有必要的:

  • 如果无法通过服务访问pod,应该根据下面的列表进行排查:
    首先,确保从集群内连接到服务的集群I,而不是从外部。
  • 不要通过ping服务P来判断服务是否可访问(请记住,服务的集群IP是虚
    拟IP,是无法ping通的)。
  • 如果已经定义了就绪探针,请确保它返回成功;否则该pod不会成为服务的
    一部分
  • 要确认某个容器是服务的一部分,请使用 kubect get endpoints来检
    查相应的端点对象。
  • 如果尝试通过FQDN或其中一部分来访问服务(例如, myservice.
    mynamespace.svc.cluster. 或者 local .myservice.mynamespace),
    并不起作用,请查看是否可以使用其集群IP而不是FQDN来访问服务
  • 检查是否连接到服务公开的端口,而不是目标端口。
  • 尝试直接连接到pod以确认pod正在接收正确端口上的连接。
  • 如果甚至无法通过pod的IP访问应用,请确保应用不是仅绑定到本地主机。

以上就是我经常用的K8s 服务故障排查思路, 这应该可以帮助解决大部分与服务相关的问题。