{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/4971","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/4971/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/4971/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/4971/events","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/issues/4971","id":59584809,"number":4971,"title":"Scheduler spreading using services vs replication controllers","user":{"login":"abhgupta","id":1211613,"avatar_url":"https://avatars.githubusercontent.com/u/1211613?v=3","gravatar_id":"","url":"https://api.github.com/users/abhgupta","html_url":"https://github.com/abhgupta","followers_url":"https://api.github.com/users/abhgupta/followers","following_url":"https://api.github.com/users/abhgupta/following{/other_user}","gists_url":"https://api.github.com/users/abhgupta/gists{/gist_id}","starred_url":"https://api.github.com/users/abhgupta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abhgupta/subscriptions","organizations_url":"https://api.github.com/users/abhgupta/orgs","repos_url":"https://api.github.com/users/abhgupta/repos","events_url":"https://api.github.com/users/abhgupta/events{/privacy}","received_events_url":"https://api.github.com/users/abhgupta/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-03-03T02:13:22Z","updated_at":"2015-03-03T02:13:39Z","closed_at":null,"body":"Creating a separate issue since the PR (https://github.com/GoogleCloudPlatform/kubernetes/pull/4674) in which this discussion was initiated is merged and this merits a second look.\r\n\r\nI had raised the question of why we used services instead of replication controllers for identifying peer pods for spreading by the scheduler. The argument is that services might not be needed and could be avoided in some cases, whereas replication controller will most likely always be there.\r\n\r\n@bgrant0607 's initial response: why use services instead of replication controllers for identifying peer pods for spreading. Discussed in #1965 and #2312. Replication controllers are associated with deployments. We expect there to be multiple per service: canaries, rolling updates, multiple release tracks, etc. What people want is spreading of the whole service. Custom spreading is discussed in #4301 and #367.\r\n\r\nWhile I agree that there can be multiple replication controllers per service, I still believe that spreading of pods should still happen independently for the replication controllers. Also, we have customer use cases where the services are not created at all and routing/load balancing to a group of pods is being handled by custom middleware.\r\n\r\nRolling updates: the new pods coming in should be scheduled on the best possible minions and should not be combined with the existing older pods for achieving a good spread. Eventually, when all the older pods are removed and only the new ones remain, its the spreading of the new pods that really matters.\r\n\r\nCanaries: This one is slightly different, but in general the same argument applies here as for rolling updates.\r\n\r\nMultiple release tracks: shouldn't we have a good spread within each release track to ensure HA for each release track? Why would we want to jointly consider the pods for different release tracks for a good spread?"},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/76873817","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/issues/4971#issuecomment-76873817","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/4971","id":76873817,"user":{"login":"abhgupta","id":1211613,"avatar_url":"https://avatars.githubusercontent.com/u/1211613?v=3","gravatar_id":"","url":"https://api.github.com/users/abhgupta","html_url":"https://github.com/abhgupta","followers_url":"https://api.github.com/users/abhgupta/followers","following_url":"https://api.github.com/users/abhgupta/following{/other_user}","gists_url":"https://api.github.com/users/abhgupta/gists{/gist_id}","starred_url":"https://api.github.com/users/abhgupta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abhgupta/subscriptions","organizations_url":"https://api.github.com/users/abhgupta/orgs","repos_url":"https://api.github.com/users/abhgupta/repos","events_url":"https://api.github.com/users/abhgupta/events{/privacy}","received_events_url":"https://api.github.com/users/abhgupta/received_events","type":"User","site_admin":false},"created_at":"2015-03-03T02:13:39Z","updated_at":"2015-03-03T02:13:39Z","body":"/cc @danmcp @smarterclayton "}}