{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/48080556","id":48080556,"diff_hunk":"@@ -0,0 +1,196 @@\n+<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->\n+\n+<!-- BEGIN STRIP_FOR_RELEASE -->\n+\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+\n+<h2>PLEASE NOTE: This document applies to the HEAD of the source tree</h2>\n+\n+If you are using a released version of Kubernetes, you should\n+refer to the docs that go with that version.\n+\n+<strong>\n+The latest release of this document can be found\n+[here](http://releases.k8s.io/release-1.1/docs/proposals/autoscaling.md).\n+\n+Documentation for other releases can be found at\n+[releases.k8s.io](http://releases.k8s.io).\n+</strong>\n+--\n+\n+<!-- END STRIP_FOR_RELEASE -->\n+\n+<!-- END MUNGE: UNVERSIONED_WARNING -->\n+\n+# Objective\n+\n+Simplify the cluster provisioning process for a cluster with one master and multiple worker nodes.\n+It should be secured with SSL and have all the default add-ons. There should not be significant \n+differences in the provisioning process across deployment targets (cloud provider + OS distribution)\n+once machines meet the node specification.\n+\n+# Overview\n+\n+Cluster provisioning can be broken into a number of phases, each with their own exit criteria.\n+In some cases, multiple phases will be combined together to more seamlessly automate the cluster setup,\n+but in all cases the phases can be run sequentially to provision a functional cluster.\n+\n+It is possible that for some platforms we will provide an optimized flow that combines some of the steps\n+together, but that is out of scope of this document.\n+\n+# Deployment flow\n+\n+**Note**: _Exit critieria_ in the following sections are not intended to list all tests that should pass,\n+rather list those that must pass.\n+\n+## Step 1: Provision cluster\n+\n+**Objective**: Create a set of machines (master + nodes) where we will deploy Kubernetes.\n+\n+For this phase to be completed successfully, the following requirements must be completed for all nodes:\n+- Basic connectivity between nodes (i.e. nodes can all ping each other)\n+- Docker installed (and in production setups should be monitored to be always running)\n+- One of the supported OS\n+\n+We will provide a node specification conformance test that will verify if provisioning has been successful. \n+\n+This step is provider specific and will be implemented for each cloud provider + OS distribution separately\n+using provider specific technology (cloud formation, deployment manager, PXE boot, etc).\n+Some OS distributions may meet the provisioning criteria without needing to run any post-boot steps as they\n+ship with all of the requirements for the node specification by default.\n+\n+**Substeps** (on the GCE example):\n+\n+1. Create network\n+2. Create firewall rules to allow communication inside the cluster\n+3. Create firewall rule to allow ```ssh``` to all machines\n+4. Create firewall rule to allow ```https``` to master\n+5. Create persistent disk for master\n+6. Create static IP address for master\n+7. Create master machine\n+8. Create node machines\n+9. Install docker on all machines\n+\n+**Exit critera**:\n+\n+1. Can ```ssh``` to all machines and run a test docker image\n+2. Can ```ssh``` to master and nodes and ping other machines\n+\n+## Step 2: Generate certificates\n+\n+**Objective**: Generate security certificates used to configure secure communication between client, master and nodes\n+\n+TODO: Enumerate ceritificates which have to be generated.\n+\n+## Step 3: Deploy master\n+\n+**Objective**: Run kubelet and all the required components (e.g. etcd, apiserver, scheduler, controllers) on the master machine.\n+\n+**Substeps**:\n+\n+1. copy certificates\n+2. copy manifests for static pods:\n+\t1. etcd\n+\t2. apiserver, controller manager, scheduler\n+3. run kubelet in docker container (configuration is read from apiserver Config object)\n+4. run kubelet-checker in docker container\n+\n+**v1.2 simplifications**:\n+\n+1. kubelet-runner.sh - we will provide a custom docker image to run kubelet; it will contain","path":"docs/proposals/cluster-deployment.md","position":109,"original_position":109,"commit_id":"e6341c322e1202bbf3d575656656e1677bd6c95a","original_commit_id":"e6341c322e1202bbf3d575656656e1677bd6c95a","user":{"login":"vishh","id":7063592,"avatar_url":"https://avatars.githubusercontent.com/u/7063592?v=3","gravatar_id":"","url":"https://api.github.com/users/vishh","html_url":"https://github.com/vishh","followers_url":"https://api.github.com/users/vishh/followers","following_url":"https://api.github.com/users/vishh/following{/other_user}","gists_url":"https://api.github.com/users/vishh/gists{/gist_id}","starred_url":"https://api.github.com/users/vishh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vishh/subscriptions","organizations_url":"https://api.github.com/users/vishh/orgs","repos_url":"https://api.github.com/users/vishh/repos","events_url":"https://api.github.com/users/vishh/events{/privacy}","received_events_url":"https://api.github.com/users/vishh/received_events","type":"User","site_admin":false},"body":"Can kubelet be run as a standalone binary instead of being run inside docker container?","created_at":"2015-12-18T23:15:09Z","updated_at":"2015-12-18T23:15:09Z","html_url":"https://github.com/kubernetes/kubernetes/pull/18287#discussion_r48080556","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/48080556"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/18287#discussion_r48080556"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287","id":52833338,"html_url":"https://github.com/kubernetes/kubernetes/pull/18287","diff_url":"https://github.com/kubernetes/kubernetes/pull/18287.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/18287.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18287","number":18287,"state":"open","locked":false,"title":"Add a proposal for simpler cluster deployment","user":{"login":"fgrzadkowski","id":10820726,"avatar_url":"https://avatars.githubusercontent.com/u/10820726?v=3","gravatar_id":"","url":"https://api.github.com/users/fgrzadkowski","html_url":"https://github.com/fgrzadkowski","followers_url":"https://api.github.com/users/fgrzadkowski/followers","following_url":"https://api.github.com/users/fgrzadkowski/following{/other_user}","gists_url":"https://api.github.com/users/fgrzadkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/fgrzadkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fgrzadkowski/subscriptions","organizations_url":"https://api.github.com/users/fgrzadkowski/orgs","repos_url":"https://api.github.com/users/fgrzadkowski/repos","events_url":"https://api.github.com/users/fgrzadkowski/events{/privacy}","received_events_url":"https://api.github.com/users/fgrzadkowski/received_events","type":"User","site_admin":false},"body":"This a continuation of a discussions [here](https://docs.google.com/document/d/1v68yStV2O6aHuRuT3AlWnbe6vkUCtzyC5I7Elhgik3o/edit#).\r\n\r\nI believe most of the comments are addressed. I have also changed the flow after discussions with @bprashanth about networking with flannel and my own experiments with running kubelet in docker container.\r\n\r\nCC-ing people involved in the discussion in the doc:\r\n@bprashanth @roberthbailey @mikedanese @brendandburns @derekwaynecarr @ncdc @smarterclayton ","created_at":"2015-12-07T11:28:48Z","updated_at":"2015-12-18T23:15:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"582fd990eeb6159631ea4682c97a5a4cce915c58","assignee":{"login":"brendandburns","id":5751682,"avatar_url":"https://avatars.githubusercontent.com/u/5751682?v=3","gravatar_id":"","url":"https://api.github.com/users/brendandburns","html_url":"https://github.com/brendandburns","followers_url":"https://api.github.com/users/brendandburns/followers","following_url":"https://api.github.com/users/brendandburns/following{/other_user}","gists_url":"https://api.github.com/users/brendandburns/gists{/gist_id}","starred_url":"https://api.github.com/users/brendandburns/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brendandburns/subscriptions","organizations_url":"https://api.github.com/users/brendandburns/orgs","repos_url":"https://api.github.com/users/brendandburns/repos","events_url":"https://api.github.com/users/brendandburns/events{/privacy}","received_events_url":"https://api.github.com/users/brendandburns/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18287/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/e6341c322e1202bbf3d575656656e1677bd6c95a","head":{"label":"fgrzadkowski:cluster_deployment","ref":"cluster_deployment","sha":"e6341c322e1202bbf3d575656656e1677bd6c95a","user":{"login":"fgrzadkowski","id":10820726,"avatar_url":"https://avatars.githubusercontent.com/u/10820726?v=3","gravatar_id":"","url":"https://api.github.com/users/fgrzadkowski","html_url":"https://github.com/fgrzadkowski","followers_url":"https://api.github.com/users/fgrzadkowski/followers","following_url":"https://api.github.com/users/fgrzadkowski/following{/other_user}","gists_url":"https://api.github.com/users/fgrzadkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/fgrzadkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fgrzadkowski/subscriptions","organizations_url":"https://api.github.com/users/fgrzadkowski/orgs","repos_url":"https://api.github.com/users/fgrzadkowski/repos","events_url":"https://api.github.com/users/fgrzadkowski/events{/privacy}","received_events_url":"https://api.github.com/users/fgrzadkowski/received_events","type":"User","site_admin":false},"repo":{"id":30216861,"name":"kubernetes","full_name":"fgrzadkowski/kubernetes","owner":{"login":"fgrzadkowski","id":10820726,"avatar_url":"https://avatars.githubusercontent.com/u/10820726?v=3","gravatar_id":"","url":"https://api.github.com/users/fgrzadkowski","html_url":"https://github.com/fgrzadkowski","followers_url":"https://api.github.com/users/fgrzadkowski/followers","following_url":"https://api.github.com/users/fgrzadkowski/following{/other_user}","gists_url":"https://api.github.com/users/fgrzadkowski/gists{/gist_id}","starred_url":"https://api.github.com/users/fgrzadkowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fgrzadkowski/subscriptions","organizations_url":"https://api.github.com/users/fgrzadkowski/orgs","repos_url":"https://api.github.com/users/fgrzadkowski/repos","events_url":"https://api.github.com/users/fgrzadkowski/events{/privacy}","received_events_url":"https://api.github.com/users/fgrzadkowski/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fgrzadkowski/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/fgrzadkowski/kubernetes","forks_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/forks","keys_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/teams","hooks_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/events","assignees_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/tags","blobs_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/languages","stargazers_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/subscription","commits_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/merges","archive_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/downloads","issues_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/fgrzadkowski/kubernetes/releases{/id}","created_at":"2015-02-03T00:40:39Z","updated_at":"2015-03-20T09:51:54Z","pushed_at":"2015-12-18T15:08:54Z","git_url":"git://github.com/fgrzadkowski/kubernetes.git","ssh_url":"git@github.com:fgrzadkowski/kubernetes.git","clone_url":"https://github.com/fgrzadkowski/kubernetes.git","svn_url":"https://github.com/fgrzadkowski/kubernetes","homepage":"http://kubernetes.io","size":141011,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"5c83451a496e1384f38851cc2b595679e531201e","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"kubernetes/kubernetes","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/kubernetes","description":"Container Cluster Manager from Google","fork":false,"url":"https://api.github.com/repos/kubernetes/kubernetes","forks_url":"https://api.github.com/repos/kubernetes/kubernetes/forks","keys_url":"https://api.github.com/repos/kubernetes/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kubernetes/teams","hooks_url":"https://api.github.com/repos/kubernetes/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kubernetes/events","assignees_url":"https://api.github.com/repos/kubernetes/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kubernetes/tags","blobs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kubernetes/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kubernetes/subscription","commits_url":"https://api.github.com/repos/kubernetes/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kubernetes/merges","archive_url":"https://api.github.com/repos/kubernetes/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kubernetes/downloads","issues_url":"https://api.github.com/repos/kubernetes/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kubernetes/releases{/id}","created_at":"2014-06-06T22:56:04Z","updated_at":"2015-12-18T22:18:36Z","pushed_at":"2015-12-18T22:30:16Z","git_url":"git://github.com/kubernetes/kubernetes.git","ssh_url":"git@github.com:kubernetes/kubernetes.git","clone_url":"https://github.com/kubernetes/kubernetes.git","svn_url":"https://github.com/kubernetes/kubernetes","homepage":"http://kubernetes.io","size":295943,"stargazers_count":11798,"watchers_count":11798,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3241,"mirror_url":null,"open_issues_count":2583,"forks":3241,"open_issues":2583,"watchers":11798,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/18287"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/18287"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/18287/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/18287/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/e6341c322e1202bbf3d575656656e1677bd6c95a"}}}}