Свяжите разные постоянные тома для каждой реплики в развертывании Kubernetes - PullRequest
0 голосов
/ 01 января 2019

Я использую PVC с режимом доступа ReadWriteOnce, который используется в развертывании logstash, которое будет запускать приложение с сохранением состояния и использовать этот PVC. Каждый модуль в развертывании будет пытаться привязать одно и то же постоянное утверждение тома.В случае реплик> 1 произойдет сбой (поскольку он поддерживает ReadWriteOnce, только первый сможет успешно выполнить связывание).Как мне указать, что каждый модуль должен быть привязан к отдельному PV.

Я не хочу определять 3 отдельных yamls для каждой реплики / экземпляра logstash

apiVersion: apps/v1
kind: Deployment
metadata:
  name: logstash
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: logstash
    spec:
      containers:
        image: "logstash-image"
        imagePullPolicy: IfNotPresent
        name: logstash
        volumeMounts:
        - mountPath: /data
          name: logstash-data
      restartPolicy: Always
      volumes:
      - name: logstash-data
        persistentVolumeClaim:
          claimName: logstash-vol

Нужен способсделать объемное монтирование разных PV для разных реплик pod.

1 Ответ

0 голосов
/ 02 января 2019

С Deployments вы не можете сделать это правильно.Вы должны использовать StatefulSet с шаблоном PVC для достижения вашей цели.Часть вашего фрагмента кода YAML StatefulSet может выглядеть следующим образом:

...
volumeClaimTemplates:
- metadata:
    name: pv-data
  spec:
    accessModes: 
      - ReadWriteOnce
    resources:
      requests:
        storage: 5G

при условии, что у вас есть 3 реплики, вы увидите, что модули создаются последовательно, а PVC запрашивается во время создания модуля.

PVC называется volumeClaimTemplate name + pod-name + ordinal number, и в результате вы получите список вновь созданных PVC:

pv-data-<pod_name>-0
pv-data-<pod_name>-1
pv-data-<pod_name>-N

StatefulSet создает имена (а не только имена) вашегоpods static и увеличивает их в зависимости от количества реплик, поэтому каждый Pod будет соответствовать своим собственным PVC и PV соответственно

Примечание: это называется динамической инициализацией.Вы должны быть знакомы с настройкой компонентов плоскости управления kubernetes (например, controller-manager) для достижения этой цели, потому что вам потребуются настроенные поставщики постоянного хранилища (один из них) и понять политику хранения ваших данных, но это совершенно другой вопрос..

...