At least the following reasons can lead to a task being killed:
- The executor decided to kill it, e.g., if it was unhealthy.
- The framework requested the kill.
- An operator requested the kill.
The executors bundled with Mesos don't set a reason in the TaskStatus message, making it hard to debug task kills.
I think that we should extend the TaskStatus.Reason enum with reasons for those three cases.
In the case of health check failures, the executors should also populate the message field with useful debugging information.