2016-02-25 60 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