{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/comments/94189956","pull_request_review_id":14720911,"id":94189956,"diff_hunk":"@@ -27,12 +10,17 @@ coreos:\n         EnvironmentFile=/etc/environment\n         Environment=KUBELET_ACI=quay.io/coreos/hyperkube\n         Environment=KUBELET_VERSION=v1.5.1_coreos.0\n+        Environment=\"RKT_OPTS=--volume var-lib-cni,kind=host,source=/var/lib/cni --mount volume=var-lib-cni,target=/var/lib/cni\"\n         ExecStartPre=/bin/mkdir -p /etc/kubernetes/manifests\n-        ExecStartPre=/bin/mkdir -p /srv/kubernetes/manifests\n+        ExecStartPre=/bin/mkdir -p /etc/kubernetes/cni/net.d\n         ExecStartPre=/bin/mkdir -p /etc/kubernetes/checkpoint-secrets\n+        ExecStartPre=/bin/mkdir -p /srv/kubernetes/manifests\n+        ExecStartPre=/bin/mkdir -p /var/lib/cni\n         ExecStart=/usr/lib/coreos/kubelet-wrapper \\\n           --kubeconfig=/etc/kubernetes/kubeconfig \\\n           --require-kubeconfig \\\n+          --cni-conf-dir=/etc/kubernetes/cni/net.d \\","path":"hack/multi-node/user-data.sample","position":39,"original_position":39,"commit_id":"fe243d1a6d8b07a34797579137dac1d8a71bd94b","original_commit_id":"fe243d1a6d8b07a34797579137dac1d8a71bd94b","user":{"login":"aaronlevy","id":374924,"avatar_url":"https://avatars.githubusercontent.com/u/374924?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronlevy","html_url":"https://github.com/aaronlevy","followers_url":"https://api.github.com/users/aaronlevy/followers","following_url":"https://api.github.com/users/aaronlevy/following{/other_user}","gists_url":"https://api.github.com/users/aaronlevy/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronlevy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronlevy/subscriptions","organizations_url":"https://api.github.com/users/aaronlevy/orgs","repos_url":"https://api.github.com/users/aaronlevy/repos","events_url":"https://api.github.com/users/aaronlevy/events{/privacy}","received_events_url":"https://api.github.com/users/aaronlevy/received_events","type":"User","site_admin":false},"body":"The flannel daemon is now run as a pod, but the flannel-cni plugin exists in the hyperkube container fs at [/opt/bin/cni](https://github.com/kubernetes/kubernetes/blob/v1.5.1/cluster/images/hyperkube/Dockerfile#L62)","created_at":"2016-12-29T23:01:27Z","updated_at":"2016-12-29T23:01:27Z","html_url":"https://github.com/kubernetes-incubator/bootkube/pull/247#discussion_r94189956","pull_request_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247","_links":{"self":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/comments/94189956"},"html":{"href":"https://github.com/kubernetes-incubator/bootkube/pull/247#discussion_r94189956"},"pull_request":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247","id":99612192,"html_url":"https://github.com/kubernetes-incubator/bootkube/pull/247","diff_url":"https://github.com/kubernetes-incubator/bootkube/pull/247.diff","patch_url":"https://github.com/kubernetes-incubator/bootkube/pull/247.patch","issue_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/247","number":247,"state":"open","locked":false,"title":"Configure pod-network via flannel CNI daemonset","user":{"login":"aaronlevy","id":374924,"avatar_url":"https://avatars.githubusercontent.com/u/374924?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronlevy","html_url":"https://github.com/aaronlevy","followers_url":"https://api.github.com/users/aaronlevy/followers","following_url":"https://api.github.com/users/aaronlevy/following{/other_user}","gists_url":"https://api.github.com/users/aaronlevy/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronlevy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronlevy/subscriptions","organizations_url":"https://api.github.com/users/aaronlevy/orgs","repos_url":"https://api.github.com/users/aaronlevy/repos","events_url":"https://api.github.com/users/aaronlevy/events{/privacy}","received_events_url":"https://api.github.com/users/aaronlevy/received_events","type":"User","site_admin":false},"body":"This change involves a switch to using the Container Network Interface (CNI) plugins for configuring the pod network. See the http://kubernetes.io/docs/admin/network-plugins/ for more information  on kubernetes + CNI plugin integration.\r\n\r\nThere is a known issue with using CNI plugins that setting a `hostPort` on a pod will no longer work. This is because the `hostPort` relies on docker to configure the host -> pod bridge, but in the case of CNI network plugins, docker does not know about the pod, network and the CNI plugin is used instead. \r\n\r\nSee upstream issues for more information:\r\nhttps://github.com/kubernetes/kubernetes/issues/23920\r\nhttps://github.com/kubernetes/kubernetes/issues/31307\r\n\r\nThe most common place I've seen this being surfaced as an issue is with ingress controllers, which make use of pod hostPorts. Workarounds to this include:\r\n\r\n- Using `hostNetwork=true` on the pod so that all containers in the pod will use the host network namespace, but then also setting the `hostPort` so that the scheduler can take this constraint into account when scheduling pods (one pod per host, as it will already be taken). The downside to this is that all containers in the pod will use the host network, not just a specific container.\r\n\r\n- Another option is to use a [nodePort service](http://kubernetes.io/docs/user-guide/services/#type-nodeport) in front of the ingress controller so that a port will be available on all nodes running kube-proxy, which can then route to the ingress controller. The downside to this option is that the port will be in the (default) range of 30000-32000, and if you want a service exposed on `:443`, for example, the port mapping must be done externally.\r\n","created_at":"2016-12-29T02:22:54Z","updated_at":"2016-12-29T23:01:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"edc8d048ccd44c32e5e84c71ee2fd70abd2d0d60","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247/commits","review_comments_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247/comments","review_comment_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/247/comments","statuses_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/statuses/fe243d1a6d8b07a34797579137dac1d8a71bd94b","head":{"label":"aaronlevy:self-host-flannel","ref":"self-host-flannel","sha":"fe243d1a6d8b07a34797579137dac1d8a71bd94b","user":{"login":"aaronlevy","id":374924,"avatar_url":"https://avatars.githubusercontent.com/u/374924?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronlevy","html_url":"https://github.com/aaronlevy","followers_url":"https://api.github.com/users/aaronlevy/followers","following_url":"https://api.github.com/users/aaronlevy/following{/other_user}","gists_url":"https://api.github.com/users/aaronlevy/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronlevy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronlevy/subscriptions","organizations_url":"https://api.github.com/users/aaronlevy/orgs","repos_url":"https://api.github.com/users/aaronlevy/repos","events_url":"https://api.github.com/users/aaronlevy/events{/privacy}","received_events_url":"https://api.github.com/users/aaronlevy/received_events","type":"User","site_admin":false},"repo":{"id":53981790,"name":"bootkube","full_name":"aaronlevy/bootkube","owner":{"login":"aaronlevy","id":374924,"avatar_url":"https://avatars.githubusercontent.com/u/374924?v=3","gravatar_id":"","url":"https://api.github.com/users/aaronlevy","html_url":"https://github.com/aaronlevy","followers_url":"https://api.github.com/users/aaronlevy/followers","following_url":"https://api.github.com/users/aaronlevy/following{/other_user}","gists_url":"https://api.github.com/users/aaronlevy/gists{/gist_id}","starred_url":"https://api.github.com/users/aaronlevy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaronlevy/subscriptions","organizations_url":"https://api.github.com/users/aaronlevy/orgs","repos_url":"https://api.github.com/users/aaronlevy/repos","events_url":"https://api.github.com/users/aaronlevy/events{/privacy}","received_events_url":"https://api.github.com/users/aaronlevy/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aaronlevy/bootkube","description":"Bootkube","fork":true,"url":"https://api.github.com/repos/aaronlevy/bootkube","forks_url":"https://api.github.com/repos/aaronlevy/bootkube/forks","keys_url":"https://api.github.com/repos/aaronlevy/bootkube/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aaronlevy/bootkube/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aaronlevy/bootkube/teams","hooks_url":"https://api.github.com/repos/aaronlevy/bootkube/hooks","issue_events_url":"https://api.github.com/repos/aaronlevy/bootkube/issues/events{/number}","events_url":"https://api.github.com/repos/aaronlevy/bootkube/events","assignees_url":"https://api.github.com/repos/aaronlevy/bootkube/assignees{/user}","branches_url":"https://api.github.com/repos/aaronlevy/bootkube/branches{/branch}","tags_url":"https://api.github.com/repos/aaronlevy/bootkube/tags","blobs_url":"https://api.github.com/repos/aaronlevy/bootkube/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aaronlevy/bootkube/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aaronlevy/bootkube/git/refs{/sha}","trees_url":"https://api.github.com/repos/aaronlevy/bootkube/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aaronlevy/bootkube/statuses/{sha}","languages_url":"https://api.github.com/repos/aaronlevy/bootkube/languages","stargazers_url":"https://api.github.com/repos/aaronlevy/bootkube/stargazers","contributors_url":"https://api.github.com/repos/aaronlevy/bootkube/contributors","subscribers_url":"https://api.github.com/repos/aaronlevy/bootkube/subscribers","subscription_url":"https://api.github.com/repos/aaronlevy/bootkube/subscription","commits_url":"https://api.github.com/repos/aaronlevy/bootkube/commits{/sha}","git_commits_url":"https://api.github.com/repos/aaronlevy/bootkube/git/commits{/sha}","comments_url":"https://api.github.com/repos/aaronlevy/bootkube/comments{/number}","issue_comment_url":"https://api.github.com/repos/aaronlevy/bootkube/issues/comments{/number}","contents_url":"https://api.github.com/repos/aaronlevy/bootkube/contents/{+path}","compare_url":"https://api.github.com/repos/aaronlevy/bootkube/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aaronlevy/bootkube/merges","archive_url":"https://api.github.com/repos/aaronlevy/bootkube/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aaronlevy/bootkube/downloads","issues_url":"https://api.github.com/repos/aaronlevy/bootkube/issues{/number}","pulls_url":"https://api.github.com/repos/aaronlevy/bootkube/pulls{/number}","milestones_url":"https://api.github.com/repos/aaronlevy/bootkube/milestones{/number}","notifications_url":"https://api.github.com/repos/aaronlevy/bootkube/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aaronlevy/bootkube/labels{/name}","releases_url":"https://api.github.com/repos/aaronlevy/bootkube/releases{/id}","deployments_url":"https://api.github.com/repos/aaronlevy/bootkube/deployments","created_at":"2016-03-15T22:06:34Z","updated_at":"2016-03-15T21:58:22Z","pushed_at":"2016-12-29T21:00:20Z","git_url":"git://github.com/aaronlevy/bootkube.git","ssh_url":"git@github.com:aaronlevy/bootkube.git","clone_url":"https://github.com/aaronlevy/bootkube.git","svn_url":"https://github.com/aaronlevy/bootkube","homepage":null,"size":61135,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes-incubator:master","ref":"master","sha":"65a23dd171a6a8513dd3c545582e93864479eb67","user":{"login":"kubernetes-incubator","id":20862812,"avatar_url":"https://avatars.githubusercontent.com/u/20862812?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes-incubator","html_url":"https://github.com/kubernetes-incubator","followers_url":"https://api.github.com/users/kubernetes-incubator/followers","following_url":"https://api.github.com/users/kubernetes-incubator/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes-incubator/subscriptions","organizations_url":"https://api.github.com/users/kubernetes-incubator/orgs","repos_url":"https://api.github.com/users/kubernetes-incubator/repos","events_url":"https://api.github.com/users/kubernetes-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes-incubator/received_events","type":"Organization","site_admin":false},"repo":{"id":53981347,"name":"bootkube","full_name":"kubernetes-incubator/bootkube","owner":{"login":"kubernetes-incubator","id":20862812,"avatar_url":"https://avatars.githubusercontent.com/u/20862812?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes-incubator","html_url":"https://github.com/kubernetes-incubator","followers_url":"https://api.github.com/users/kubernetes-incubator/followers","following_url":"https://api.github.com/users/kubernetes-incubator/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes-incubator/subscriptions","organizations_url":"https://api.github.com/users/kubernetes-incubator/orgs","repos_url":"https://api.github.com/users/kubernetes-incubator/repos","events_url":"https://api.github.com/users/kubernetes-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes-incubator/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes-incubator/bootkube","description":"bootkube - Launch a self-hosted Kubernetes cluster","fork":false,"url":"https://api.github.com/repos/kubernetes-incubator/bootkube","forks_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/forks","keys_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/teams","hooks_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/hooks","issue_events_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/events","assignees_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/tags","blobs_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/languages","stargazers_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/stargazers","contributors_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/contributors","subscribers_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/subscribers","subscription_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/subscription","commits_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/merges","archive_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/downloads","issues_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes-incubator/bootkube/deployments","created_at":"2016-03-15T21:58:22Z","updated_at":"2016-12-29T16:07:50Z","pushed_at":"2016-12-29T21:00:21Z","git_url":"git://github.com/kubernetes-incubator/bootkube.git","ssh_url":"git@github.com:kubernetes-incubator/bootkube.git","clone_url":"https://github.com/kubernetes-incubator/bootkube.git","svn_url":"https://github.com/kubernetes-incubator/bootkube","homepage":"","size":61038,"stargazers_count":240,"watchers_count":240,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":47,"mirror_url":null,"open_issues_count":55,"forks":47,"open_issues":55,"watchers":240,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247"},"html":{"href":"https://github.com/kubernetes-incubator/bootkube/pull/247"},"issue":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/247"},"comments":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/issues/247/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/pulls/247/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes-incubator/bootkube/statuses/fe243d1a6d8b07a34797579137dac1d8a71bd94b"}}}}
{"actor":{"display_login":"aaronlevy"}}