【K8s任務】同 Pod 內的容器使用共享卷通訊
阿新 • • 發佈:2021-08-06
建立一個包含兩個容器的 Pod
在這個練習中,你會建立一個包含兩個容器的 Pod。兩個容器共享一個卷用於他們之間的通訊。 Pod 的配置檔案如下:
apiVersion: v1 kind: Pod metadata: name: two-containers spec: restartPolicy: Never volumes: - name: shared-data emptyDir: {} containers: - name: nginx-container image: nginx volumeMounts: - name: shared-data mountPath: /usr/share/nginx/html - name: debian-container image: debian volumeMounts: - name: shared-data mountPath: /pod-data command: ["/bin/sh"] args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
在配置檔案中,你可以看到 Pod 有一個共享卷,名為 shared-data。
配置檔案中的第一個容器運行了一個 nginx 伺服器。共享卷的掛載路徑是 /usr/share/nginx/html。 第二個容器是基於 debian 映象的,有一個 /pod-data 的掛載路徑。第二個容器運行了下面的命令然後終止。
echo Hello from the debian container > /pod-data/index.html
注意,第二個容器在 nginx 伺服器的根目錄下寫了 index.html 檔案。
討論
Pod 能有多個容器的主要原因是為了支援輔助應用(helper applications),以協助主應用(primary application)。 輔助應用的典型例子是資料抽取,資料推送和代理。輔助應用和主應用經常需要相互通訊。 就如這個練習所示,通訊通常是通過共享檔案系統完成的,或者,也通過迴環網路介面 localhost 完成。 舉個網路介面的例子,web 伺服器帶有一個協助程式用於拉取 Git 倉庫的更新。
在本練習中的卷為 Pod 生命週期中的容器相互通訊提供了一種方法。如果 Pod 被刪除或者重建了, 任何共享卷中的資料都會丟失。
作者:Varden 出處:http://www.cnblogs.com/varden/ 本文內容如有雷同,請聯絡作者! 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。