IBM Cloud Docs
调试应用程序部署

调试应用程序部署

虚拟私有云 经典基础架构

复查您可用于调试应用程序部署并查找失败根本原因的选项。

开始之前,请确保您已为部署应用程序的命名空间设置了 "作家或 "经理""IBM CloudIAM 服务访问角色

  1. 确保查看 可能需要修改应用程序的常见方案,以便可以在 Red Hat OpenShift 集群上部署这些应用程序。

  2. 通过运行 describe 命令,在服务或部署资源中查找异常情况。

    oc describe service <service_name>
    
  3. 检查容器是否卡在 ContainerCreating 状态

  4. 检查集群是否处于 Critical 状态。 如果集群处于 Critical 状态,请检查防火墙规则,并验证主节点是否能与工作程序节点进行通信。

  5. 验证该服务是否正在侦听正确的端口。

    1. 获取 pod 的名称。
      oc get pods
      
    2. 登录到容器。
      oc exec -it <pod_name> -- /bin/bash
      
    3. 从容器中 Curl 应用程序。 如果该端口不可访问,那么该服务可能未在侦听正确的端口,或者应用程序可能存在问题。 使用正确的端口更新服务的配置文件,并重新部署或调查应用程序的潜在问题。
      curl localhost: <port>
      
  6. 验证服务是否已正确链接到 Pod。

    1. 获取 pod 的名称。
      oc get pods
      
    2. 登录到容器。
      oc exec -it <pod_name> -- /bin/bash
      
    3. Curl 服务的集群 IP 地址和端口。
      curl <cluster_IP>:<port>
      
    4. 如果 IP 地址和端口不可访问,请查看服务的端点。
      • 如果没有列出任何端点,说明服务的选择器与 pod 不匹配。 例如,应用程序部署可能具有标签 app=foo,但服务可能具有选择器 run=foo
      • 如果列出了端点,请查看服务上的“目标端口”字段,并确保目标端口与用于这些 pod 的目标端口相同。 例如,应用程序可能侦听端口 9080,但服务可能侦听端口 80。
  7. 对于 Ingress 服务,请验证可从集群内访问该服务。

    1. 获取 pod 的名称。
      oc get pods
      
    2. 登录到容器。
      oc exec -it <pod_name> -- /bin/bash
      
    3. Curl 为 Ingress 服务指定的 URL。 如果该 URL 不可访问,请检查集群和外部端点之间是否存在防火墙问题。
      curl <host_name>.<domain>