{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035/events","html_url":"https://github.com/kubernetes/kubernetes/issues/17035","id":115994343,"number":17035,"title":"Sketch of GPU support","user":{"login":"erictune","id":8105590,"avatar_url":"https://avatars.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false},"labels":[{"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/control-plane","name":"team/control-plane","color":"d2b48c"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":14,"created_at":"2015-11-09T23:51:57Z","updated_at":"2015-11-15T23:55:33Z","closed_at":null,"body":"GPU support:\r\n\r\n1. scheduler support (most important)\r\n1. kubelet looks in some flag-configured directory, and sees a file or files that tell it \"you have this many of resource example.com/mygpu\"\r\n1. scheduler feasibility check that uses any type of resource that any pod or node mentions wanting/having.\r\n1. kubelet support for logical devices, so that containers only see their own GPUs. (less important, but nice to have)\r\n  1. a way to tell kubelet that this set of phsical devices `/dev/nv0` ... `/dev/nv3` are fungible, and map to resource `example.com/mygpu`.\r\n  1. kubelet code to allocate devices, and map them into pods\r\n1. scheduler support for defragging the resource (once we have a rescheduler).\r\n\r\n@thockin @davidopp \r\nrequested by @therc \r\n\r\n"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/156873690","html_url":"https://github.com/kubernetes/kubernetes/issues/17035#issuecomment-156873690","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/17035","id":156873690,"user":{"login":"davidopp","id":8264113,"avatar_url":"https://avatars.githubusercontent.com/u/8264113?v=3","gravatar_id":"","url":"https://api.github.com/users/davidopp","html_url":"https://github.com/davidopp","followers_url":"https://api.github.com/users/davidopp/followers","following_url":"https://api.github.com/users/davidopp/following{/other_user}","gists_url":"https://api.github.com/users/davidopp/gists{/gist_id}","starred_url":"https://api.github.com/users/davidopp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidopp/subscriptions","organizations_url":"https://api.github.com/users/davidopp/orgs","repos_url":"https://api.github.com/users/davidopp/repos","events_url":"https://api.github.com/users/davidopp/events{/privacy}","received_events_url":"https://api.github.com/users/davidopp/received_events","type":"User","site_admin":false},"created_at":"2015-11-15T23:55:33Z","updated_at":"2015-11-15T23:55:33Z","body":"> If I set schedulable=false on nodeX, and I create a pod with a nodeSelector that only matches nodeX, then I don't think the pod would ever be scheduled \r\n\r\nCorrect.\r\n\r\n> so perhaps we need a 3rd option for the scheduler: schedulable=false|true|selected where selected is almost the same as false, except it would accept pods only when it matches a nodeSelector?\r\n\r\nCan you explain the use case or this? Are you looking for something like dedicated machines (#17190) ?"}}