2016-09-23 69 views
0

我們的一些Kubernetes節點上的flanneld進程已知會崩潰,造成奇怪的行爲。我想設置監控/警報以確保我們在/ flanneld崩潰時得到通知。我們運行CoreOS作爲我們的基本操作系統來運行Kubernetes。CoreOS Kubernetes如何監控節點進程?

CoreOS的設計決策之一(據我所知)是,應該在基本操作系統上安裝最少的軟件,並且所有應該在Pod /容器中運行。

因此,考慮到這一點,我想運行一個Pod /容器來監視主機進程列表,以確保總是有一個名爲「flanneld」的進程在運行併發送警報,如果它是沒有運行。

但是,由於任何Pod /容器都有其自己的進程名稱空間,似乎我無法運行有權訪問主進程列表/樹的容器。我試圖運行一個容器「特權:真」,但沒有運氣。

有沒有辦法在可以訪問主進程列表/樹的Kubernetes上運行容器?

另外,有沒有更好的方式做我想做的事情?最好不要直接在CoreOS系統上安裝軟件,而要使用容器/ Pod。

回答

1

我發現這樣做的一種方法是將主機的/ proc掛載在容器上,例如, 「-v/proc:/ hostproc」,然後定期檢查/ hostproc下列出的所有進程號,並驗證那裏是否存在(例如)「flanneld」。

+0

這似乎是一個相當普遍的做法(如https://github.com/bhuisgen/docker-zabbix-coreos,https://stackoverflow.com/questions/29281350/how-do-i- enable-snmp-on-coreos) – srkiNZ84

1

爲什麼不自己利用systemd,並確保當法蘭絨進程(服務)死亡/重新啓動時,你會收到電子郵件,webhook觸發或其他事件?

您可以像使用默認的flannel配置一樣,在您的雲配置中輕鬆地爲systemd單元創建加載項,以便按照您認爲合適的方式擴充默認服務文件。

- name: flanneld.service 
    command: start 
    drop-ins: 
    - name: 01-somedropin.conf 
    content: | 
    [Service] 
    ExecStartPre=-/usr/bin/somecommand 
+0

是的,這是有道理的。我想我只是想盡量避免修改主機操作系統(CoreOS),原因是我擔心這些更改會在CoreOS升級中被「抹去」,並且通常必須進行維護,版本控制等... 真的想讓解決方案在主機頂部的Pod /容器中運行,以便讓我們所有擔心版本控制/維護的都是Docker鏡像。 – srkiNZ84

+0

每當你以任何方式擦拭系統,甚至從頭開始重新配置系統時,你的雲配置將重新運行(CoreOS在每個系統啓動時重新運行cloud-config),因此你並不需要擔心它會從系統,只要您通過cloud-config添加它即可。我假設你使用的是cloud-config,無論如何你都應該保留在版本控制中,所以這裏沒有問題。 –

+0

謝謝你!沒有意識到CoreOS的「雲配置」功能,可能正是我們所追求的:-) – srkiNZ84