方法1(将kubernetes卷附加到Google永久磁盘上,将kubernetes卷声明附加到kubernetes卷上)
apiVersion: v1
kind: PersistentVolume
metadata:
name: volume-1
spec:
storageClassName: ""
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
gcePersistentDisk:
pdName: pd-test-1
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pv-claim-1
spec:
storageClassName: ""
volumeName: volume-1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
方法2(Kubernetes批量声明直接附加到Google永久磁盘)
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pv-claim-1
spec:
volumeName: pd-test-1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
方法3(吊舱直接使用Google永久磁盘docs)
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
# This GCE PD must already exist.
gcePersistentDisk:
pdName: my-data-disk
fsType: ext4
我不确定在哪种情况下应该使用哪种方法。
三种方法之间有什么区别?如果要将数据存储在Google永久性磁盘上,应该使用哪种方法?
答案 0 :(得分:2)
按照最佳到最差的顺序:
PersistentVolumeClaim
PersistentVolumeClaim
方法3最糟糕,因为您失去了可移植性。如果将Pod移到GCE PD不可用的Kubernetes群集上,则必须使用新群集上可用的任何存储类型来修改Pod。您不应该使用这种方法。
使用方法1和2时,您的Pod
和PersistentVolumeClaim
对象仍然可移植,并且其中不包含特定于群集的详细信息。
如果您已经有要与Kubernetes一起使用的现有磁盘,请使用方法1(手动创建PersistentVolumeClaim
和PersistentVolume
)。首先,您创建一个PersistentVolume
对象来表示Kubernetes中的磁盘,然后创建一个PersistentVolumeClaim
来绑定到该磁盘并充当可以在Pod中使用的指针。您必须小心确保对象指向彼此,有关如何执行操作的详细信息,请参见https://stackoverflow.com/a/34323691/5443528。这是您应该为现有 GCE PD使用的方法。
方法2(手动创建PersistentVolumeClaim
,然后让系统自动创建PersistentVolume
)。如果您的存储系统支持Kubernetes动态卷配置,则只需创建一个PersistentVolumeClaim
对象,您的存储系统就会自动创建一个新卷。 GCE和GKE上的Kubernetes已为GCE PD安装了默认的StorageClass,因此应该可以立即使用,这是创建和使用 new GCE PD时应使用的方法。
有关所有详细信息,请参见https://www.youtube.com/watch?v=uSxlgK1bCuA。