1

我正在使用Docker鏡像在Origin 3.1中創建應用程序。openshift pod失敗並重新啓動頻繁

每當我創建圖像時,新的pod被創建,但它會一次又一次地重新啓動,並最終將狀態設置爲「CrashLoopBackOff」。

我分析了pod的日誌,但它沒有提供任何錯誤,所有日誌數據與成功運行的應用程序的預期一致。因此,無法確定原因。

今天我在下面的鏈接中發現,它說「以root身份運行容器內的應用程序仍然存在風險,OpenShift不允許您在默認情況下執行此操作,而是將其作爲任意指定的用戶ID運行」。

What is CrashLoopBackOff status for openshift pods?

這裏我的形象是隻使用root用戶,怎樣做才能使這項工作?因爲日誌顯示沒有錯誤,但pod不斷重新啓動。

任何人都可以請幫助我這個。

+0

是否使用了''-p''或''--previous''標誌''OC logs'',看是否從以前的嘗試日誌開始莢說明了什麼?在這種情況下只查看最新情況可能不會導致您捕獲問題。你的應用程序是否會記錄到標準輸出,以便記錄日誌? –

回答

0

你看到了這一點,因爲你的圖像啓動的任何過程都不是一個長時間運行的過程,並且沒有發現TTY,並且容器只是退出並重復重新啓動,就openshift而言,這是一個「崩潰循環」。

你dockerfile以下提到:

入口點[ 「容器入口點」]

其實這個 「容器入口點」 幹什麼?

你需要檢查。

你使用-p或--previous標誌OC日誌,看看如果從以前的嘗試日誌開始莢顯示任何

+0

該容器入口點是標準OpenShift S2I助洗劑的一部分。它所做的只是設置一些環境變量並可能激活SCL包,然後執行由CMD定義的任何內容。這不應該是任何問題的根源。 –

+0

您好@Jaspreet,感謝您在這裏的回覆。其實我正在運行一個Play Java應用程序。下面是Dockerfile的內容: 入口點[「活化劑」,「開始」] 我嘗試使用-p日誌看到,但它並沒有顯示出任何錯誤。服務器啓動正常,但立即退出並一次又一次啓動整個構建過程,最終崩潰。雖然相同的Dockerfile在openshift之外只使用「碼頭運行」工作正常。任何想法在OpenShift中可能是什麼問題? – priyank

0

Red Hat的recommendation將使GID擁有的文件組爲0 - 容器中的用戶始終位於根組中。您將無法chown,但是您可以選擇性地公開要寫入的文件。

第二個選項: 爲了允許使用任何指定用戶或根(0)用戶打造OpenShift的圖像,你可以在項目的建設者服務帳戶添加(系統:serviceaccount ::生成器)到特權安全上下文約束(SCC)。或者,您可以允許所有圖像以任何用戶身份運行。

+0

您好,感謝這裏的響應,修改SCC後,我能夠建立從Dockerfile應用程序,它運行作爲根用戶,但現在的問題是容器被一次又一次重新開始而無需在日誌中給予任何錯誤,最後「CrashloopBackOff」狀態顯示。如何在openshift中以Daemon的身份運行容器?爲什麼它發生?任何關於此的指針都會非常有幫助。再次感謝! – priyank

0

你可以看到使用

kubectl logs <podname> -p 

日誌這應該給你,爲什麼莢失敗的錯誤。

+0

你好,謝謝,我查了一下使用「openshift KUBE日誌-p 」,但在日誌中沒有錯誤,因爲我昨天容器重新啓動218次未拋出任何錯誤。你能幫我嗎?再次感謝! – priyank

0

我能夠通過創建腳本「運行來解決這個.SH」與最終內容:

while :; do 
sleep 300 
done 

和Dockerfile:

ADD run.sh /run.sh 
RUN chmod +x /*.sh 
CMD ["/run.sh"] 

這樣它的作品,謝謝大家對指出的原因,這讓我找到第r esolution。但一個疑問,我仍然有原因的過程獲取openshift在這種情況下,只有,我曾嘗試在其中只是工作沒有腳本,則有睡眠罰款同樣的方式運行Tomcat服務器退出。