{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31307","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31307/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31307/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31307/events","html_url":"https://github.com/kubernetes/kubernetes/issues/31307","id":172820674,"number":31307,"title":"Move HostPort port-opening from kubenet to kubelet/cni","user":{"login":"ozdanborne","id":3444362,"avatar_url":"https://avatars2.githubusercontent.com/u/3444362?v=4","gravatar_id":"","url":"https://api.github.com/users/ozdanborne","html_url":"https://github.com/ozdanborne","followers_url":"https://api.github.com/users/ozdanborne/followers","following_url":"https://api.github.com/users/ozdanborne/following{/other_user}","gists_url":"https://api.github.com/users/ozdanborne/gists{/gist_id}","starred_url":"https://api.github.com/users/ozdanborne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ozdanborne/subscriptions","organizations_url":"https://api.github.com/users/ozdanborne/orgs","repos_url":"https://api.github.com/users/ozdanborne/repos","events_url":"https://api.github.com/users/ozdanborne/events{/privacy}","received_events_url":"https://api.github.com/users/ozdanborne/received_events","type":"User","site_admin":false},"labels":[{"id":116719829,"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/kubelet","name":"area/kubelet","color":"0052cc","default":false},{"id":267761362,"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/kind/feature","name":"kind/feature","color":"c7def8","default":false},{"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":"closed","locked":false,"assignee":{"login":"cmluciano","id":4790487,"avatar_url":"https://avatars1.githubusercontent.com/u/4790487?v=4","gravatar_id":"","url":"https://api.github.com/users/cmluciano","html_url":"https://github.com/cmluciano","followers_url":"https://api.github.com/users/cmluciano/followers","following_url":"https://api.github.com/users/cmluciano/following{/other_user}","gists_url":"https://api.github.com/users/cmluciano/gists{/gist_id}","starred_url":"https://api.github.com/users/cmluciano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmluciano/subscriptions","organizations_url":"https://api.github.com/users/cmluciano/orgs","repos_url":"https://api.github.com/users/cmluciano/repos","events_url":"https://api.github.com/users/cmluciano/events{/privacy}","received_events_url":"https://api.github.com/users/cmluciano/received_events","type":"User","site_admin":false},"assignees":[{"login":"cmluciano","id":4790487,"avatar_url":"https://avatars1.githubusercontent.com/u/4790487?v=4","gravatar_id":"","url":"https://api.github.com/users/cmluciano","html_url":"https://github.com/cmluciano","followers_url":"https://api.github.com/users/cmluciano/followers","following_url":"https://api.github.com/users/cmluciano/following{/other_user}","gists_url":"https://api.github.com/users/cmluciano/gists{/gist_id}","starred_url":"https://api.github.com/users/cmluciano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmluciano/subscriptions","organizations_url":"https://api.github.com/users/cmluciano/orgs","repos_url":"https://api.github.com/users/cmluciano/repos","events_url":"https://api.github.com/users/cmluciano/events{/privacy}","received_events_url":"https://api.github.com/users/cmluciano/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/17","html_url":"https://github.com/kubernetes/kubernetes/milestone/17","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/17/labels","id":1510379,"number":17,"title":"next-candidate","description":"Candidates for the next milestone","creator":{"login":"bgrant0607","id":7725777,"avatar_url":"https://avatars1.githubusercontent.com/u/7725777?v=4","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":83,"closed_issues":521,"state":"open","created_at":"2016-01-16T17:58:20Z","updated_at":"2018-03-12T14:25:36Z","due_on":null,"closed_at":null},"comments":83,"created_at":"2016-08-23T22:15:12Z","updated_at":"2018-03-13T13:24:23Z","closed_at":"2018-02-13T12:01:28Z","author_association":"CONTRIBUTOR","body":"I'm working on adding hostPort support to a CNI plugin for kubernetes. I've found that in order for CNI plugins to honor and implement hostPort requests, the opening of the port itself (i.e. reservation) must be made by a long-running daemon process ([discussed here by thockin](https://github.com/containernetworking/cni/issues/46#issuecomment-236965077)). Currently, this is taken care of [in kubenet code](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/network/kubenet/kubenet_linux.go#L356). But this forces CNI plugins to manage reservation of the portmapping themeselves. Because 3rd party CNI plugins are oneshots and do not necessarily run as daemon processes, it is difficult for them to cleanly manage these ports.\n\nTherefore, the opening and holding of ports should be moved from kubenet code into kubelet’s CNI code, allowing CNI plugins to rely on kubernetes to take care of hostport opening / reservation. This will likely need to be done anyway as part of moving kubenet into its own CNI plugin. \n"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/372663494","html_url":"https://github.com/kubernetes/kubernetes/issues/31307#issuecomment-372663494","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31307","id":372663494,"user":{"login":"squeed","id":551378,"avatar_url":"https://avatars2.githubusercontent.com/u/551378?v=4","gravatar_id":"","url":"https://api.github.com/users/squeed","html_url":"https://github.com/squeed","followers_url":"https://api.github.com/users/squeed/followers","following_url":"https://api.github.com/users/squeed/following{/other_user}","gists_url":"https://api.github.com/users/squeed/gists{/gist_id}","starred_url":"https://api.github.com/users/squeed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/squeed/subscriptions","organizations_url":"https://api.github.com/users/squeed/orgs","repos_url":"https://api.github.com/users/squeed/repos","events_url":"https://api.github.com/users/squeed/events{/privacy}","received_events_url":"https://api.github.com/users/squeed/received_events","type":"User","site_admin":false},"created_at":"2018-03-13T13:24:23Z","updated_at":"2018-03-13T13:24:23Z","author_association":"CONTRIBUTOR","body":"@yanhongwang hostnetworking means that no port forwarding is taking place; the application is opening port 80 directly. So, that's not related to port forwarding."}}
{"actor":{"display_login":"squeed"}}