【K8s任務】同 Pod 內的容器使用共享卷通信


參考:https://kubernetes.io/zh/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

創建一個包含兩個容器的 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 被刪除或者重建了, 任何共享卷中的數據都會丟失。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM