#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