从卷还原的Kubernetes PVC Napshot为空
我正在尝试使用从卷还原的Kubernetes PVC Napshot为空,kubernetes,volume,persistent-volume-claims,Kubernetes,Volume,Persistent Volume Claims,我正在尝试使用VolumeSnapshot备份,该备份在kubernetes中升级为beta从1.17 以下是我的设想: 创建nginx部署及其使用的PVC apiVersion:apps/v1 种类:部署 元数据: 名称:nginx部署 规格: 选择器: 火柴标签: app:nginx 副本:1份 模板: 元数据: 标签: app:nginx 规格: 容器: -姓名:nginx 图片:nginx:1.14.2 端口: -集装箱港口:80 体积数量: -姓名:我的pvc 挂载路径:/root/t
VolumeSnapshot
备份,该备份在kubernetes
中升级为beta
从1.17
以下是我的设想:
创建nginx部署及其使用的PVC
apiVersion:apps/v1
种类:部署
元数据:
名称:nginx部署
规格:
选择器:
火柴标签:
app:nginx
副本:1份
模板:
元数据:
标签:
app:nginx
规格:
容器:
-姓名:nginx
图片:nginx:1.14.2
端口:
-集装箱港口:80
体积数量:
-姓名:我的pvc
挂载路径:/root/test
卷数:
-姓名:我的pvc
persistentVolumeClaim:
索赔名称:nginx pvc
apiVersion:v1
种类:PersistentVolumeClaim
元数据:
终结器:null
标签:
名称:nginx pvc
名称:nginx pvc
名称空间:默认值
规格:
访问模式:
-读写
资源:
请求:
储存量:8Gi
storageClassName:premium rwo
将Exec放入正在运行的nginx
容器中,将cd放入PVC装入路径并创建一些文件
▶ k exec-it nginx-deployment-84765795c-7hz5n bash
root@nginx-部署-84765795c-7hz5n:/#cd/根/测试
root@nginx-部署-84765795c-7hz5n:~/test#touch{1..10}.txt
root@nginx-部署-84765795c-7hz5n:~/test#ls
1.txt 10.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt丢失+找到
root@nginx-部署-84765795c-7hz5n:~/测试#
使用nginx pvc
apiVersion:snapshot.storage.k8s.io/v1beta1
种类:卷快照
元数据:
名称空间:默认值
名称:nginx卷快照
规格:
volumeSnapshotClassName:pd retain vsc
资料来源:
persistentVolumeClaimName:nginx pvc
使用的VolumeSnapshotClass
如下
apiVersion:snapshot.storage.k8s.io/v1beta1
删除策略:保留
驱动程序:pd.csi.storage.gke.io
种类:VolumeSnapshotClass
元数据:
creationTimestamp:“2020-09-25T09:10:16Z”
世代:1
名称:pd retain vsc
然后等待它变为readyToUse:true
apiVersion:v1
项目:
-apiVersion:snapshot.storage.k8s.io/v1beta1
种类:卷快照
元数据:
creationTimestamp:“2020-11-04T09:38:00Z”
定稿人:
-snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection
世代:1
名称:nginx卷快照
名称空间:默认值
资源版本:“34170857”
selfLink:/api/snapshot.storage.k8s.io/v1beta1/namespaces/default/volumesnapshots/nginx-volume-snapshot
uid:ce1991f8-a44c-456f-8b2a-2e12f8df28fc
规格:
资料来源:
persistentVolumeClaimName:nginx pvc
volumeSnapshotClassName:pd retain vsc
地位:
boundVolumeSnapshotContentName:snapcontent-ce1991f8-a44c-456f-8b2a-2e12f8df28fc
创建时间:“2020-11-04T09:38:02Z”
准备使用:正确
恢复大小:8Gi
种类:列表
元数据:
资源版本:“
自链接:“
删除nginx
部署和初始PVC
▶ k删除pvc,部署--全部
persistentvolumeclaim“nginx pvc”已删除
deployment.apps“nginx部署”已删除
使用先前创建的VolumeSnapshot
作为其数据源,创建一个新的PVC
apiVersion:v1
种类:PersistentVolumeClaim
元数据:
终结器:null
标签:
名称:nginx pvc
名称:nginx pvc
名称空间:默认值
规格:
访问模式:
-读写
资源:
请求:
储存量:8Gi
数据源:
名称:nginx卷快照
种类:卷快照
apiGroup:snapshot.storage.k8s.io
将新(恢复的)PVC的名称设置为nginx部署
apiVersion:apps/v1
种类:部署
元数据:
名称:nginx部署
规格:
选择器:
火柴标签:
app:nginx
副本:1份
模板:
元数据:
标签:
app:nginx
规格:
容器:
-姓名:nginx
图片:nginx:1.14.2
端口:
-集装箱港口:80
体积数量:
-姓名:我的pvc
挂载路径:/root/test
卷数:
-姓名:我的pvc
persistentVolumeClaim:
索赔名称:nginx pvc
然后再次创建部署
▶ k create-f nginx-deployment-restored.yaml
deployment.apps/nginx-deployment已创建
cd
进入PVC安装目录。它应该包含以前创建的文件,但其为空
▶ k exec-it nginx-deployment-67c7584d4b-l7qrq bash
root@nginx-部署-67c7584d4b-l7qrq:/#cd/根/测试
root@nginx-部署-67c7584d4b-l7qrq:~/test#ls
失物招领
root@nginx-部署-67c7584d4b-l7qrq:~/test#
这是一个社区维基答案,旨在更清楚地说明当前的问题。请随意扩展 如@pkaramol所述,这是一个在以下线程下注册的持续问题: 发生了什么:在默认为intree驱动程序的集群中 storageclass,如果您尝试使用快照数据源和 忘了把csi storageclass放进去,那么一个空的PVC就会被删除 使用默认的storageclass设置 您预期会发生什么:PVC创建不应继续,并且 而是有一个带有不兼容错误的事件,类似于 检查csi供应器中的正确csi驱动程序
在撰写本回答时,此问题尚未得到解决。除了丢失的文件外,GKE上的卷快照的其他方面对您来说是否正常?恢复的卷正是您在快照过程中创建的卷?实际上,
k8s
sig storage
▶ k create -f nginx-pvc-restored.yaml
persistentvolumeclaim/nginx-pvc-restored created
▶ k get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nginx-pvc-restored Bound pvc-56d0a898-9f65-464f-8abf-90fa0a58a048 8Gi RWO standard 39s
▶ k version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.12", GitCommit:"5ec472285121eb6c451e515bc0a7201413872fa3", GitTreeState:"clean", BuildDate:"2020-09-16T13:39:51Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"17+", GitVersion:"v1.17.12-gke.1504", GitCommit:"17061f5bd4ee34f72c9281d49f94b4f3ac31ac25", GitTreeState:"clean", BuildDate:"2020-10-19T17:00:22Z", GoVersion:"go1.13.15b4", Compiler:"gc", Platform:"linux/amd64"}