为Kubernetes上的Spring Cloud Dataflow任务和流部署设置节点选择器

时间:2019-06-26 15:19:42

标签: spring-cloud-dataflow

我们要修复所有的春季云数据流任务,并将流部署固定到一组特定的节点上。

我可以手动完成此任务,例如

task launch test-timestamp --properties "deployer.*.kubernetes.deployment.nodeSelector=env:development"

(这并不明显,因为https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#configuration-kubernetes-deployer的文档似乎暗示关键只是nodeSelector而不是Deployment.nodeSelector)

这可以将节点选择器正确地添加到kubernetes的pod yaml中。

但是我希望自动设置该属性,即使用SCDF服务器配置中的task.platform.kubernetes.accounts.default属性。

我尝试过:

task.platform.kubernetes.accounts.default.deployment.nodeSelector: env:development

task.platform.kubernetes.accounts.default.nodeSelector: env:development

,但似乎都不起作用。正确的配置方法是什么?

关于通过船长进行流部署的相同问题。

我还应该如何为计划任务进行设置?

1 个答案:

答案 0 :(得分:1)

对不起,您不得不尝试一些选择才能找到找到正确的正确部署者属性的底部。

通常,在SCDF的Shell / UI中,deployer令牌是spring.cloud.deployer.kubernetes属性的缩写。当您需要在流/任务中配置更多部署者属性时,这是一件重复的事情,因此,我们有一个简短的形式。

但是,nodeSelector并不是具有默认值的部署程序级属性。它仅可作为部署级别属性使用,这意味着,仅可作为每个部署的选项。

换句话说,它不能作为“全局”配置的选项使用,因此这就是task.platform.kubernetes.accounts.default.deployment.nodeSelector: env:development未被考虑的原因。通过Skipper的Streams也是如此。

但是可以改进。我创建了spring-cloud/spring-cloud-deployer-kubernetes#300进行跟踪-随时订阅通知。然后,流和任务都应该能够将其用作全局配置。 PR合并后,您应该可以使用SCDF的2.2.0.BUILD-SNAPSHOT映像进行尝试。

对于K8s-scheduler实现,我们尚不支持nodeSelectors。我创建了spring-cloud/spring-cloud-scheduler-kubernetes#25-如果您想从K8s-deployer移植功能,我们可以在PR上进行合作。