Kubernetes - 动态配置存储

时间:2016-10-20 21:21:56

标签: docker storage kubernetes google-kubernetes-engine

我的部署配置如下:

apiVersion: extensions/v1beta1
kind: Deployment
--- REMOVED FOR BREVITY ---
      volumes:
      - gcePersistentDisk: {fsType: pd-ssd, pdName: devtasker-disk}
        name: devtasker-disk
      - gcePersistentDisk: {fsType: pd-ssd, pdName: devtasker-pg}
        name: devtasker-pg

这样可以正常工作,但是它需要手动创建持久卷,然后才能进行部署。

我在Kubernetes 1.4中看到他们已经发布了" Dyanmic Provisioning&存储类"。

我添加了一个存储类,如下所示:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: ssd-storage
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

我现在想在上面提到的部署配置文件中添加PVC。上述存储类的标准PVC如下所示:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations: {volume.beta.kubernetes.io/storage-class: ssd-storage}
  name: claim1
spec:
  accessModes: [ReadWriteOnce]
  resources:
    requests: {storage: 30Gi}

我很难将上面的PVC放到上面第一个代码块中提到的部署配置中。

我试过了:

      volumes:
      - gcePersistentDisk: {fsType: pd-ssd, pdName: devtasker-disk}
        name: devtasker-disk
      - gcePersistentDisk: {fsType: pd-ssd, pdName: devtasker-pg}
        name: devtasker-pg
      - persistentVolumeClaim: {claimName: ssd-storage, annotations: {volume.beta.kubernetes.io/storage-class: ssd-storage}}
        name: ssd-storage

..但我没有任何运气与许多不同的组合。我得到以下内容:

error validating "kubernetes/deployment.yml": error validating data: found invalid field annotations for v1.PersistentVolumeClaimVolumeSource; if you choose to ignore these errors, turn validation off with --validate=false

有人可以指点我在正确的方向吗?

1 个答案:

答案 0 :(得分:2)

存储类告诉如何创建PV。 PVC声明从下划线基础结构请求实际PV。

您的部署应该只知道PVC,因此使用您的示例最终会得到以下内容并删除gcePersistentDisk条目:

volumes:
   - name: storage
     persistentVolumeClaim
       claimName: claim1
   - name: storage2
     persistentVolumeClaim
       claimName: claim2