调试应用程序部署
虚拟私有云 经典基础架构
复查您可用于调试应用程序部署并查找失败根本原因的选项。
开始之前,请确保您已为部署应用程序的命名空间设置了 "作家或 "经理""IBM CloudIAM 服务访问角色。
-
确保查看 可能需要修改应用程序的常见方案,以便可以在 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 的名称。