Монтирование двух постоянных заявок на тома в одном случае приводит к ошибке - PullRequest
0 голосов
/ 15 декабря 2018

Я создал два PersistentVolumeClaims (один для redis, один для постоянных журналов) и попытался смонтировать оба в одном развертывании, но после создания развертывания я получаю следующую ошибку:

nodes are available: 3 node(s) didn't match node selector, 4 node(s) had no available volume zone.

Однако, как только я удаляю один PVC из файла развертывания yaml, он работает нормально.Я запускаю его на облачной платформе Google, используя движок Kubernetes.

pvc1:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-log
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 20Gi
  storageClassName: standard

pvc2:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-redis
spec:
  accessModes:
    - ReadWriteOnce
volumeMode: Filesystem
resources:
  requests:
    storage: 20Gi
storageClassName: standard

развертывание:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: 'prod-deployment'
spec:
  replicas: 1
template:
  metadata:
    labels:
      app: foo
      release: canary
      environment: production
  spec:
    containers:
      - name: api-server
        image: 'foo:latest'
        volumeMounts:
          - mountPath: /logs
            name: log-storage
      - name: redis
        image: 'redis'
        volumeMounts:
          - mountPath: /data
            name: redis-data
    volumes:
      - name: redis-data
        persistentVolumeClaim:
          claimName: pvc-redis
      - name: log-storage
        persistentVolumeClaim:
          claimName: pvc-log

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Это отклонено планировщиком для предиката "NoVolumeZoneConflict", вот объявление: https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/algorithm/predicates/predicates.go#L564 (так как я не нахожу лучшего документа, но я думаю, что комментарий в коде действительно ясен для этого).

И, как сказал Рико, вы должны ограничить зону томов для томов в модуле, возможно, напрямую через класс хранения или pv, но это не рекомендуется.

0 голосов
/ 15 декабря 2018

Это похоже на это .Скорее всего, это связано с тем, что PVC пытается создать том в зоне доступности, в которой у вас нет узла. Вы можете попробовать ограничить стандарт StorageClass только зонами доступности, в которых у вас есть Kubernetes.узлы.Как то так:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: standard
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
allowedTopologies:
- matchLabelExpressions:
  - key: failure-domain.beta.kubernetes.io/zone
    values:
    - us-central1-a
    - us-central1-b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...