2017-08-24 40 views
0

我的容器有兩個容器 - 主容器和邊車容器,用於監視主容器中的/var/run/utmp文件,並在其更改時採取相應措施。我試圖弄清楚如何讓這個文件在邊車容器中可見。我可以在容器中的容器之間共享單個文件嗎?

This page描述如何使用捲來共享容器中容器之間的目錄。但是,這似乎只適用於目錄,而不是單個文件。我也不能使用這種策略來共享主容器中的整個/var/run/目錄,因爲在那裏安裝一個卷會擦除容器需要運行的目錄的內容。

我試圖通過在另一個目錄中創建一個符號鏈接到utmp並安裝該目錄來解決此問題,但它看起來並不像卷中的符號鏈接以它們需要的方式解決它的工作方式。

有沒有什麼辦法可以讓容器中的一個文件對同一個容器中的其他容器可見?我正在試驗的清單看起來像這樣:

apiVersion: v1 
kind: Pod 
metadata: 
    name: utmp-demo 

spec: 
    restartPolicy: Never 

    containers: 
    - name: main 
    image: debian 
    command: ["/bin/bash"] 
    args: ["-c", "sleep infinity"] 
    volumeMounts: 
    - name: main-run 
     mountPath: /var/run # or /var/run/utmp, which crashes 

    - name: helper 
    image: debian 
    command: ["/bin/bash"] 
    args: ["-c", "sleep infinity"] 
    volumeMounts: 
    - name: main-run 
     mountPath: /tmp/main-run 

    volumes: 
    - name: main-run 
    emptyDir: {} 
+0

不知道subPath是否可以在這裏工作,但可能值得嘗試。[Here](https://github.com/kubernetes/kubernetes/issues/41638)就是一個例子。但我會嘗試在路徑中包含文件名,類似於只包含configMap的一個文件。 – oe18

+0

似乎沒有幫助,即使使用subPath,目錄的其餘部分似乎也被清除了。 –

+0

那麼簡單地創建/ var/run/utmp文件與主容器啓動時的原始文件具有相同的權限呢?我認爲它在開始時已經是一個空文件(沒有安裝任何音量)。 – turkenh

回答

1

如果您可以將文件移動到空子文件夾中共享,這可能是一個簡單的解決方案。

例如,將文件移動到/ var/run/utmp/utmp並與emptydir共享/ var/run/utmp文件夾。

+0

不幸的是,這在我的情況下不起作用,因爲/ var/run/utmp的位置是由Linux定義的,無法移動。 –

相關問題