2017-01-04 9 views
1

В настоящее время я использую стандартный контейнерный кластер GCE с большим успехом и удовольствием. Но у меня возник вопрос о предоставлении GCE Persistent дисков.Предоставление Kubernetes GCE Постоянный диск иногда не работает

Как описано в this Форма документа Kubernetes. Я создал два YAML файлы:

kind: StorageClass 
apiVersion: storage.k8s.io/v1beta1 
metadata: 
    annotations: 
     storageclass.beta.kubernetes.io/is-default-class: "true" 
    name: slow 
provisioner: kubernetes.io/gce-pd 
parameters: 
    type: pd-standard 

и

kind: StorageClass 
apiVersion: storage.k8s.io/v1beta1 
metadata: 
    name: fast 
provisioner: kubernetes.io/gce-pd 
parameters: 
    type: pd-ssd 

Если я теперь создать следующие тома претензии:

{ 
    "kind": "PersistentVolumeClaim", 
    "apiVersion": "v1", 
    "metadata": { 
    "name": "claim-test", 
    "annotations": { 
     "volume.beta.kubernetes.io/storage-class": "hdd" 
    } 
    }, 
    "spec": { 
    "accessModes": [ 
     "ReadWriteOnce" 
    ], 
    "resources": { 
     "requests": { 
     "storage": "3Gi" 
     } 
    } 
    } 
} 

Диск получает созданный отлично! И если я теперь начать следующий блок

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: nfs-server 
spec: 
    replicas: 1 
    selector: 
    role: nfs-server 
    template: 
    metadata: 
     labels: 
     role: nfs-server 
    spec: 
     containers: 
     - name: nfs-server 
     image: gcr.io/google_containers/volume-nfs 
     ports: 
      - name: nfs 
      containerPort: 2049 
      - name: mountd 
      containerPort: 20048 
      - name: rpcbind 
      containerPort: 111 
     securityContext: 
      privileged: true 
     volumeMounts: 
      - mountPath: /exports 
      name: mypvc 
     volumes: 
     - name: mypvc 
      persistentVolumeClaim: 

     claimName: claim-test 

Диск смонтировано отлично, но я много раз наткнуться на следующее сообщение об ошибке (не более можно найти в файле kubelet.log):

Не удалось приложите том «запрос-тест» на узле «....» с: постоянный диск GCE не найден: diskName = «.....» zone = «europe-west1-b» Ошибка синхронизации кода, пропуск: время ожидания истекло ожидая томов для подключения/монтирования для стручка «....». список неприкрепленных/немонтированных томов = [....]

Иногда подставка отлично подходит, но иногда она падает. Единственное, что я мог найти, это то, что должно быть достаточно времени между созданием ПВХ и самой RC. Я пробовал это много раз, но с такими же неопределенными результатами.

Я надеюсь, что кто-то может дать мне какое-то предложение или помощь.

Заранее благодарен! С наилучшими пожеланиями,

Hacor

+0

Извините за беспокойство Hacor. Мы хотели бы отладить это. Не могли бы вы поделиться своей информацией о кластере GKE (название проекта, зона/регион и имя кластера) со мной в автономном режиме (контактная информация на https://github.com/saad-ali), а также точное время последнего воспроизведения - мы рассмотрим мастер-журналы, чтобы узнать, что происходит. –

+0

ПВХ с GCE довольно хлопотно: диск устанавливается на одну машину, а стручок запускается на случайной машине. Из-за этого стручок никогда не сможет найти PV. Чтобы этого не произошло, вам нужно привязать контейнеры к машинам. Более эффективный способ до тех пор, пока Google не позволит установить диск на несколько компьютеров, является использование хранилища GCE, установленного непосредственно из модуля –

ответ

0

Заранее спасибо за ваши комментарии! После нескольких дней поиска я наконец смог определить, в чем проблема, я публикую его, потому что он может быть полезен другим пользователям.

Я использовал NFS example для Kubernetes в качестве контроллера репликации для обеспечения своих приложений хранилищем NFS, но кажется, что когда NFS-сервер и PV, ПВХ удаляются, иногда общий ресурс NFS застревает на самом узле, а я думаю, что это связано с тем, что я не удалял эти элементы в определенном порядке, и поэтому узел застрял, когда доля стала неспособной к установке новых акций для себя или для стручка!

Я заметил, что проблема всегда возникала после того, как я удалил какое-либо приложение (NFS, PV, PVC и другие компоненты) из кластера. Если бы я создал новый кластер в GCE, он отлично работает для создания приложений, пока я не удалю его, и он пойдет не так ...

Что правильный порядок удаления, я не знаю точно, но я думаю:

  • Бобы с использованием доли NFS
  • PV, ПВХ доли NFS
  • сервер NFS

Если pod занимает больше времени для удаления, и он не полностью ушел до того, как PV будет удален, узел зависает с монтированием, который он не может удалить, поскольку он используется, и в этом случае возникают проблемы

Должен честно сказать, что теперь я перехожу к кластеру GlusterFS, поставляемой извне. Надеюсь, это поможет кому-то!

С уважением,

Hacor

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

  • Нет связанных вопросов^_^