[英]delete Kubernetes persistent volume from statefulset after scale down
[英]Kubernetes reattach to same persistent volume after delete
我有一個應用程序,其中兩個 pod 需要訪問同一個卷。 我希望能夠刪除集群,然后在應用之后能夠訪問卷上的數據。
例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: retaining
provisioner: csi.hetzner.cloud
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: media
spec:
#storageClassName: retaining
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-php
labels:
app: myapp-php
k8s-app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp-php
template:
metadata:
labels:
app: myapp-php
k8s-app: myapp
spec:
containers:
- image: nginx:1.17
imagePullPolicy: IfNotPresent
name: myapp-php
ports:
- containerPort: 9000
protocol: TCP
resources:
limits:
cpu: 750m
memory: 3Gi
requests:
cpu: 750m
memory: 3Gi
volumeMounts:
- name: media
mountPath: /var/www/html/media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
nodeSelector:
mytype: main
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-web
labels:
app: myapp-web
k8s-app: myapp
spec:
selector:
matchLabels:
app: myapp-web
template:
metadata:
labels:
app: myapp-web
k8s-app: myapp
spec:
containers:
- image: nginx:1.17
imagePullPolicy: IfNotPresent
name: myapp-web
ports:
- containerPort: 9000
protocol: TCP
resources:
limits:
cpu: 10m
memory: 128Mi
requests:
cpu: 10m
memory: 128Mi
volumeMounts:
- name: media
mountPath: /var/www/html/media
volumes:
- name: media
persistentVolumeClaim:
claimName: media
nodeSelector:
mytype: main
如果我這樣做:
k apply -f pv-issue.yaml
k delete -f pv-issue.yaml
k apply-f pv-issue.yaml
我想連接相同的卷。
我試過的:
kustomize build app | kubectl delete -f -
kustomize build app | kubectl delete -f -
有沒有辦法做到這一點? 或者我應該只做定期備份,並在重新創建集群時從備份中恢復卷數據?
有沒有辦法做到這一點? 或者我應該只做定期備份,並在重新創建集群時從備份中恢復卷數據?
集群刪除將使您的所有本地卷都被刪除。 您可以通過將數據存儲在集群外部來實現這一點。 Kubernetes
擁有多種存儲提供商,可幫助您在各種存儲類型上部署數據。
您可能還想使用hostPath
將數據保存在本地節點上,但這也不是一個好的解決方案,因為它需要您將 pod 固定到特定節點以避免數據丟失。 而且,如果您以所有VM
都消失的方式刪除集群,那么這也將消失。
擁有一些網絡附加存儲將是 go 的正確方法。 其中一個很好的例子是持久性磁盤,您的實例可以訪問持久性網絡存儲設備。 它們獨立於您的虛擬機,並且在您刪除集群時不會被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.