【问题标题】:Kubernetes : Dynamic Storage Provisioning using host-pathKubernetes:使用主机路径进行动态存储配置
【发布时间】:2017-09-01 04:18:35
【问题描述】:

我的问题是关于 PersistentVolumeClaim 我在 aws ec2 上设置了一个节点集群 我正在尝试使用 kubernetes.io/host-path 作为 Provisioner 创建一个存储类。

存储类的yaml文件内容如下,

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
namespace: kube-system
name: my-storage
annotations:
    storageclass.beta.kubernetes.io/is-default-class: "false"
labels:
    kubernetes.io/cluster-service: "true"
provisioner: kubernetes.io/host-path

PersistentVolumeClaim的yaml文件内容如下,

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
annotations:
    volume.beta.kubernetes.io/storage-class: my-storage
spec:
accessModes:
    - ReadWriteOnce
resources:
    requests:
    storage: 3Gi

当我尝试在 minikube 上创建存储类和 PVC 时,它正在工作。它正在创造 /tmp/hostpath_volume/ 中 minikube 上的卷 但是,当我在 aws ec2 上的一个节点集群设置上尝试类似的事情时,我收到以下错误

无法创建供应商:卷插件“kubernetes.io/host-path”中的供应被禁用

当我执行 kubectl describe pvc task-pv-claim 时,我可以看到这个错误,另外,PV 没有创建,所以声明处于挂起状态

我发现了类似 kube-controller-manager 的东西,它显示 --enable-dynamic-provisioning 和 --enable-hostpath-provisioner 在它的选项中,但不知道如何使用它。

【问题讨论】:

  • 你运行的是什么版本的 kubernetes? hostpath 配置器是否作为集群中的 pod 运行?
  • 我使用的是 kubectl 1.5.2 版。我没有得到你的第二个问题。我是这个 k8s 的新手。您的意思是“kubernetes.io/host-path”作为 pod 运行吗?

标签: kubernetes devops minikube devops-services


【解决方案1】:

看来您可能没有运行配置程序本身,因此实际上没有什么可以执行创建主机路径目录的工作。

看看here

其工作方式是主机路径配置器从 kubernetes API 中读取数据,并监视您创建存储类(您已完成)和持久化卷声明(也已完成)。

当它们存在时,provisioner(作为 pod 运行)将执行 mkdir 以创建主机路径。

运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/docs/demo/hostpath-provisioner/pod.yaml

然后重新创建你的 storageclass 和 pvc

【讨论】:

  • 您的解决方案似乎非常完美。谢谢这位先生。但是,我在做你的解决方案时遇到了问题。当我尝试执行您给出的命令时,pod 已部署但处于“ErrImagePull”状态。然后我尝试从hub.docker.com/r/jaxxstorm/hostpath-provisioner/tags 提取图像并尝试部署,但得到“F0406 19:52:27.642967 7 hostpath-provisioner.go:125] 无法创建配置:无法加载集群内配置,必须定义 KUBERNETES_SERVICE_HOST 和 KUBERNETES_SERVICE_PORT”你能帮帮我吗?
  • 默认情况下,kubernetes 应该映射一个令牌,以便它可以与 API 对话,但在您的情况下,这并没有发生。您的集群似乎无法正常运行。我会提出一个新问题,并详细说明您是如何引导集群的
  • @Yudi 我们在slack上聊天,你能接受答案吗
  • 似乎答案中的示例代码已移至github.com/kubernetes-sigs/sig-storage-lib-external-provisioner/… 尽管没有保留文档。它仍然可以在这里找到github.com/kubernetes-incubator/external-storage/tree/…
猜你喜欢
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多