开发者社区> 问答> 正文

是否可以将不同的volume安装到同一部署的pod中

k8s小能手 2019-01-09 14:30:04 329

我有一群gce airflow(composer)集群和一群worker:

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
airflow-redis-0 1/1 Running 0 7h
airflow-scheduler 2/2 Running 0 7h
airflow-sqlproxy 1/1 Running 0 8h
airflow-worker 50/50 Running 0 7h
composer-fluentd-daemon 1/1 Running 0 7h
composer-fluentd-daemon 1/1 Running 0 7h
我还有一堆独特的持久NFS volume,其中包含需要处理的数据。有没有办法动态地为每个相应的工作人员安装不同的NFS volume。

或者,在worker中调用的DockerOperator是否可以挂载与其特定工作负载相关的NFS volume。

从理论上来说,工作流程将是:Spin up 1x worker per Dataset> Get Dataset> Run Dataset through Model>Dump results

实现此目的的一种方法是将数据集下载到正在处理它的给定pod中; 但是,这些数据集的数量是几百gb,需要针对不同的型号进行多次处理。

最终我们计划将所有这些数据放在BigTable中,但是我需要在使用具有几百gb数据的卷的概念中展示一个证明,然后我们开始启动一个包含多个tb数据的BigTable集群。

分布式数据库 PHP Perl
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:25:00

    您描述的工作流程更好地匹配作业模型而不是普通(长期运行)Pod。您需要为指向其各自数据的每个任务创建单独的作业规范,如果您的群集正在执行其他工作,则需要注意您的批量数据处理窗格不会占用可用的计算资源。

    您是否实际拥有不同的NFS volume(服务器名称/导出的目录),或者只有一个NFS volume中的许多文件树?如果是后者,另一个可以很好地工作的路径是设置像RabbitMQ这样的排队系统,并将所有路径加载到队列中。然后,您将编写一个长时间运行的进程,该进程从队列中连续读取单个项目,对其执行任何所需的工作,写入其结果,提交工作项目并重复(在单个线程中)。然后,您可以使用部署扩展到所需的并行处理量。

    在任何情况下,您的输出表明您直接使用裸pod,并尝试通过在单个pod中包含许多并行工作容器来扩展工作者。最好使用其中一个更高级别的控制器(最常见的是部署)并使用其replicas:控件启动所描述的pod的多个副本。除此之外,这将允许您跨多个节点分散负载,并允许您进行滚动更新,其中pod被逐步重新启动,如果您更改底层映像或pod的其他详细信息,则可以避免中断。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程