【发布时间】:2020-10-30 18:33:34
【问题描述】:
我最近开始学习 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] 与 Pod 一起创建和删除
临时卷的存在使我得出以下两个结论之一:
- 容器不能在没有被授予权限(通过卷)的情况下写入磁盘,所以到目前为止我看到的每个教程都是废话,因为 mongo 会崩溃当您尝试存储数据时
- 临时卷没有意义,因为您可以已经在没有它们的情况下写入磁盘,那么它们有什么用途?
那么这些东西是怎么回事?为什么有人会创建一个临时卷?
【问题讨论】:
标签: docker kubernetes