Kubernetes 第三方存储卷插件 Ceph

阅读时长 10 分钟读完

前言

Kubernetes 是一个开源的容器编排系统,支持自动部署、扩展和管理容器化应用程序。Kubernetes 的存储模型中,每个 Pod 都有自己的文件系统,Pod 可以使用 emptyDirconfigMapsecretprojected 等内置卷类型存储数据。另外,Kubernetes 还支持使用非本地存储卷来存储数据,这些存储卷可以是公有云的云盘、分布式存储系统、分布式文件系统等等。其中,Ceph 是一个分布式存储系统,提供对象存储、块存储和文件存储服务,被广泛应用于云计算、大数据、容器等领域。

本文介绍 Kubernetes 第三方存储卷插件 Ceph,在 Kubernetes 中如何使用 Ceph 存储卷,并提供相应的示例代码。

Ceph 存储卷插件介绍

Kubernetes 官方提供了 CSI(Container Storage Interface)规范,CSI 是一个轻松实现新存储系统的开放标准。Ceph CSI Driver 是一个符合 CSI 规范的 Ceph 存储卷插件,可以帮助用户在 Kubernetes 上快速、灵活地使用 Ceph 存储卷,支持 RBD(块存储)、RadosGW(对象存储)和 CephFS(文件存储)三种存储类型。Ceph CSI Driver 目前已被推荐为 Kubernetes 上使用 Ceph 存储卷的首选方式。

Ceph CSI Driver 提供了以下主要功能:

  • 动态 Provisioning:支持使用 Ceph 存储卷作为动态存储卷,可以自动创建块设备、对象存储桶和文件系统。
  • 静态 Provisioning:支持使用现有的块设备、对象存储桶和文件系统作为存储卷。
  • 磁盘卸载和删除保护:避免误删除和冻结正在使用的存储卷。

安装 Ceph CSI Driver

安装 Ceph 集群

Ceph CSI Driver 需要连接到一个 Ceph 存储集群。本文仅介绍如何在 Ubuntu 16.04 上安装 Ceph 系统,请参考 Ceph 官方文档获取更多信息。

安装完成后,使用 ceph-deploy 工具在 Ubuntu 16.04 上部署 Ceph 集群。

-- -------------------- ---- -------
- ----- ---------

- -- ---------

- ----------- --- ------ ------ ------

- ----------- ------- ------ ------ ------

- ----------- --- --------------

- ----------- --- ------ ------
展开代码

最后,可以使用 ceph 命令测试 Ceph 集群的运行状态。

部署和配置 Ceph CSI Driver

Ceph CSI Driver 由四个部分组成:CSI Driver、Provisioner、Resizer 和 Attacher。其中,CSI Driver 和 Attacher 运行在 Kubernetes 容器中,Provisioner 和 Resizer 运行在 Ceph 存储集群中。

  1. 在 Ceph 存储集群上创建 Rados Gateway 用户。

ceph01 上执行以下命令,创建一个 Rados Gateway 用户。

  1. 创建 Ceph 存储卷插件的配置文件。

ceph01 上执行以下命令,创建配置文件 ceph-csi-configmap.yaml

-- -------------------- ---- -------
----------- --
----- ---------
---------
  ----- ------------------
  ---------- -----------
-----
  ------------ -
    -
      ----------- --------------- -------------- ---------------
      ----------- --------
      ------------------ -
        ------------------------- -----
        --------------- -
          -------------------- -
            ------- ------
            --------- ---
            ---------------- ---
            --------- -------
            ---------- ---
            ------------ ---
            ------ ---
            ------------ --
          --
          ------- ---------
          -------------- ----------------------------
          ------------- -
            ------------ ---
            ------------ ---
            -------- -----
          --
          ----------------------- -----
        --
        -------------- -
          -------- --------------------------------
        --
        -------------------------- -
          ------- ----------------------
        --
        -------------------- -
          ------- ----------------------
        --
        ------------------------- -
          ------- ----------------------
        --
        ----------------------- ----
      --
      ---------------------------- -
        -------- --------------------------------
      --
      ----------- -
        -------- --------------------------------
      --
      -------------- -
        -------- --------------------------------
      -
    -
展开代码
  1. 使用 kubectl 命令创建 ConfigMap 对象。

kube-apiserver 上执行以下命令,在 Kubernetes 中创建 ConfigMap 对象。

  1. 创建存储卷插件所需的 Secret 对象。

ceph01 上执行以下命令,创建存储卷插件所需的 Secret 对象。

  1. 部署 Ceph CSI Driver 到 Kubernetes 中。

kube-apiserver 上执行以下命令,部署并启动 Ceph CSI Driver。

-- -------------------- ---- -------
- ------- ------ -- ---------------------------------------------------------------------------------------------------------------------------

- ------- ------ -- --------------------------------------------------------------------------------------------------------------------------

- ------- ------ -- ------------------------------------------------------------------------------------------------------------------------

- ------- ------ -- ----------------------------------------------------------------------------------------------------------------------

- ------- ------ -- ---------------------------------------------------------------------------------------------------------------------

- ------- ------ -- -------------------------------------------------------------------------------------------------------------------
展开代码
  1. 安装 Ceph 存储卷插件的 StorageClass。

ceph01 上执行以下命令,创建存储卷插件的 StorageClass。

  1. 测试存储卷插件。

执行以下命令,创建一个使用 Ceph 存储卷的 Pod。

-- -------------------- ---- -------
----------- --
----- ---
---------
  ----- -----------
-----
  -----------
  - ----- -----------
    ------ ------
    -------- -------- ----- ------------
    -------------
    - ----- -------------
      ---------- -------------
  --------
  - ----- -------------
    ----------------------
      ---------- ----------
---
----- ---------------------
----------- --
---------
  ----- ----------
  ------------
    ---------------------------------------- ------
-----
  ------------
  - -------------
  ----------
    ---------
      -------- ----
展开代码

结语

本文介绍了 Kubernetes 第三方存储卷插件 Ceph,以及如何在 Kubernetes 中使用 Ceph 存储卷。通过学习本文,读者可以掌握使用 Ceph 存储卷的基本知识,并能使用示例代码快速上手。在实际生产环境中,应根据实际需求和场景,灵活运用 Ceph 存储卷在 Kubernetes 中存储和管理数据。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d046e6e46428fe9ed1fbac

纠错
反馈

纠错反馈