Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

39.3. 调试到 HTTP 服务的外部访问

如果您位于集群外的机器上,并且正在尝试访问集群提供的资源,则需要是一个在 pod 中运行的一种进程,侦听集群中的公共 IP 地址和"路由"该流量。OpenShift Container Platform 路由器 为 HTTP、HTTPS(使用 SNI)、WebSockets 或 TLS(使用 SNI)提供目的。

假设您无法从集群外访问 HTTP 服务,我们首先在有故障的机器的命令行中重现问题。Try:

curl -kv http://foo.example.com:8000/bar    # But replace the argument with your URL

如果有效,您是否从正确的位置重现错误?服务也可能会有一些正常工作的 pod,而有些 pod 则不行。因此,请跳至 第 39.4 节 “调试路由器” 部分。

如果失败,则让我们将 DNS 名称解析为 IP 地址(假设它还没有一个地址):

dig +short foo.example.com                  # But replace the hostname with yours

如果这没有提供 IP 地址,则此时应该对 DNS 进行故障排除,但这超出了本指南的范围。

重要

请确定您返回的 IP 地址是您期望运行该路由器的 IP 地址。如果没有,请修复您的 DNS。

接下来,使用 ping -c addresstracepath address 来检查是否可以到达路由器主机。可能无法响应 ICMP 数据包,在这种情况下,这些测试将失败,但路由器计算机可以访问。在这种情况下,尝试使用 telnet 命令直接访问路由器的端口:

telnet 1.2.3.4 8000

您可能会得到:

Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.

如果是这样,则会在 IP 地址上侦听端口。这很好。按 ctrl-],然后按 Enter 键,然后键入 close 以退出 telnet。移到 第 39.4 节 “调试路由器” 部分,以检查路由器上的其他内容。

或者可以得到:

Trying 1.2.3.4...
telnet: connect to address 1.2.3.4: Connection refused

告知我们路由器没有侦听该端口。有关如何配置路由器的更多指针,请参阅 第 39.4 节 “调试路由器” 部分。

或者看到:

Trying 1.2.3.4...
  telnet: connect to address 1.2.3.4: Connection timed out

告诉我们您无法与这个 IP 地址的任何通信。检查您的路由、防火墙以及您是否有路由器侦听该 IP 地址。要调试路由器,请查看 第 39.4 节 “调试路由器” 部分。对于 IP 路由和防火墙问题,这已超出本指南的理解情况。