Docker
Apache Mesos 是限制資源還是隔離資源?
換句話說,
Apache Mesos
內部或docker
資源隔離機制有效嗎?如果啟動的應用程序 A 需要 40% 的 CPU 資源,而應用程序 B 需要 61% - B 應用程序無法啟動,即使 A 應用程序實際上傳入了 10% 的 CPU?
B 應用程序無法啟動,即使 A 應用程序實際上傳入了 10% 的 CPU?
是的,因為否則應用程序 A 和應用程序 B 都會受到影響。想像一下 A 正在使用 40% 的 cpu,應用 B,即使聲明它想要 61% cpu,也只能使用 60%。反之亦然(B 使用 61% 而 A 只能達到 39%)。
所以總的來說,沒有資源超額預訂。這是在資源分配階段實現的。
僅供參考 mesos 如何啟動任務(
tasks
是 mesos 術語,而不是apps
):啟動任務
在 mesos 中,任務由框架啟動。
假設你有一個帶有 1 個 cpu 和 1GB RAM 的 mesos slave。
- Mesos 高手會問你的框架:我給你 1 個 cpu 和 1GB ram,你想用它來啟動一個任務嗎?在你的情況下,框架會回复 mesos master:“是的,我想用 0.4cpus 和 0.5GB ram 啟動任務 A,使用這個 docker 鏡像並執行這個命令……”。
現在還剩 0.6 cpu,但是任務 B 需要 0.61 cpu,所以框架無法啟動任務 B。
並且不要將其與資源隔離混淆,這是為了保證任務的程序不能使用超過它分配的 cpu(和/或 ram)份額。
資源隔離
Mesos 通過使用cgroups來實現資源隔離。Mesos 也支持作為 docker 容器啟動任務,但是 docker 容器的資源隔離也是使用 cgroups。