запросить объем без потери данных с помощью 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