2016-02-25 16 views
2

找到這個例子Kubernetes EmptyDir量Kubernetes卷安裝與複製控制器

apiVersion: v1 
kind: Pod 
metadata: 
    name: www 
spec: 
    containers: 
    - name: nginx 
    image: nginx 
    volumeMounts: 
    - mountPath: /srv/www 
     name: www-data 
     readOnly: true 
    - name: git-monitor 
    image: kubernetes/git-monitor 
    env: 
    - name: GIT_REPO 
     value: http://github.com/some/repo.git 
    volumeMounts: 
    - mountPath: /data 
     name: www-data 
    volumes: 
    - name: www-data 
    emptyDir: {} 

我想第2個之間的豆莢安裝。我正在使用2個不同的複製控制器創建這些Pod。複製控制器看起來像這樣

複製控制器1:

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: node-worker 
    labels: 
    name: node-worker 
spec: 
    replicas: 1 
    selector: 
    name: node-worker 
    template: 
    metadata: 
     labels: 
     name: node-worker 
    spec: 
     containers: 
     - 
     name: node-worker 
     image: image/node-worker 
     volumeMounts: 
      - mountPath: /mnt/test 
      name: deployment-volume 
     volumes: 
     - name: deployment-volume 
      emptyDir: {} 

複製控制器2:

apiVersion: v1 
    kind: ReplicationController 
    metadata: 
     name: node-manager 
     labels: 
     name: node-manager 
    spec: 
     replicas: 1 
     selector: 
     name: node-manager 
     template: 
     metadata: 
      labels: 
      name: node-manager 
     spec: 
      containers: 
      - 
      name: node-manager 
      image: image/node-manager 
      volumeMounts: 
       - mountPath: /mnt/test 
       name: deployment-volume 
      volumes: 
      - name: deployment-volume 
       emptyDir: {} 

能Kubernetes emptyDir量用於這個場景?

回答

1

EmptyDir卷固有地綁定到單個容器的生命週期,並且不能在複製控制器或其他容器中的容器之間共享。如果你想在不同的豆莢中共享卷,現在最好的選擇是NFS或gluster,在一個持久的卷中。在這裏看到一個例子:https://github.com/kubernetes/examples/blob/master/staging/volumes/nfs/README.md

+0

我正在嘗試NFS的例子。我已經建立了NFS服務器,pv和pvc,並且在嘗試捲到NFS時,我在日誌中看到了這個錯誤。 。 輸出:mount.nfs:請求不支持NFS版本或傳輸協議 – VizZy

+0

VizZy,聽起來像nfs客戶端和服務器之間可能不匹配。服務器的版本是什麼? –

0

爲什麼要分享pod之間的卷裝?由於不能保證複製控制器1中的pod與複製控制器2中的pod在羣集中的調度位置之間具有1:1映射,因此無法可靠運行。

如果要在容器之間共享本地存儲,則應將兩個容器放入同一個容器中,並讓每個容器裝入emptyDir卷。

0

你需要事情得到這個工作。可以找到更多信息here和一些文檔here,但起初有點混淆。

本示例掛載NFS卷。

1.創建一個PersistentVolume指向您的NFS服務器

文件:mynfssharename-pv.yaml

(更新服務器來指向您的服務器)

apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: mynfssharename 
spec: 
    capacity: 
    storage: 1Gi 
    accessModes: 
    - ReadWriteMany 
    nfs: 
    server: yourservernotmine.yourcompany.com 
    path: "/yournfspath" 

kubectl創建-f mynfssharename-pv.yaml

2.創建一個PersistentVolumeClaim以點PersistentVolume mynfssharename

文件:mynfssharename-pvc.yaml

apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: mynfssharename 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 1Gi 

kubectl創建-f mynfssharename-pvc.yaml

3.添加聲稱您的ReplicationController或部署

spec: 
    containers: 
    - name: sample-pipeline 
    image: yourimage 
    imagePullPolicy: Always 
    ports: 
    - containerPort: 8080 
     name: http 
    volumeMounts: 
     # name must match the volume name below 
     - name: mynfssharename 
     mountPath: "/mnt" 
    volumes: 
    - name: mynfssharename 
    persistentVolumeClaim: 
     claimName: mynfssharename