我可以在GKE中将StorageClass与PersistentVolume结合使用吗?

时间:2019-10-30 09:32:27

标签: kubernetes google-cloud-platform storage google-kubernetes-engine

我对Kubernetes还是很陌生,发现很难从文档中使用它,Kubenetes文档说DECLARE @pid SMALLINT, @sql NVARCHAR(100) DECLARE curs CURSOR LOCAL FORWARD_ONLY FOR SELECT DISTINCT pid FROM master..sysprocesses where dbid = DB_ID(@dbname) OPEN curs fetch next from curs into @pid while @@FETCH_STATUS = 0 BEGIN SET @sql = 'KILL ' + CONVERT(VARCHAR, @pid) EXEC(@sql) FETCH NEXT FROM curs into @pid END CLOSE curs DEALLOCATE curs 但是我可以将StorageClass与PV(非动态分配)一起使用来指定高性能磁盘分配,例如ssd?

没有StorageClass,对我来说效果很好。

以下是我的清单

StorageClass contains the fields provisioner, parameters, and reclaimPolicy, which are used when a PersistentVolume belonging to the class needs to be dynamically provisioned

2 个答案:

答案 0 :(得分:2)

如果需要动态配置存储,则需要存储类。

如果要供应持久卷,则称为静态存储供应。在这种情况下,您不需要存储类

答案 1 :(得分:1)

这里出现的问题是,如果您要静态静态配置PersistentVolume,则它们没有StorageClass。但是,GKE群集是使用默认的standard StorageClass创建的,因此PVC会感到困惑并尝试动态分配。

解决方案是让PVC请求一个空的存储类,这迫使它查看静态设置的PV。

因此,您将使用类似的序列来创建PV,然后将其绑定到PVC:

  • 手动设置ssd:

gcloud compute disks create --size=10Gi --zone=[YOUR ZONE] --type=pd-ssd already-created-ssd-disk

  • 然后应用一个使用静态配置磁盘的PV对象,如下所示:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ssd-for-k8s-volume
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: already-created-ssd-disk
    fsType: ext4
  • 然后,您可以使用这样的PVC声明它:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-ssd-demo
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

当然,例如,如果您有一些固态硬盘(SSD)和其他常规旋转金属,则还可以使用标签来优化选择哪些PV。

请注意,使用StorageClass进行静态配置的想法并不是正确的做法,因为StorageClasshow you describe storage for dynamic provisioning有联系。