可以对不可访问的任务配置 Marathon 操作。借助应用程序或 pod 定义的 unreachableStrategy
参数,可以通过以下两种方式配置:定义何时启动新任务实例,以及定义何时排除任务实例。
"unreachableStrategy": {
"inactiveAfterSeconds": "<integer>",
"expungeAfterSeconds": "<integer>"
}
配置选项
-
inactiveAfterSeconds
:任务实例不可访问的时间超过该值,就会被标记为非活动,且新实例将启动。此时尚未排除不可访问的任务。默认值为 0 秒。 -
expungeAfterSeconds
:实例不可访问的时间超过此值,就会被排除。被排除的任务一旦恢复就会被关闭。实例常常在被排除之前就被标记为无法访问,但并不要求标记。此值必须大于inactiveAfterSeconds
,除非两者均为零。如果实例有与其关联的任何持久卷,该持久卷将会被销毁,而且相关数据会被删除。默认值为 0 秒。
可以将 inactiveAfterSeconds
和 expungeAfterSeconds
合在一起使用。例如,配置 inactiveAfterSeconds = 60
和 expungeAfterSeconds = 120
之后,实例超过 120 秒仍然不可访问即被排除,如果超过 60 秒仍然不可访问,就会启动第二个实例。
关闭选项
还可以定义关闭选项,声明 Marathon 在重新扩展或另行关闭多项任务时,首先关闭的是最新还是最旧的任务。此参数的默认值为 YoungestFirst
. 也可以指定 OldestFirst
.
将 killSelection
参数添加到应用定义,或添加到 Pod 定义的 PodSchedulingPolicy
参数。
{
"killSelection": "YoungestFirst"
}
持久卷
在实例无法访问时间超过 7 天而被 Marathon 排除之后,拥有持久卷的应用程序的默认 unreachableStrategy
就会创建带有新卷的新实例并删除现有卷(可能时)。