我已经在Google Compute Engine中创建了一个新磁盘。
gcloud compute disks create --size=10GB --zone=us-central1-a dane-disk
它说我需要格式化它。但是我不知道如何安装/访问磁盘?
gcloud compute disks list
NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS
notowania-disk us-central1-a zone 10 pd-standard READY
New disks are unformatted. You must format and mount a disk before it can be used. You can find instructions on how to do this at:
https://cloud.google.com/compute/docs/disks/add-persistent-disk#formatting
我尝试了上面的指令,但是
lsblk
根本不显示磁盘我是否需要创建一个VM并以某种方式将其附加到它才能使用它?我的目标是将磁盘作为独立于VM的persistent GKE volume挂载(上一次GKE升级导致VM重新娱乐和数据丢失)
最佳答案
感谢您澄清您在评论中要做的事情。
我在这里有2个不同的答案。
首先是我的测试表明Kubernetes GCE PD文档是正确的,有关格式的警告似乎可以安全地忽略。
如果您只是发出:
gcloud compute disks create --size=10GB --zone=us-central1-a my-test-data-disk
然后在pod中使用它:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: nginx
name: nginx-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
# This GCE PD must already exist.
gcePersistentDisk:
pdName: my-test-data-disk
fsType: ext4
挂载时将对其进行格式化。这可能是因为
fsType
参数instructs the system how to format the disk。您无需对单独的GCE实例执行任何操作。即使删除 Pane 或整个群集,磁盘也将保留。第一次使用后不会重新格式化,并保留数据。因此,来自gcloud的警告消息令人困惑,但是在这种情况下可以安全地忽略。
现在,为了基于GCE PD动态创建一个不会自动删除的持久卷,您将需要创建一个新的
StorageClass
并将回收策略设置为Retain
,然后根据该PersistentVolumeClaim
创建一个StorageClass
。这基本上也将整个操作保留在Kubernetes内部,而无需使用gcloud做任何事情。同样,类似于here所描述的,类似的方法是您希望将StatefulSet
与单个pod一起使用。您想要做的大多数事情都在this GKE documentation about dynamically allocating PVCs和Kubernetes StorageClass documentation中进行了描述。这是一个例子:
gce-pd-retain-storageclass.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gce-pd-retained
reclaimPolicy: Retain
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
replication-type: none
除了
reclaimPolicy
设置为Retain以外,以上存储类与“标准” GKE存储类基本相同。pvc-demo.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-demo-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: gce-pd-retained
resources:
requests:
storage: 10Gi
应用上述操作将动态创建一个磁盘,该磁盘将在您删除声明时保留。
最后是一个demo-pod.yaml,它将PVC作为卷安装(这实际上是使用nginx的废话,但它演示了语法):
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: nginx
name: nginx-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
persistentVolumeClaim:
claimName: pvc-demo-disk
现在,如果按顺序应用这三个对象,您将获得一个使用PersistentVolumeClaim运行的容器,该容器自动为您创建(并格式化)了磁盘。当您删除Pod时,版权声明会将磁盘保留在周围。如果删除该声明,StorageClass仍然会阻止磁盘被删除。
请注意,此后留下的PV不会自动重用,因为数据仍在磁盘上。请参阅the Kubernetes documentation,以了解在这种情况下可以采取的措施。确实,这主要是说您不应该删除PVC,除非您准备好将数据从旧卷中移出。
请注意,当删除整个GKE群集时,这些磁盘甚至将继续存在(并且将继续向它们收费,直到删除它们为止)。
关于kubernetes - 如何挂载和格式化要挂载在GKE pods 中的新Google计算盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608984/