應用程式部署除錯

虛擬私有雲 經典基礎架構

請檢閱您既有的選項以進行應用程式部署除錯,並找出失敗的主要原因。

開始之前,請確保您擁有部署應用程式的命名空間的 WriterManager IBM Cloud IAM 服務存取角色

  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>