gpt4 book ai didi

docker - 临时卷在 Kubernetes 中的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 11:59:13 26 4
gpt4 key购买 nike

我最近开始学习 Kubernetes,我注意到在网上的各种教程中几乎没有提到 Volumes。教程涵盖 Pod、ReplicaSet、部署和服务——但它们通常以使用这四者的组合构建的一些示例微服务应用程序结束。当涉及到数据库时,他们只需使用“mongo”镜像部署一个 pod,给它一个名称和一个服务,以便其他 pod 可以看到它,然后将其保留。没有讨论如何将数据写入磁盘。
因此,我只能假设在没有额外配置的情况下,允许容器将文件写入磁盘。我不相信这意味着文件在容器重新启动时是持久的,但是如果我像这样编写一个简单的 NodeJS 应用程序:

const fs = require("fs");
fs.writeFileSync("test.txt", "blah");
const value = fs.readFileSync("test.txt", "utf8");
console.log(value);
我怀疑这会正确输出“blah”并且不会由于无法写入磁盘而崩溃(请注意,我没有对此进行测试,因为我仍在学习 Kubernetes,我还没有达到我知道的地步如何将我自己的自定义图像放在我的集群中——到目前为止,我只在 Docker Hub 上加载了图像)
在阅读 Kubernetes Volumes 时,但是,我遇到了 Ephemeral Volume -- 一卷:

get[s] created and deleted along with the Pod


临时卷的存在使我得出以下两个结论之一:
  • 容器 不能在没有被授予权限的情况下写入磁盘(通过卷),所以到目前为止我看到的每个教程都是废话,因为当你尝试存储数据时 mongo 会崩溃
  • 临时卷没有意义,因为您可以 已经没有它们写入磁盘,那么它们有什么用途?

  • 那么这些东西是怎么回事呢?为什么有人会创建一个临时卷?

    最佳答案

    容器进程始终可以写入容器本地文件系统(Unix 权限允许);但是一旦 pod 被删除,那里的任何内容都会丢失。 Pod 可以相当常规地删除(例如,如果您需要升级镜像)或超出您的控制范围(如果它所在的节点已终止)。
    在文档中,types of ephemeral volumes强调两个主要的事情:

  • emptyDir卷,通常用于在单个 pod 中的容器之间共享内容(更具体地说,用于将数据从 init 容器发布到主容器);和
  • configMap 注入(inject)数据, downward API ,或其他可能完全是人工的数据源

  • 在这两种情况下,数据“就像一个卷”:你指定它来自哪里,它被挂载到哪里,它隐藏了底层图像中的任何内容。如果 pod 被删除并重新创建,底层存储恰好不是持久的,这与持久卷不同。
    通常,数据库的预打包版本(如 Helm 图表)将包含一个持久卷声明(或在有状态集中为每个副本创建一个),因此即使 pod 被破坏,数据也会保持不变。

    关于docker - 临时卷在 Kubernetes 中的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64601484/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com