【问题标题】:How to use OpenStack Cinder to create storage class and dynamically provision persistent volume in Kubernetes Cluster如何使用 OpenStack Cinder 在 Kubernetes 集群中创建存储类和动态配置持久卷
【发布时间】:2018-02-14 11:52:02
【问题描述】:

最近在练习kubernetes的时候,发现没有文档和例子专门解释如何在kubernetes中正确使用cinder。

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

【问题讨论】:

    标签: kubernetes openstack cinder


    【解决方案1】:

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

    参数

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

    volumeMounts

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

    音量

    -- hostPath:  
         path: /etc/kubernetes/cloud.conf  
         type: FileOrCreate  
       name: cloud
    

    【讨论】:

      【解决方案2】:

      我做了一些实验,并弄清楚了如何使用 kubernetes 设置 cinder。只需找到适合记录和分享的内容即可。

      准备

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

      背景

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

      步骤

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

      准备好你的 openstack 凭据并保存为文件,例如 kube-controller-manager 所在的 kubernetes 控制面板中的 /etc/kubernetes/cloud.conf。以下是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-file item 是可选的,取决于你的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。

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

      验证

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

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

      demo-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 中预置一个 Persistent Volume:

      demo-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
      

      kubectl create -f demo-pvc.yml 创建 PVC

      现在通过命令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 运行良好。

      【讨论】:

        猜你喜欢
        • 2019-04-22
        • 2019-03-29
        • 2017-09-03
        • 2018-07-26
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 2018-07-01
        • 2020-07-24
        相关资源
        最近更新 更多