應用程式部署除錯
虛擬私有雲 經典基礎架構
請檢閱您既有的選項以進行應用程式部署除錯,並找出失敗的主要原因。
開始之前,請確保您擁有部署應用程式的命名空間的 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 的名稱。