{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13984","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13984/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13984/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13984/events","html_url":"https://github.com/kubernetes/kubernetes/issues/13984","id":106624983,"number":13984,"title":"Introduce Allocable to API Node.Status","user":{"login":"dchen1107","id":7740897,"avatar_url":"https://avatars.githubusercontent.com/u/7740897?v=3","gravatar_id":"","url":"https://api.github.com/users/dchen1107","html_url":"https://github.com/dchen1107","followers_url":"https://api.github.com/users/dchen1107/followers","following_url":"https://api.github.com/users/dchen1107/following{/other_user}","gists_url":"https://api.github.com/users/dchen1107/gists{/gist_id}","starred_url":"https://api.github.com/users/dchen1107/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dchen1107/subscriptions","organizations_url":"https://api.github.com/users/dchen1107/orgs","repos_url":"https://api.github.com/users/dchen1107/repos","events_url":"https://api.github.com/users/dchen1107/events{/privacy}","received_events_url":"https://api.github.com/users/dchen1107/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/api","name":"area/api","color":"e1ed21"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/system-requirement","name":"area/system-requirement","color":"bfdadc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/priority/P1","name":"priority/P1","color":"eb6420"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"timstclair","id":3272040,"avatar_url":"https://avatars.githubusercontent.com/u/3272040?v=3","gravatar_id":"","url":"https://api.github.com/users/timstclair","html_url":"https://github.com/timstclair","followers_url":"https://api.github.com/users/timstclair/followers","following_url":"https://api.github.com/users/timstclair/following{/other_user}","gists_url":"https://api.github.com/users/timstclair/gists{/gist_id}","starred_url":"https://api.github.com/users/timstclair/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timstclair/subscriptions","organizations_url":"https://api.github.com/users/timstclair/orgs","repos_url":"https://api.github.com/users/timstclair/repos","events_url":"https://api.github.com/users/timstclair/events{/privacy}","received_events_url":"https://api.github.com/users/timstclair/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/16","html_url":"https://github.com/kubernetes/kubernetes/milestones/v1.2-candidate","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/16/labels","id":1278500,"number":16,"title":"v1.2-candidate","description":"Things to consider for next minor release.","creator":{"login":"bgrant0607","id":7725777,"avatar_url":"https://avatars.githubusercontent.com/u/7725777?v=3","gravatar_id":"","url":"https://api.github.com/users/bgrant0607","html_url":"https://github.com/bgrant0607","followers_url":"https://api.github.com/users/bgrant0607/followers","following_url":"https://api.github.com/users/bgrant0607/following{/other_user}","gists_url":"https://api.github.com/users/bgrant0607/gists{/gist_id}","starred_url":"https://api.github.com/users/bgrant0607/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bgrant0607/subscriptions","organizations_url":"https://api.github.com/users/bgrant0607/orgs","repos_url":"https://api.github.com/users/bgrant0607/repos","events_url":"https://api.github.com/users/bgrant0607/events{/privacy}","received_events_url":"https://api.github.com/users/bgrant0607/received_events","type":"User","site_admin":false},"open_issues":213,"closed_issues":21,"state":"open","created_at":"2015-08-29T03:54:34Z","updated_at":"2015-11-16T20:20:38Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2015-09-15T19:09:52Z","updated_at":"2015-11-16T22:33:55Z","closed_at":null,"body":"Currently Node.Status has Capacity, but no concept of Machine Allocable to serve several purposes:\r\n\r\n* For Kubernetes 1.0 release, we introduced \"/docker-daemon\", \"/kubelet\", \"/kube-proxy\", \"/system\" etc. raw containers, so that we could monitor their resource usage pattern, and detects regression easily. In a long run, we want cap their usage uncertain limit / request. We don't do it know because 1) docker is still using tons of computing resource, and consequence of constraint docker's resource consumption is pretty high. 2) There is no NodeSpec yet, and we cannot control Kubenetes nodes, and OSS users might introduce arbitrary daemons to a given node which makes /system unmanageable. Even with above resources, we cannot do a full resource management / control on the node, but introducing Allocable concept to node could prevent real bad resource overcommit.\r\n\r\n* For meso, hadoop, etc. integration, they might want to partition compute resource on a given node, and limit how much Kubelet use; meanwhile they can query kubelet, and reserve some portion of the rest for their own purpose. \r\n\r\nI proposed \r\n1) Introduce a flag called --allocable-resources to Kubelet for now, and reports Allocable to upstream layers. In a long run, we could replace such flag with more sophisticated configuration through some machine / node3 management components.\r\n2) All upstream control components including scheduler, kubelet should do feasibility checking against Node.Status.Allocable, instead of Capacity. \r\n\r\ncc/ @bgrant0607 @davidopp @sttts @karlkfi @vishh "},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/157192849","html_url":"https://github.com/kubernetes/kubernetes/issues/13984#issuecomment-157192849","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13984","id":157192849,"user":{"login":"derekwaynecarr","id":6233452,"avatar_url":"https://avatars.githubusercontent.com/u/6233452?v=3","gravatar_id":"","url":"https://api.github.com/users/derekwaynecarr","html_url":"https://github.com/derekwaynecarr","followers_url":"https://api.github.com/users/derekwaynecarr/followers","following_url":"https://api.github.com/users/derekwaynecarr/following{/other_user}","gists_url":"https://api.github.com/users/derekwaynecarr/gists{/gist_id}","starred_url":"https://api.github.com/users/derekwaynecarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/derekwaynecarr/subscriptions","organizations_url":"https://api.github.com/users/derekwaynecarr/orgs","repos_url":"https://api.github.com/users/derekwaynecarr/repos","events_url":"https://api.github.com/users/derekwaynecarr/events{/privacy}","received_events_url":"https://api.github.com/users/derekwaynecarr/received_events","type":"User","site_admin":false},"created_at":"2015-11-16T22:33:55Z","updated_at":"2015-11-16T22:33:55Z","body":"The primary operator goal here is that I should be able to eliminate the need to do a static-pod for resource reservation, and the kubelet should support a dynamic resource reservation model for incompressible resources like memory/disk.  For things like CPU, I know we have issues where CPU usage spikes as the number of pods on the node increases, but I am less concerned on that in the near term.\r\n\r\nI need to take a deeper look tomorrow, but I think I recall that there are open issues to resolve around how we re-parent system daemons when running in a systemd environment.\r\n\r\nOpen question:\r\n\r\nIf/when we reparent all containers in a common cgroup based on qos tier, do you guys have any thoughts on differentiating allocable based on qos tier at all?"}}