2017-09-15 99 views
0

Docker守護進程有時會在我們的木偶管理的服務器上崩潰。木偶默默無法重啓服務

如果發生這種情況,Puppet預計會恢復原狀,但未能這樣做,我想我知道爲什麼。從調試日誌,我可以看到木偶是這樣做的:

rc-service docker status 
rc-service docker start 

手工做同樣的崩潰泊塢窗顯示:

rc-service docker status; echo $? 
* status: crashed 
32 

rc-service docker start; echo $? 
* WARNING: docker has already been started 
0 

看起來像它的工作,但服務仍然沒有運行:

rc-service docker status; echo $? 
* status: crashed 
32 

我想什麼木偶做:

rc-service docker restart 

木偶的配置是這樣的:

service { ['docker']: 
    ensure => 'running', 
    enable => true, 
    hasrestart => true, 
} 

如何配置木偶使用重啓在這種情況呢?

+0

OpenRC實際上是否將「崩潰」區分爲與「未運行」分開的狀態,以便某些初始啓動操作無法啓動崩潰服務是合理的?如果是這樣,那麼這應該被提出作爲一個反對木偶的問題。否則,它反映了Docker中的一個缺陷,可能應該在那裏提出。 –

回答

1

您可以使用service資源中的相應屬性指定啓動,停止,狀態和重新啓動的確切命令:https://docs.puppet.com/puppet/latest/types/service.html#service-attributes。但是,由於您正在使用重新啓動命令執行啓動命令,因此這會變得「黑客」,但它在技術上應該不會破壞任何內容。

service { 'docker': 
    ensure => running, 
    enable => true, 
    start => 'rc-service docker restart', 
} 

我建議檢查假設rc-service docker restart居然成功重啓搬運工服務之前走這路線崩潰之後,否則這不會解決你的根本原因。

+1

你打敗了我。 –

+1

雖然這涉及愚弄木偶進行重啓,當它想要開始我可能會使用它 - 它的工作,謝謝! – Henrik

+0

@Henrik請點擊複選標記接受我的回答。 –