Skip to content
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.

v1.3.0

Compare
Choose a tag to compare
@jasongilanfarr jasongilanfarr released this 19 Sep 12:23
· 2303 commits to master since this release

Changes from 1.1.0 to 1.3.0

Recommended Mesos version is 1.0.0

Breaking Changes

You need Mesos 1.0.0 or higher

Starting with Marathon 1.3.0, Mesos 1.0.0 or later is required.

New leader election library

The leader election code has been greatly improved and is based on Curator,a well-known, well-tested library. The new leader election functionality is now more robust.

Caution: the new leader election library is not compatible with Marathon versions prior to 1.3.0
To upgrade to this version, stop all older Marathon instances before the new version starts.
Otherwise, there is a risk of more than one leading master.

Framework authentication command line flags

Prior versions of Marathon have tried to authenticate whenever a principal has been provided via the command line.
Framework authentication is now explicit. There is a command line toggle option for authentication: --mesos_authentication.
This toggle is disabled by default. You must now supply this flag to use framework authentication.

Changed default values for TASK_LOST GC timeout

If a task is declared lost in Mesos, but the reason indicates it might come back, Marathon waits for the task to come back for a certain amount of time.
To configure the behavior you can use --task_lost_expunge_gc, --task_lost_expunge_initial_delay, --task_lost_expunge_interval.
Until version 1.3 Marathon has handled TASK_LOST very conservatively: it waits for 24 hours for every task to come back.
This version reduces the timeout to 75 seconds (task_lost_expunge_gc), while checking every 30 seconds (task_lost_expunge_interval).

Overview

Universal Containerizer

Starting with version 1.3.0, Marathon supports docker container images without having the Docker Containerizer depend on a Docker Engine. Instead the Mesos containerizer with native AppC support added in Apache Mesos version 1.0 (released July 2016) directly uses native OS features to configure and start Docker containers and to provide isolation.

TASK_LOST behavior

If Mesos agents get detached from the Mesos master, all tasks are assumed LOST.
The reaction of Marathon in the past was to kill LOST tasks. Under certain configurations, however, those agents were able to rejoin the cluster, so LOST was not a terminal state.

In this version, Marathon will wait until a LOST task is assumed dead. This amount of time is configurable. The default timeout is 75 seconds. LOST tasks after that timeout get killed by Marathon.

This change was so important that we back ported this functionality to prior versions of Marathon.

Task Kill Grace Period

Every application can now define a kill grace period.
When killing a task, the agent will wait in a best-effort manner for the grace period specified before forcibly destroying the task.
The task must not assume that it will always be allotted the full grace period, as the agent may decide to allot a shorter period and failures/forcible terminations may occur.

MAX_PER constraint

Applications in Marathon can now be constrained by MAX_PER operators.
It can be used, for example, to limit tasks across racks or data centers.

Virtual heartbeat monitor

Previous versions of Marathon did not recognize when it had been detached from Mesos master during network partitions.
The virtual heart beat will make sure that Marathon recognizes this situation and abdicates.

Authorization to system endpoints

Marathon already has authorization hooks for AppDefinition and Group changes.
We added authorization hooks for system endpoints: /v2/leader, /v2/info, /v2/events , /v2/eventSubscriptions.

Support for secrets API

It is now possible to use secrets in your AppDefinition.
Secrets are defined as a first-class entity and are used inside environment variables.
Please note: there is no native Mesos support for secrets at the moment.
We have defined a plugin interface to handle secrets.
You need a plugin in order to use this feature effectively.

Support for Nvidia GPU

It is now possible to use gpus as Nvidia GPU resource required in your AppDefinition.
gpus is defined as a first-class entity and can be supported by Mesos containerizer when
--enable_features gpu_resources flag is set in Marathon.
Please note: this feature is valid only when Mesos is compiled with Nvidia GPU support.

Support all attribute types with constraints

Non-text type attributes (such as scalar or range) are now supported.

ZooKeeper digest authentication support

The ZK client now supports ZK authentication and ACLs.

Support for virtual networking for docker containers.

Added support for Docker USER networking.

CNI networking support

Added the optional field ipAddress.Name, which can be used to start a task using CNI networking.

Enforce the uniqueness of service ports

Marathon will now ensure for newly created or updated applications, that the services ports are not used by another application.

