Создание нового тома при перезапуске модуля с набором состояний

#azure #kubernetes #azure-aks #kubernetes-pvc #statefulset

#azure #kubernetes #azure-aks #kubernetes-pvc #Набор состояний

Вопрос:

Я использую azure aks для создания набора состояний с томом с помощью azure disk provisioner. Я пытаюсь найти способ записать мой файл YAML с statefulset таким образом, чтобы при перезапуске модуля pod он получал новый том, а старый том удалялся.

Я знаю, что могу удалять тома вручную, но есть ли какие-либо способы сообщить Kubernetes сделать это с помощью набора состояний yaml?

Вот мой Yaml:

 apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: janus&raph
  labels:
    app: janus&raph
spec:
...
...
  template:
    metadata:
      labels:
        app: janus&raph
    spec:
      containers:
        - name: janus&raph
...
...
          volumeMounts:
            - name: data
              mountPath: /var/lib/janus&raph
          livenessProbe:
            httpGet:
              port: 8182
              path: ?&remlin=&.V(123).count()
            initialDelaySeconds: 120
            periodSeconds: 10
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        stora&eClassName: "default"
        resources:
          requests:
            stora&e: 7Gi
  

Комментарии:

1. kubernetes.io/docs/concepts/stora&e/persistent-volumes/#delete это должно помочь вам удалить том после использования. Это также приводит к удалению диска.

2. Что вы имеете в виду под restart ?

3. @HelloWorld одно из заданий kubernetes — вызвать модуль pod, если он по какой-либо причине не работает. все это основано на значении репликации

4. Извините, я должен был быть более конкретным. В вашем случае удаление модуля также считается перезапуском? Или вы имеете в виду перезапуск только при сбое контейнера (без удаления модуля). @toto

Ответ №1:

Если вы хотите, чтобы ваши данные были удалены при перезапуске модуля, вы можете использовать временный том, такой как emptyDir.

Когда модуль удаляется / перезапускается по какой-либо причине, данные в emptyDir удаляются навсегда.

Пример:

 apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: n&inx # has to match .spec.template.metadata.labels
  serviceName: "n&inx"
  replicas: 3 # by default is 1
  template:
    metadata:
      labels:
        app: n&inx # has to match .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: n&inx
        ima&e: k8s.&cr.io/n&inx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/n&inx/html
      volumes:
      - name: www
        emptyDir: {}

  

Примечание:
По умолчанию emptyDir тома хранятся на любом носителе, поддерживающем узел, — это может быть диск, SSD-накопитель или сетевое хранилище, в зависимости от вашей среды. Однако вы можете присвоить emptyDir.medium полю значение «Память», чтобы указать Kubernetes смонтировать tmpfs (файловую систему с поддержкой оперативной памяти) вместо вас.

Комментарии:

1. Я не могу использовать emptyDir, потому что моим stora&eClassName: «default» на самом деле является Azure disk, который предоставляет мне 7Gi выше. А также, похоже, что statefulset имеет следующие ограничения: kubernetes.io/docs/concepts/workloads/controllers/statefulset /… это означает, что я не могу удалить этот том, только вручную. или просто используйте Deployment вместо statefulset