创建持久卷导致 storageclass.storage.k8s.io“快速”找不到

Fle*_*lea 5 kubernetes kubeadm kubernetes-pvc

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

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

创建本地卷可以工作,但kubectl get pvc始终会导致状态为Pendingkubectl 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
Run Code Online (Sandbox Code Playgroud)

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

Gal*_*one 5

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

\n\n
\n

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

\n
\n\n

例如,在您在 yaml 文件底部链接的指南中,您会发现:

\n\n
kind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: k8s.io/minikube-hostpath\nparameters:\n  type: pd-ssd\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是存储类、API 和配置程序的定义,确保它如何映射到实际存储,并取决于 Kubernetes 实现及其运行位置。

\n\n

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

\n\n
$ kubectl get storageclasses --all-namespaces\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

例子

\n\n

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

\n\n

部署以下 yaml 文件(并注意配置已更改),我能够成功创建持久卷声明,因为现在 Kubernetes 知道我对类型“fast”的含义:

\n\n
kind: StorageClass\napiVersion: storage.k8s.io/v1\nmetadata:\n  name: fast\nprovisioner: kubernetes.io/gce-pd  \nparameters:\n  type: pd-ssd\n  zones: us-central1-a, us-central1-b\n
Run Code Online (Sandbox Code Playgroud)\n