2016-04-20 3 views
0

Я столкнулся с проблемой Кубернеса. Я просто перешел из конфигурации Pod в ReplicationController для приложения Ruby on Rails, и я использую постоянные диски для модуля Rails. Когда я пытаюсь применить ReplicationController он дает следующее сообщение об ошибке:Kubernetes - ReplicationController и постоянные диски

The ReplicationController "cartelhouse-ror" is invalid. spec.template.spec.volumes[0].gcePersistentDisk.readOnly: Invalid value: false: must be true for replicated pods > 1; GCE PD can only be mounted on multiple machines if it is read-only

Означает ли это, нет никакого способа, чтобы использовать постоянные диски (R/W) при использовании ReplicationControllers или есть другой способ?

Если нет, то как я могу масштабировать и/или применять скользящие обновления для конфигурации Pod?

конфигурация Pod: Конфигурация

apiVersion: v1 
kind: Pod 
metadata: 
    name: appname 
    labels: 
    name: appname 
spec: 
    containers: 
     - image: gcr.io/proj/appname:tag 
     name: appname 
     env: 
      - name: POSTGRES_PASSWORD 
       # Change this - must match postgres.yaml password. 
      value: pazzzzwd 
      - name: POSTGRES_USER 
      value: rails 
     ports: 
      - containerPort: 80 
      name: appname 
     volumeMounts: 
       # Name must match the volume name below. 
      - name: appname-disk-per-sto 
       # Mount path within the container. 
      mountPath: /var/www/html 
    volumes: 
     - name: appname-disk-per-sto 
     gcePersistentDisk: 
      # This GCE persistent disk must already exist. 
     pdName: appname-disk-per-sto 
     fsType: ext4 

ReplicationController:

apiVersion: v1 
kind: ReplicationController 
metadata: 
     labels: 
     name: appname 
     name: appname 
spec: 
     replicas: 2 
     selector: 
     name: appname 
     template: 
     metadata: 
      labels: 
      name: appname 
     spec: 
      containers: 
      - image: gcr.io/proj/app:tag 
       name: appname 
       env: 
       - name: POSTGRES_PASSWORD 
        # Change this - must match postgres.yaml password. 
        value: pazzzzwd 
       - name: POSTGRES_USER 
        value: rails 
       ports: 
       - containerPort: 80 
        name: appname 
       volumeMounts: 
        # Name must match the volume name below. 
       - name: appname-disk-per-sto 
        # Mount path within the container. 
        mountPath: /var/www/html 
      volumes: 
      - name: appname-disk-per-sto 
       gcePersistentDisk: 
       # This GCE persistent disk must already exist. 
       pdName: appname-disk-per-sto 
       fsType: ext4 

ответ

2

Проблема не в Kubernetes, а в использовании совместно используемого блочного устройства и файловой системы, которые не могут быть установлены одновременно на несколько хостов. https://unix.stackexchange.com/questions/68790/can-the-same-ext4-disk-be-mounted-from-two-hosts-one-readonly

Вы можете попробовать использовать Иски: http://kubernetes.io/docs/user-guide/persistent-volumes/

Или другая файловая система, например, nfs: http://kubernetes.io/docs/user-guide/volumes/

Смежные вопросы