调试应用程序部署
虚拟私有云 传统基础设施
复查您可用于调试应用程序部署并查找失败根本原因的选项。
开始之前,请确保您拥有部署应用程序的命名空间的 Writer 或 Manager IBM Cloud IAM 服务访问角色。
-
确保查看 可能需要修改应用程序的常见方案,以便可以在 Red Hat OpenShift 集群上部署这些应用程序。
-
通过运行
describe命令,在服务或部署资源中查找异常情况。oc describe service <service_name> -
检查集群是否处于
Critical状态。 如果集群处于Critical状态,请检查防火墙规则,并验证主节点是否能与工作程序节点进行通信。 -
验证该服务是否正在侦听正确的端口。
- 获取 pod 的名称。
oc get pods - 登录到容器。
oc exec -it <pod_name> -- /bin/bash - 从容器中 Curl 应用程序。 如果该端口不可访问,那么该服务可能未在侦听正确的端口,或者应用程序可能存在问题。 使用正确的端口更新服务的配置文件并重新部署,或调查应用程序的潜在问题。
curl localhost:<port>
- 获取 pod 的名称。
-
验证服务是否已正确链接到 Pod。
- 获取 pod 的名称。
oc get pods - 登录到容器。
oc exec -it <pod_name> -- /bin/bash - Curl 服务的集群 IP 地址和端口。
curl <cluster_IP>:<port> - 如果 IP 地址和端口不可访问,请查看服务的端点。
- 如果没有列出任何端点,说明服务的选择器与 pod 不匹配。 例如,应用程序部署可能具有标签
app=foo,但服务可能具有选择器run=foo。 - 如果列出了端点,请查看服务上的“目标端口”字段,并确保目标端口与用于这些 pod 的目标端口相同。 例如,应用程序可能侦听端口 9080,但服务可能侦听端口 80。
- 如果没有列出任何端点,说明服务的选择器与 pod 不匹配。 例如,应用程序部署可能具有标签
- 获取 pod 的名称。
-
对于 Ingress 服务,请验证可从集群内访问该服务。
- 获取 pod 的名称。
oc get pods - 登录到容器。
oc exec -it <pod_name> -- /bin/bash - Curl 为 Ingress 服务指定的 URL。 如果该 URL 不可访问,请检查集群和外部端点之间是否存在防火墙问题。
curl <host_name>.<domain>
- 获取 pod 的名称。