-
Notifications
You must be signed in to change notification settings - Fork 92
Enable Kubernetes Mesos Integration support revocable resources #795
Comments
Thanks for much for sharing this! Revocable resources has definitely come up in prior conversations. A sticky point w/ respect to the current implementation in mesos is this:
For k8sm "the whole container" means the custom executor container that hosts the kubelet-executor and kube-proxy processes (as well as the k8s-instantiated Docker containers/procs if you're running w/ cgroup reparenting). This means that even if just one pod is using revocable resources and a QoS controller decides that it wants those particular resources back, the controller will end up killing all k8sm-related procs on the slave (read: all pods die because one pod's resources needed to be revoked). A related topic that's surfaced in Mesos-land is nested containerization support, so that custom executors may spawn child containers that are independently isolated via mesos containerization. This appears, at least at the surface, to have interesting implications for revocable resources. Did you have any work-arounds in mind for dealing with the current QoS-killed-all-my-pods scenario? |
Thanks @jdef , just append some of my thoughts here:
For now, only "scavenge resources" revocable is supported, I will raise this issue in Mesos community to see how we can move this forward. Hope this helps ;-) |
Used to do some investigation on supporting revocable resources in Kubernetes (filed an issue at kubernetes/kubernetes#19529). Currently, only QoS support revocable; so the behaviour is simple: kill the revocable resources directly. There's several tickets in Mesos community on revocable's behaviour (MESOS-4303, MESOS-1607 and MESOS-4392). I'd suggest to refer k8sm's case on those tickets; and hold this work (kubernetes revocable resources) until revocable resources's behaviour finalised in Mesos. |
What do you mean of " kill the revocable resources directly for current revocable resources"? |
I mean QoS's current behaviour; no grace period when kill a executor/container. |
The Mesos is now doing many enhancement for Mesos and especially for allocator part to improve resource utilisation, the revocable resource is designed for such cases. If there are multiple frameworks running on top of Mesos including Kubernetes and other frameworks, the revocable resources from one framework can be used by another framework so as to improve resources utilisation.
I did a prototype and did some test here: https://github.com/jay-lau/jay-work/blob/master/k8s/mesos/revocable.diff
The idea is simple and straight forward:
The text was updated successfully, but these errors were encountered: