配置任务处理

为无法访问的任务配置 Marathon

可以对不可访问的任务配置 Marathon 操作。借助应用程序或 pod 定义的 unreachableStrategy 参数,可以通过以下两种方式配置:定义何时启动新任务实例,以及定义何时排除任务实例。

"unreachableStrategy": {
	"inactiveAfterSeconds": "<integer>",
	"expungeAfterSeconds": "<integer>"
}

配置选项

  • inactiveAfterSeconds:任务实例不可访问的时间超过该值,就会被标记为非活动,且新实例将启动。此时尚未排除不可访问的任务。默认值为 0 秒。

  • expungeAfterSeconds:实例不可访问的时间超过此值,就会被排除。被排除的任务一旦恢复就会被关闭。实例常常在被排除之前就被标记为无法访问,但并不要求标记。此值必须大于 inactiveAfterSeconds,除非两者均为零。如果实例有与其关联的任何持久卷,该持久卷将会被销毁,而且相关数据会被删除。默认值为 0 秒。

可以将 inactiveAfterSecondsexpungeAfterSeconds 合在一起使用。例如,配置 inactiveAfterSeconds = 60expungeAfterSeconds = 120 之后,实例超过 120 秒仍然不可访问即被排除,如果超过 60 秒仍然不可访问,就会启动第二个实例。

关闭选项

还可以定义关闭选项,声明 Marathon 在重新扩展或另行关闭多项任务时,首先关闭的是最新还是最旧的任务。此参数的默认值为 YoungestFirst。也可以指定 OldestFirst

killSelection 参数添加到应用定义,或添加到 Pod 定义的 PodSchedulingPolicy 参数。

{
    "killSelection": "YoungestFirst"
}

持久卷

在实例无法访问时间超过 7 天而被 Marathon 排除之后,拥有持久卷的应用程序的默认 unreachableStrategy 就会创建带有新卷的新实例并删除现有卷(可能时)。

重要:删除不可访问实例的现有卷时,可能会删除数据。