Flocker 为了给容器应用提供文件卷存储,比较简单的方式是在重用传统存储的基础上,加上适配容器规范的相应接口。 如上图所示,Flocker由控制服务作为总控制器,对外提供REST API接口,负责维持和更新系统的状态。 Flocker Agent安装在集群的每个节点上,负责确保每个节点上的本地状态符合系统期待的状态,如果发现本地状态和期待状态不符,Flocker Agent将采取必要的纠正措施,使得节点上的数据卷与集群系统的配置实现最终一致性 Flocker Plugin也部署在每个节点上,主要以插件形式与Docker、Kubernetes等容器平台的集成,不仅让容器可以使用Flocker提供的数据卷,还能够支持容器的迁移。 Flocker后端可采用各种常见的网络块设备,包括AWS EBS,OpenStack Cinder,EMC、DELL、NetApp、VMware VSAN/vVOL等,这些块设备配上驱动程序,即可由Flocker
Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3. 2.flocker插件实现容器集群的数据管理,共享和迁移等. 注意:a.最后一步下载flocker插件时,可能因为网速而下载时间很长,建议下载的flocker时跳过.Docker 数据卷flocker插件实现容器集群的数据管理,共享和迁移等.步骤,不影响后续操作. b.本过程需要flocker正确安装,Dcoker集群环境,如果提示没有flocker插件错误,可以跳过本步骤,Docker Swarm不是本次解析重点. wxl@wxl-pc:~$ sudo apt-get 安装Flocker Node Services(略过,过程繁琐,不再赘述,可以去clusterhq官方文档查看.) wxl@wxl-pc:~$ docker volume create -d flocker
将 Kubernetes 项目中 StorageOS,Flocker 和 Quobyte 等 in-tree 的卷插件都删除掉了。 ,可能还会记得 Flocker 这个工具, 这个工具主要解决的是容器化应用中数据卷管理的问题,这在 2015 年左右算是容器生态圈最主要解决的问题之一。 很自然的,Flocker 也是用 Python 构建的。 但就是这样一家看起来都还不错的公司,在它的 SaaS 服务推出预览版后的一段时间后,就突然宣布关闭了。 这背后更多的其实是商业化逻辑,尽管 Flocker 也曾火热一时,但在商业公司关闭后,也就直接停止维护了。 现在从 Kubernetes 中将其删除,很可能是在流行项目中最后一次看到 Flocker 的名字了。
Flocker 为了给容器应用提供文件卷存储,比较简单的方式是在重用传统存储的基础上,加上适配容器规范的相应接口。 如上图所示,Flocker由控制服务作为总控制器,对外提供REST API接口,负责维持和更新系统的状态。 Flocker Agent安装在集群的每个节点上,负责确保每个节点上的本地状态符合系统期待的状态,如果发现本地状态和期待状态不符,Flocker Agent将采取必要的纠正措施,使得节点上的数据卷与集群系统的配置实现最终一致性 Flocker Plugin也部署在每个节点上,主要以插件形式与Docker、Kubernetes等容器平台的集成,不仅让容器可以使用Flocker提供的数据卷,还能够支持容器的迁移。 Flocker后端可采用各种常见的网络块设备,包括AWS EBS,OpenStack Cinder,EMC、DELL、NetApp、VMware VSAN/vVOL等,这些块设备配上驱动程序,即可由Flocker
另一种做法 查看flock的man手册,我们发现它还有一个例子是这么做的: [ "${FLOCKER}" ! = "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || : 在脚本开头加上上面这么一行就可以了。例如: #! /usr/bin/env bash #来源:公众号编程珠玑 [ "${FLOCKER}" ! = "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || : #脚本要做的其他事情 sleep 1024 解释一下: 如果${FLOCKER
(三)Flocker:容器的分布式存储平台 原生的 Docker volume 不具备可移植性。于是,出现了Docker 的分布式卷解决方案 Flocker。 好处 1.容器的数据会被写入 Flocker 后端存储而不是主机上,因此,在主机出现故障时可以保证数据不丢失。2.在容器迁移时,Flocker 会自动地将卷从一个 host 移植到另一个 host。 Flocker 的结构: ? PS:数据卷在容器管理平台使用非常频繁,如果是本机安装一个软件的话,建议使用主机目录,因为自己来管理,目录还是比较方便的。
Flocker的vSphere存储驱动 微服务架构的容器里许多都是无状态的(stateless)的服务,如API gateway,web服务器等。 开源项目Flocker就是为解决上述问题而设计的,它把数据卷保存在共享存储上,在迁移容器时,将数据卷相应地挂载到目标主机的容器中。对容器而言,数据卷可以如影随形,“你走我也走”。 为了支持持久化容器应用的运行,VMware发布了开源的Flocker驱动程序,在ESX虚拟机运行的容器可以迁移到另一个ESX的虚拟机中,同时带上该容器的数据卷。 所有vSphere的datastore都支持Flocker,包括VSAN, VVOL, VMFS和NFS。通过这个驱动,分布式容器应用和分布式存储技术VSAN完美地结合,如同好马配好鞍一样。 ? 感兴趣的朋友可以看看以下ESX上Flocker的演示: ? AppCatalyst AppCatalyst直译就是“应用的催化剂”。
VMworld发布或展示的新产品和技术主要包括: vSphere Integrated Container (VIC), Photon Platform, 以及支持Flocker的ESX容器存储驱动。 Flocker的vSphere存储驱动 微服务架构的容器里许多都是无状态的(stateless)的服务,如API gateway,web服务器等。 开源项目Flocker就是为解决上述问题而设计的,它把数据卷保存在共享存储上,在迁移容器时,将数据卷相应地挂载到目标主机的容器中。对容器而言,数据卷可以如影随形,“你走我也走”。 为了支持持久化容器应用的运行,VMware发布了开源的Flocker驱动程序,在ESX虚拟机运行的容器可以迁移到另一个ESX的虚拟机中,同时带上该容器的数据卷。 感兴趣的朋友可以看看以下ESX上Flocker的演示: ? AppCatalyst AppCatalyst直译就是“应用的催化剂”。
例如, flocker或weave 。 插件可以在容器内部或外部运行。目前建议在容器外运行它们。 例如, flocker插件可能会产生UNIX socket 放在: /run/docker/plugins/flocker.sock 。 如果要彼此隔离定义,可以将每个插件定义到一个单独的子目录中。 例如,您可以创建flocker socket 放在/run/docker/plugins/flocker/flocker.sock,然后挂载到flocker容器里面/run/docker/plugins /flocker。
第二种则是Flocker,目前也是很火热的个项目。Flocker提供了开源容器数据卷管理系统。它提供了数据迁移的工具,从而解决了有状态服务的容器化难题。尤其适用于数据库这样的容器。 通常,容器的数据卷与单个server绑定,Flocker数据卷,则可以随容器迁移而迁移。Flocker为实现有状态的微服务提供了便利。 如上图所示,展示了存储随容器迁移的过程: 1.当容器发生迁移时,flocker可以保证容器所挂载的数据卷也会跟着同步迁移 2.迁移要求各个主机上都需要安装flockerplugin 3.原理其实是在其它主机上将容器启动的时候 因此,单个容器迁移时,服务存在一定的中断,但这个过程一般很短 flocker其实是我们比较心仪的方式。但是因为系统的限制,目前没有办法安装。我们同样对它保持着高度的关注。 •没有选择最新的Torus,因为它太年轻,不够成熟 •也没有选择flocker,因为无法在coreos系统上安装 •我们选择了比较保守的插件+对应后端存储的方案。 最终的选择:k8s+cephrbd。
支持以下类型的卷: awsElasticBlockStore azureDisk azureFile cephfs csi downwardAPI emptyDir fc (fibre channel) flocker flocker Flocker 是一款开源的集群容器数据卷管理器。它提供了由各种存储后端支持的数据卷的管理和编排。 flocker 允许将 Flocker 数据集挂载到 pod 中。 如果数据集在 Flocker 中不存在,则需要先使用 Flocker CLI 或使用 Flocker API 创建数据集。 如果数据集已经存在,它将被 Flocker 重新连接到 pod 被调度的节点上。这意味着数据可以根据需要在数据包之间“切换”。 重要提示:您必须先运行自己的 Flocker 安装程序才能使用它。 参考 Flocker 示例获取更多详细信息。
目前支持以下插件类型: GCEPersistentDisk、AWSElasticBlockStore、AzureFile、AzureDisk、FC(Fibre Channel)、FlexVolume、Flocker AWSElasticBlockStoreAWSElasticBlockStore ✓ - - AzureFile ✓ ✓ ✓ AzureDisk ✓ - - CephFS ✓ ✓ ✓ Cinder ✓ - - FC ✓ ✓ - FlexVolume ✓ ✓ - Flocker
Kubernetes提供了许多Volume类型: emptyDir hostPath gcePersistentDisk awsElasticBlockStore nfs iscsi flocker glusterfs
其他类型的 Volume iscsi: 使用 iSCSI 存储设备上的目录挂载到 Pod 中 flocker: 使用 Flocker 管理存储卷 glusterfs: 使用开源 GlusterFS 网络文件系统的目录挂载到 并不是定义在 Pod 上,而是独立于 Pod 之外定义的 PV 目前支持的类型包括: gcePersistentDisk、awsElasticBlockStore、AzureFile、AzureDisk、FC、Flocker
如下示例是使用flocker驱动器创建了一个命名卷my-named-volume,使其可以挂载到了容器的/opt/webapp目录: $ docker run -d -P \ --volume-driver =flocker \ -v my-named-volume:/opt/webapp \ --name web training/webapp python app.py 我们也可以使用docker $ docker volume create -d flocker --name my-named-volume -o size=20GB $ docker run -d -P \ -v my-named-volume
plugins from k8s codebase by Jiawei0227 · Pull Request #111620 · kubernetes/kubernetes cleanup: Remove flocker 将 Kubernetes 项目中 StorageOS,Flocker 和 Quobyte 等 in-tree 的卷插件都删除掉了。 其中 StorageOS 和 Quobyte 如果有在使用,建议往 CSI plugin 进行迁移,而 Flocker 则是由于不再维护了,所以并没有任何迁移计划。
Volumes | Kubernetes awsElasticBlockStore azureDisk azureFile cephfs downwardAPI emptyDir fc (光纤通道) flocker
22Secure%22%20Locker%20API%3A%20https%3A%2F%2Fdeveloper.salesforce.com%2Fdocs%2Fcomponent-library%2Ftools%2Flocker-service-viewer
:nil,ISCSI:nil,Glusterfs:nil,PersistentVolumeClaim:nil,RBD:nil,FlexVolume:nil,Cinder:nil,CephFS:nil,Flocker :nil,ISCSI:nil,Glusterfs:nil,PersistentVolumeClaim:nil,RBD:nil,FlexVolume:nil,Cinder:nil,CephFS:nil,Flocker
卷的类型 Kubernetes 支持以下类型的卷: awsElasticBlockStore、azureDisk、azureFile、cephfs、csi、downwardAPI、emptyDir、fc、flocker