Caution: this change might lead to Marathon rejecting app definitions that used to be accepted by previous versions.

Performance improvements

  • Fixes #4095 - Used Map instead of Set to store apps in Group. (#4096)
  • Improve servicePort validation performance. (#4115)
  • Made dependencyGraph only be called once per Group instance. (#4116)
  • Fixes #3991 - Use suppressOffers (#3992)

Fixed issues

  • Fixed lost tasks garbage collection (#4203)
  • Fix container changes on app update. (#4185)
  • #3795 - Added GPU support for Marathon API (#4112)
  • #3972 - network/cni support (#3974)
  • #4129 - TaskOpProcessorImplTest is flaky (#4148)
  • #4093 - Refactor MigrationTo1_2Test using async/wait (#4128)
  • #4095 - Used Map instead of Set to store apps in Group. (#4096)
  • #4085 - Stopping all running deployments instead of cancelling (#4086)
  • #4071 - Service Port validations are not consistently enforced (#4077)
  • #3991 - Use suppressOffers (#3992)
  • #3515 - Create MAX_PER constraint. (#3989)
  • #3515 - Update AppDefinition.json schema (#3993)
  • #3970 - Validate constraints
  • #3926 - Create PORT_NAME environment variable when we defined portDefinitions with name (#3982)
  • #3981 and #3963 - Allow health-checks to be performed directly against specified ports
  • #3977 - Add jenkins shell script for Velocity Integration
  • #3970 - Improve docs for LIKE/UNLIKE
  • #3851 - Allow dynamically reserved resources for normal task matching (#3855)
  • #3848 - Size check for deployments (#3852)
  • #3843 - Fixing the upgradeStrategy/residency defaults (#3846)
  • #3291 - Event subscriptions validation (#3787)
  • #3261 - http_event_request_timeout set the HTTP timeout (#3827)
  • #3813 - handling TASK_KILLING status updates (#3829)
  • #3694 - enabling chaos gzip handling. - use chaos 0.8.6 with gzip handling - add http_compression flag - bump version of scallop to 1.0 - deprecate asset_path property
  • #3806 - Do not silently fail on reservations (#3808)
  • #3472 - Remove MarathonTask from most code (#3778)
  • #3723 - Fix validation of duplicate volume names (#3737)
  • #3505 - Adding documentation for ReadinessChecks (#3711)
  • #3648 - LaunchQueue: Do not defer TaskChanged (#3721)

List of Contributors

Commits Contributor
47 Matthias Veit
37 Gastón Kleiman
16 Matthias Eichstedt
16 Jason Gilanfarr
14 Johannes Unterstein
13 James DeFelice
13 Suzanne Scala
12 Peter Kolloch
11 sascala
7 Dr. Stefan Schimanski
5 Michael Park
3 jmlvanre
3 Cuauhtemoc(Tito) Sandoval
3 Sunil Shah
3 Karsten Jeschkies
3 Pierluigi Cau
3 Nathan Murthy
3 janisz
2 Aaron Bell
2 Bernd Mathiske
2 John Garcia
2 Ken Sipe
2 Micah Hausler
2 Tim Harper
2 Tito Sandoval
1 Mathieu Chataigner
1 Kapil Arya
1 oilbeater
1 Joerg Schad
1 Michał Łowicki
1 Joel Hamill
1 Jan Ulferts
1 Jan Schlicht
1 Ramona Misaila
1 Ricardo Hermida Ruiz
1 Saulius Valatka
1 Florian Leibert
1 Brenden Matthews
1 Aaron Wood
1 vixns
1 Tomasz Janiszewski
1 Tomasz Mosiej
1 Yubo Li
1 annaken
1 Balthazar Rouberol
1 Alexander Golonzovsky
1 karsten
1 Lukas Lösche
1 Mateusz Gajewski
1 Lukas Loesche

git shortlog -s -n v1.1.0..v1.3.0

Downloads

Tarball:
http://downloads.mesosphere.com/marathon/v1.3.0/marathon-1.3.0.tgz

SHA:
http://downloads.mesosphere.com/marathon/v1.3.0/marathon-1.3.0.tgz.sha256

Docker:
https://registry.hub.docker.com/u/mesosphere/marathon with tag v1.3.0

Packages are also available via the Mesosphere repositories.
See: https://mesosphere.com/blog/2014/07/17/mesosphere-package-repositories/