7

最近在练习kubernetes的时候,发现没有一个doc和example专门解释如何在kubernetes中正确使用cinder。

那么如何设置 cinder 在 kubernetes 中使用呢?

4

2 回答 2

7

我做了一些实验,并弄清楚了如何使用 kubernetes 设置 cinder。只需找到一个合适的文档和共享。

准备

  • Kubernetes集群
  • openstack 环境并确保 cinder 服务可用

背景

根据我的调查,组件kube-controller-manager负责加载 Kubernetes 中的卷插件和相关插件。所以我们可以通过调整kube-controller-manager配置使 cinder 可用。

脚步

  1. 准备cloud.conf文件以包含您的 openstack 凭据

准备好你的 openstack creds 并保存为一个文件,例如/etc/kubernetes/cloud.conf在 kubernetes 控制面板中kube-controller-manager。以下是示例cloud.conf

[Global]
auth-url=$your_openstack_auth_url
username=$your_openstack_user
password=$your_user_pw
region=$your_openstack_reigon
tenant-name=$your_project_name
domain-name=$your_domain_name
ca-file=$your_openstack_ca

大多数可以从您的stackrc文件中找到。并且ca-fileitem 是可选的,取决于您的 openstack auth url 是http还是https

  1. 调整kube-controller-manager启动配置

此链接是kube-controller-manager( https://kubernetes.io/docs/admin/kube-controller-manager/ )的完整详细信息选项

实际上,我们应该根据您当前的参数添加两个额外的参数

--cloud-provider=openstack
--cloud-config=/etc/kubernetes/cloud.conf

主要有两种启动方式kube-controller-manager:1)使用systemd 2)使用静态pod。

只是一个提示,如果您使用静态 pod kube-controller-manager,请确保已将所有文件(例如 cloud.conf 或 openstack ca 文件)挂载到您的容器中。

确认

我们将创建一个存储类,并使用该存储类动态创建持久卷。

  1. 创建一个名为的存储类standard

演示-sc.yml:

apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "true"
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
provisioner: kubernetes.io/cinder

使用命令kubectl create -f demo-sc.yml创建并使用命令kubectl get sc验证它是否正确创建

NAME                 TYPE
standard (default)   kubernetes.io/cinder 
  1. 创建一个 PersistentVolumeClaim 以使用 StorageClass 在 Cinder 中提供一个持久卷:

演示 pvc.yml:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cinder-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: "standard"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

通过创建 PVCkubectl create -f demo-pvc.yml

现在通过命令检查kubectl get pvc

NAME           STATUS    VOLUME                                         CAPACITY   ACCESSMODES   STORAGECLASS   AGE
cinder-claim   Bound     pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379   1Gi          RWO           standard       23h

而在openstack环境下,通过命令检查cinder list | grep pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379

    root@ds0114:~# cinder list | grep pvc-5dd3d62e-9204-11e7-bc43- fa163e0e0379
| ddd8066d-2e16-4cb2-a89e-cd9d5b99ef1b | available | kubernetes-dynamic- pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379 |  1   |   CEPH_SSD  |  false   |                                       |

所以现在 StorageClass 在 Kubernetes 中使用 Cinder 运行良好。

于 2017-09-06T06:31:18.493 回答
2

非常感谢您的精彩分享!
该解决方案适用于我 ( K8S 1.14.3, OpenStack Queen),我刚刚添加了参数/volumeMounts/volume 的片段,如下所示:

参数

- --cloud-provider=openstack  
- --cloud-config=/etc/kubernetes/cloud-config  

卷装

-- mountPath: /etc/kubernetes/cloud-config  
   name: cloud  
   readOnly: true  

音量

-- hostPath:  
     path: /etc/kubernetes/cloud.conf  
     type: FileOrCreate  
   name: cloud
于 2020-12-11T07:35:53.400 回答