4

我使用 kubeadm 在两个 Centos7 虚拟机上安装了 kubernetes。

我正在尝试遵循示例:使用有状态集Scalable-Cassandra-deployment-on-kubernetes示例部署 Cassandra。

创建本地卷有效,但kubectl get pvc始终会导致Pending状态。kubectl descrive pvc <*pvc name*>导致以下警告:

Events:
Type     Reason              Age                   From                         Message
----     ------              ----                  ----                         -------
Warning  ProvisioningFailed  54s (x16854 over 2d)  persistentvolume-controller  storageclass.storage.k8s.io "fast" not found

我不确定如何创建“快速”存储类以使卷能够成功创建并完成示例。

4

1 回答 1

4

创建持久卷时,您必须确保存在相应的存储类

StorageClass 为管理员提供了一种描述他们提供的存储“类别”的方法。不同的类可能映射到服务质量级别、备份策略或集群管理员确定的任意策略。Kubernetes 本身对类代表什么没有意见。这个概念有时在其他存储系统中称为“配置文件”。

例如,在您找到的 yaml 文件底部链接的指南中:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fast
provisioner: k8s.io/minikube-hostpath
parameters:
  type: pd-ssd

这是存储类的定义,api 和供应商确保它如何映射到实际存储,并取决于 Kubernetes 实现和运行位置。

因此,您应该仔细检查您是否声明了存储类:

$ kubectl get storageclasses --all-namespaces

如果您没有存储类,您应该创建它并指定正确的配置器,或者如果它只是一个测试,您可以考虑创建您已经拥有的存储类的卷声明。

例子

例如在 Google Kubernetes Engine 上运行,我默认有一个standard类。尝试部署声明时,我还有一条待处理的错误消息。

部署以下 yaml 文件(并注意配置已更改)我能够成功创建持久卷声明,因为现在 Kubernetes 知道我所说的“快速”类型是什么意思:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd  
parameters:
  type: pd-ssd
  zones: us-central1-a, us-central1-b
于 2018-04-16T15:51:08.910 回答