我有一個帶有自定義映像的 pod 的部署。執行后kubectl create -f deployment.yaml,這個 pod 開始運行。我看到一切都很好,它在kubectl的輸出中具有“正在運行”狀態。但是,我有一個啟動 Apache Tomcat 的初始化腳本,它需要大約 40-45 秒來執行它并在內部啟動服務器。
我還使用 nginx 部署了負載均衡器。Nginx 通過 proxy_pass 將傳入請求重定向到 Apache Tomcat。當我將我的部署擴展為 2 個副本并關閉其中一個副本時,有時應用程式會卡住并凍結。
我覺得 k8s 的負載平衡作業不正常,k8s 正在嘗試使用 pod,它現在正在通過腳本初始化。
我如何告訴 k8s 部署中的 pod 尚未初始化并且在它完全啟動之前不要使用它?
uj5u.com熱心網友回復:
如果我理解正確,您的問題主要與應用程式未準備好接受請求有關,因為您的初始化腳本尚未完成。
對于這種情況,您可以輕松設定不同型別的探測器,例如活躍度和就緒度。這樣的解決方案會很有用,因為除非整個 pod 啟動并發出信號表明它處于活動狀態,否則您的應用程式不會被視為準備好接受請求。
您可以在這里閱讀更多相關資訊:https ://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534614.html
標籤:库伯内特斯
