{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/45234","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/45234/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/45234/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/45234/events","html_url":"https://github.com/kubernetes/kubernetes/issues/45234","id":225766143,"number":45234,"title":"Improve service's node selection for load balancers","user":{"login":"jkemp101","id":3944676,"avatar_url":"https://avatars0.githubusercontent.com/u/3944676?v=4","gravatar_id":"","url":"https://api.github.com/users/jkemp101","html_url":"https://github.com/jkemp101","followers_url":"https://api.github.com/users/jkemp101/followers","following_url":"https://api.github.com/users/jkemp101/following{/other_user}","gists_url":"https://api.github.com/users/jkemp101/gists{/gist_id}","starred_url":"https://api.github.com/users/jkemp101/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkemp101/subscriptions","organizations_url":"https://api.github.com/users/jkemp101/orgs","repos_url":"https://api.github.com/users/jkemp101/repos","events_url":"https://api.github.com/users/jkemp101/events{/privacy}","received_events_url":"https://api.github.com/users/jkemp101/received_events","type":"User","site_admin":false},"labels":[{"id":778118404,"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/lifecycle/stale","name":"lifecycle/stale","color":"795548","default":false},{"id":116712108,"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/sig/network","name":"sig/network","color":"d2b48c","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2017-05-02T17:32:27Z","updated_at":"2018-02-08T17:57:11Z","closed_at":null,"author_association":"NONE","body":"There have been a number of issues/PRs to adjust the service controller's behavior with respect to the nodes it selects to add to a LoadBalancer.  Many of these issues have focused on keeping the masters out of the load balancers which was an important first step.  However, there are other use cases that are still not met with the current functionality.\r\n\r\nCurrent issues:\r\n* Clusters with varying node sizes will route traffic through a node with less resources (i.e. network bandwidth, CPU, and/or memory) to instances that have more resources.  This can cause significant impact to user facing applications.  The only workaround is to run multiple clusters to handle differing workloads.\r\n* Even clusters with the same node types could have varying workloads.  It would not make sense to route customer facing web traffic through worker nodes that might have large batch processing jobs that consume all of the node's resources.  Again this could cause an undesirable impact to higher priority data flows.\r\n* Finally from a security standpoint it is good practice to isolate traffic for a set of pods away from nodes that aren't schedulable for these pods in the first place.\r\n\r\nFunctional requirements:\r\n* Services should only add nodes to load balancers that are schedulable by the pods the service fronts.  Conversely, traffic should never be routed through nodes that the service's pods are not able to be scheduled on.\r\n   * If a deployment has one replica with a node selector that matches three nodes the service would route the traffic through all three nodes even though there is only going to be a single node with the pod.  There is no need to try to sync the load balancer's nodes to the actual placements of pods.\r\n* Node maintenance should have similar impact to services and pods\r\n   * When a node is cordoned it should not be included in load balancers for new services\r\n   * When a node is drained it should remove that node from all existing load balancers\r\n\r\nApproach:\r\n* Add a \"load balancer node selector\" to services like we have for deployments to determine the nodes that should be used for load balancers.  It will be up to the user to make sure the service's node selector makes sense compared to the pods it fronts\r\n* Automatically select nodes based on the service's pod node selectors.  It would be the union of all nodes the pods can be scheduled on."},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/364195258","html_url":"https://github.com/kubernetes/kubernetes/issues/45234#issuecomment-364195258","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/45234","id":364195258,"user":{"login":"fejta-bot","id":30488982,"avatar_url":"https://avatars1.githubusercontent.com/u/30488982?v=4","gravatar_id":"","url":"https://api.github.com/users/fejta-bot","html_url":"https://github.com/fejta-bot","followers_url":"https://api.github.com/users/fejta-bot/followers","following_url":"https://api.github.com/users/fejta-bot/following{/other_user}","gists_url":"https://api.github.com/users/fejta-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta-bot/subscriptions","organizations_url":"https://api.github.com/users/fejta-bot/orgs","repos_url":"https://api.github.com/users/fejta-bot/repos","events_url":"https://api.github.com/users/fejta-bot/events{/privacy}","received_events_url":"https://api.github.com/users/fejta-bot/received_events","type":"User","site_admin":false},"created_at":"2018-02-08T17:57:11Z","updated_at":"2018-02-08T17:57:11Z","author_association":"NONE","body":"Stale issues rot after 30d of inactivity.\nMark the issue as fresh with `/remove-lifecycle rotten`.\nRotten issues close after an additional 30d of inactivity.\n\nIf this issue is safe to close now please do so with `/close`.\n\nSend feedback to sig-testing, kubernetes/test-infra and/or [fejta](https://github.com/fejta).\n/lifecycle rotten\n/remove-lifecycle stale"}}
{"actor":{"display_login":"fejta-bot"}}