【问题标题】:Setting node selector for spring cloud dataflow task and stream deployments on kubernetes在 kubernetes 上为 spring 云数据流任务和流部署设置节点选择器
【发布时间】:2019-11-08 14:20:34
【问题描述】:

我们想要修复我们所有的 Spring Cloud 数据流任务并将部署流式传输到一组特定的节点。

我为示例任务手动工作,例如

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

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

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

另外,我该如何为计划任务进行设置?

【问题讨论】:

    标签: spring-cloud-dataflow


    【解决方案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 用于跟踪 - 随时订阅通知。 Streams 和 Tasks 都应该能够利用它作为全局配置。合并 PR 后,您应该可以使用 SCDF 的2.2.0.BUILD-SNAPSHOT 图像进行尝试。

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

    【讨论】:

    • K8s-deployer #300 已经处于 PR 状态 - 如果您有兴趣尝试,请参阅 here for instructions
    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多