如何在 Kubernetes 中使用 cinder 插件

How to use the cinder plugin in Kubernetes

在裸机上使用 Kubernetes 并尝试找出如何从 OpenStack 云提供商安装外部块存储卷。

我知道我需要使用 Cinder 插件https://github.com/kubernetes/kubernetes/tree/master/pkg/volume/cinder

我修改了一个我找到的例子来构建一个测试pod,volume简单定义如下,在pod定义中:

apiVersion: v1
kind: Pod
metadata:
  name: test
  labels:
    name: test
spec:
  containers:
    - image: busybox
      name: busybox
      command:
      - "sleep"
      - "3600"
      volumeMounts:
        - name: persistent-storage
          mountPath: /var/lib/storage
  volumes:
    - name: persistent-storage
      cinder:
        volumeID: bd82f7e2-wece-4c01-a505-4acf60b07f4a
        fsType: ext4

我有一个 volumeID 我从 OpenStack volume API.

我把它放在那里了,但我不确定卷是否真的被挂载了:

我不确定实际如何检查,但我猜想 df -h 会显示远程卷正在主机和容器中挂载,但我没有看到任何内容。

我想如果卷没有挂载,Kubernetes 会给我一个错误,pod 会失败或其他什么...但它运行。

所以,问题是:如何验证卷是否已安装?而且我相信它没有安装,我应该怎么做才能使这个 cinder 插件工作?

我搜索的结论是,使用块存储的节点也需要在同一个 OpenStack 集群上。

也就是说,不可能 (easily/standard) 将 Cinder 块存储挂载到不在 Open Stack 集群上的节点集群中。

参见: Kubernetes: using OpenStack Cinder from one cloud provider while nodes on another