Kubernetes:使用主机路径进行动态存储配置

Yud*_*udi 4 kubernetes devops minikube devops-services

我的问题是关于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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

无法创建配置程序:已禁用配置卷插件"kubernetes.io/host-path"

当我执行kubectl描述pvc task-pv-claim时,我可以看到此错误.此外,PV未创建,因此声明处于暂挂状态

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

jax*_*orm 7

看起来你可能没有运行配置器本身,所以没有什么可以实际创建主机路径目录的工作.

看看这里

这种方式的工作方式是hostpath provisioner从kubernetes API读取,并监视您创建存储类(已完成)和persistentvolumeclaim(也已完成).

当存在这些时,配置程序(作为pod运行)将执行a mkdir来创建主机路径.

运行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/docs/demo/hostpath-provisioner/pod.yaml
Run Code Online (Sandbox Code Playgroud)

然后重新创建您的存储类和pvc

  • 似乎答案中的示例代码已移至 https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner/blob/master/examples/hostpath-provisioner/pod.yaml 虽然文档是没有保留。它仍然可以在这里找到 https://github.com/kubernetes-incubator/external-storage/tree/96450ffccd05e1fe85c52f5b60a61b350a774afd/docs/demo/hostpath-provisioner (2认同)