我在练习Introduction to Kubernetes时遇到了以下短语:
With Kubernetes and its plugins, we can automatically mount local, external, and storage solutions to the containers in a seamless manner, based on software-defined storage (SDS).
我以前看过它,但从未见过seamless manner
的解释。
什么是seamless manner
?在存储编排方面存在哪些方式?
答案 0 :(得分:0)
与noted here一样,所有这些资源都将以相同的方式声明/装入:
删除Pod或重新启动容器后,该容器文件系统中的所有数据也会被删除。
要在Pod之外保留数据,请使用“卷”。
有2种添加方式可将体积添加到Pod:
- 规格卷
该数组定义Pod清单中的容器可以访问的所有卷。请注意,并非所有容器都需要挂载Pod中定义的所有卷。- volumeMounts
该数组定义了装入特定容器的卷以及应装入每个卷的路径。请注意,一个Pod中的两个不同的容器可以在不同的安装路径上安装相同的卷。因此,首先在
spec.volumes
中,我们定义Pod中的容器可以使用哪些卷。
并且,在volumeMounts
中,我们实际上使用了它们
示例(来自同一篇文章)
apiVersion: v1 kind: Pod metadata: name: kuard spec: volumes: - name: "kuard-data" hostPath: path: "/var/lib/kuard" containers: - image: gcr.io/kuar-demo/kuard-amd64:1 name: kuard volumeMounts: - mountPath: "/data" name: "kuard-data" ports: - containerPort: 8080 name: http protocol: TCP
在这里,我们将
kuard-data
定义为卷,然后将其安装在kuard
容器上。有各种类型的卷:
- emptyDir
- 这种体积的大小取决于Pod的使用寿命,但可以在两个容器之间共享。 (在上面的示例中,这构成了我们的Git sync和Web服务容器之间进行通信的基础)。这可以在pod重新启动后幸存下来
- hostDir
- 这可以将工作节点上的任意位置安装到容器中
- 在上面的示例中使用了
- 例如,当广告连播想要直接访问实例的块存储时,可以使用此功能。但是,不应使用它来存储普通数据,因为并非所有主机都具有相同的基础目录结构。
- 网络存储
- 如果您希望数据在Pod移动,重新启动等情况下仍保留在Pod中,请使用基于网络的存储中可用的多个选项之一
- Kubernetes包括对NFS和iSCSI等标准协议的支持,以及对主要云提供商(公共和私有)的基于云提供商的存储API的支持
也就是说:
# Rest of pod definition above here volumes: - name: "kuard-data" nfs: server: my.nfs.server.local path: "/exports"
“无缝”部分是指“ Migrating to CSI drivers from in-tree plugins”中呈现的类似概念
启用CSI迁移功能后,会将针对现有树内插件的操作定向到相应的CSI插件(预计将被安装和配置)。
该功能实现了必要的转换逻辑和填充,以无缝方式重新路由操作。
因此,操作员在转换为取代树内插件的CSI驱动程序时,不必对现有存储类,PV或PVC(指树内插件)进行任何配置更改。在引入CSI和Flexvolume之前,所有的卷插件(如上面列出的卷类型)都是“ 树内”的,这意味着它们是与核心Kubernetes二进制文件一起构建,链接,编译和交付的并扩展核心Kubernetes API。
这意味着向Kubernetes(卷插件)添加新的存储系统需要将代码检查到核心Kubernetes代码存储库中。
因此,“无缝方式”在初始卷声明之外几乎不需要配置。