запросить объем без потери данных с помощью Volumeclaimtemplate

У меня есть приложение для развертывания рабочей нагрузки, и мне нужно изменить его на statefulset

      apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: app
        image: nginx:1.14.2
        ports:
        - containerPort: 80 
        volumeMounts:
        - name: data
          subPath: app/log
          mountPath: /opt/app/log
      volumes:
      - name: data
        peristentVolumeClaim:
           claimName: pv-app-claim

PV

      apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-app
  labels:
    pv: app
spec:
  storageClassName: "default"
  capacity:
    storage: 8Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeclaimPolicy: Retain
  nfs:
     server: someIP
     path: "/somepath"

ПВХ

      apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-app-claim
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 8Gi
  selector:
    matchLabels:
        pv: app

Я попытался изменить требуемый файл, но попал в место, где мне нужно, чтобы данные в томе были там, даже когда я перехожу к statefulset. В statefulset мы используем шаблон volumeclaimtemplate, и здесь меня поразило, как сохранить данные и запрос с помощью шаблона volumeclaimtemplate.

Примечание. Я собираюсь использовать только один стручок.

1 ответ

  • Если вы хотите использовать существующий PVC в statefulset, вам не следует упоминать его в качестве volumeclaimtemplate создаст новый PVC.
  • Вы должны указать это под pod specточно так же, как вы упоминаете в развертывании

Пример:

      apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web1
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 1 
  template:
    metadata:
      labels:
        app: nginx 
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx1
        imagePullPolicy: IfNotPresent
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web1
        volumeMounts:
        - name: www1
          mountPath: /usr/share/nginx/html
      volumes:
      - name: www1
        peristentVolumeClaim:
           claimName: pv-app-claim