Kubernetes 中如何进行持久化存储

阅读时长 6 分钟读完

在 Kubernetes 中,持久化存储是一个非常重要的话题。在容器化应用程序中,数据通常是存储在容器内的文件系统中。但是,当容器被删除或重新启动时,这些数据将会丢失。这就需要我们使用持久化存储来保存应用程序的数据。本文将介绍 Kubernetes 中如何进行持久化存储,并提供相关的示例代码。

Kubernetes 中的持久化存储

Kubernetes 中的持久化存储可以通过两种方式实现:静态卷和动态卷。

静态卷

静态卷是在 Kubernetes 集群之外手动创建的卷。这些卷可以是云存储服务(如 AWS EBS 或 GCP Persistent Disk),也可以是本地存储设备(如 NFS 或 iSCSI)。静态卷需要在 Kubernetes 中进行配置,以便容器可以使用它们。

以下是一个静态卷的 YAML 配置示例:

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

在这个示例中,我们创建了一个名为 my-pv 的持久化卷。它的容量为 1GB,访问模式为 ReadWriteOnce,并且在卷被删除后保留数据。它使用了名为 my-storage-class 的存储类别,并使用 AWS EBS 作为存储设备。

动态卷

动态卷是在 Kubernetes 中自动创建的卷。它们需要一个存储类别来定义卷的属性。当容器需要使用卷时,Kubernetes 将自动创建一个符合存储类别定义的卷。

以下是一个动态卷的 YAML 配置示例:

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

在这个示例中,我们创建了一个名为 my-pvc 的持久化卷声明。它的访问模式为 ReadWriteOnce,申请的存储容量为 1GB,并使用名为 my-storage-class 的存储类别。

示例代码

以下是一个使用静态卷的 Node.js 应用程序的示例代码:

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

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

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

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

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

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

在这个示例中,我们创建了一个 Node.js 应用程序,它可以读写一个名为 /data/my-file.txt 的文件。我们可以使用静态卷将这个文件保存在云存储设备中,以便在容器被删除或重新启动时保留数据。

以下是一个使用动态卷的 MySQL 数据库的示例代码:

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

在这个示例中,我们创建了一个 MySQL 数据库部署,并将数据保存在动态卷中。我们可以使用动态卷声明将 MySQL 数据库与存储类别关联,以便在容器被删除或重新启动时保留数据。

结论

在 Kubernetes 中进行持久化存储是非常重要的。本文介绍了 Kubernetes 中的两种持久化存储方式:静态卷和动态卷,并提供了相关的示例代码。通过使用持久化存储,我们可以确保容器中的数据在容器被删除或重新启动时不会丢失。

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

纠错
反馈