我们要修复所有的春季云数据流任务,并将流部署固定到一组特定的节点上。
我可以手动完成此任务,例如
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
,但似乎都不起作用。正确的配置方法是什么?
关于通过船长进行流部署的相同问题。
我还应该如何为计划任务进行设置?
答案 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上进行合作。