我发现自己处于这样一种情况:我有必要根据容器示例的实际生存期来缩小它们的规模。在通过marathon的api进行缩减时,似乎会首先删除新示例。在缩小apachemarathon上的示例时,是否有我不知道的实现这种策略或策略的配置?
现在我正在使用marathonlb autoscale来自动调整运行示例的数量。但实际上引擎盖下发生的是 marathon-lb-autoscale
是否执行 PUT
请求更新 instances
当请求增加或减少时当前应用程序的属性。
scale_list.each do |app,instances|
req = Net::HTTP::Put.new('/v2/apps/' + app)
if !@options.marathonCredentials.empty?
req.basic_auth(@options.marathonCredentials[0], @options.marathonCredentials[1])
end
req.content_type = 'application/json'
req.body = JSON.generate({'instances'=>instances})
Net::HTTP.new(@options.marathon.host, @options.marathon.port).start do |http|
http.request(req)
end
end
end
我不知道 upgradeStrategy
在缩减示例时会考虑配置。在默认设置下,我无法实现预期的行为。
{
"upgradeStrategy": {
"minimumHealthCapacity": 1,
"maximumOverCapacity": 1
}
}
实际
示例1
示例2 PUT /v2/apps/my-app {instances: 3}
示例1
示例2
示例3 PUT /v2/apps/my-app {instances: 2}
示例1
示例2
预期
示例1
示例2 PUT /v2/apps/my-app {instances: 3}
示例1
示例2
示例3 PUT /v2/apps/my-app {instances: 2}
示例2
示例3
1条答案
按热度按时间1l5u6lss1#
可以指定
killSelection
直接在应用程序的配置中指定YoungestFirst
哪个先杀死最年轻的任务OldestFirst
先杀死最老的。参考文献:https://mesosphere.github.io/marathon/docs/configure-task-handling.html