{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/55900448","id":55900448,"diff_hunk":"@@ -0,0 +1,434 @@\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+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+# Ubernetes Design Spec (phase one)\n+\n+**Huawei PaaS Team**\n+\n+## INTRODUCTION\n+\n+In this document we propose a design for the “Control Plane” of\n+Kubernetes (K8S) federation (a.k.a. “Ubernetes”). For background of\n+this work please refer to\n+[this proposal](../../docs/proposals/federation.md).\n+The document is arranged as following. First we briefly list scenarios\n+and use cases that motivate K8S federation work. These use cases drive\n+the design and they also verify the design. We summarize the\n+functionality requirements from these use cases, and define the “in\n+scope” functionalities that will be covered by this design (phase\n+one). After that we give an overview of the proposed architecture, API\n+and building blocks. And also we go through several activity flows to\n+see how these building blocks work together to support use cases.\n+\n+## REQUIREMENTS\n+\n+There are many reasons why customers may want to build a K8S\n+federation:\n+\n++ **High Availability:** Customers want to be immune to the outage of\n+   a single availability zone, region or even a cloud provider.\n++ **Sensitive workloads:** Some workloads can only run on a particular\n+   cluster. They cannot be scheduled to or migrated to other clusters.\n++ **Capacity overflow:** Customers prefer to run workloads on a\n+   primary cluster. But if the capacity of the cluster is not\n+   sufficient, workloads should be automatically distributed to other\n+   clusters.\n++ **Vendor lock-in avoidance:** Customers want to spread their\n+   workloads on different cloud providers, and can easily increase or\n+   decrease the workload proportion of a specific provider.\n++ **Cluster Size Enhancement:** Currently K8S cluster can only support\n+a limited size. While the community is actively improving it, it can\n+be expected that cluster size will be a problem if K8S is used for\n+large workloads or public PaaS infrastructure. While we can separate\n+different tenants to different clusters, it would be good to have a\n+unified view.\n+\n+Here are the functionality requirements derived from above use cases:\n+\n++ Clients of the federation control plane API server can register and deregister clusters.\n++ Workloads should be spread to different clusters according to the\n+   workload distribution policy.\n++ Pods are able to discover and connect to services hosted in other\n+  clusters (in cases where inter-cluster networking is necessary,\n+  desirable and implemented).\n++ Traffic to these pods should be spread across clusters (in a manner\n+  similar to load balancing, although it might not be strictly\n+  speaking balanced).\n++ The control plane needs to know when a cluster is down, and migrate\n+   the workloads to other clusters.\n++ Clients have a unified view and a central control point for above\n+   activities.\n+\n+## SCOPE\n+\n+It’s difficult to have a perfect design with one click that implements\n+all the above requirements. Therefore we will go with an iterative\n+approach to design and build the system. This document describes the\n+phase one of the whole work.  In phase one we will cover only the\n+following objectives:\n+\n++ Define the basic building blocks and API objects of control plane\n++ Implement a basic end-to-end workflow\n+   + Clients register federated clusters\n+   + Clients submit a workload\n+   + The workload is distributed to different clusters\n+   + Service discovery\n+   + Load balancing\n+\n+The following parts are NOT covered in phase one:\n+\n++ Authentication and authorization (other than basic client\n+  authentication against the ubernetes API, and from ubernetes control\n+  plane to the underlying kubernetes clusters).\n++ Deployment units other than replication controller and service\n++ Complex distribution policy of workloads\n++ Service affinity and migration\n+\n+## ARCHITECTURE\n+\n+The overall architecture of a control plane is shown as following:\n+\n+![Ubernetes Architecture](ubernetes-design.png)\n+\n+Some design principles we are following in this architecture:\n+\n+1. Keep the underlying K8S clusters independent. They should have no\n+   knowledge of control plane or of each other.\n+1. Keep the Ubernetes API interface compatible with K8S API as much as\n+   possible.\n+1. Re-use concepts from K8S as much as possible. This reduces\n+customers’ learning curve and is good for adoption.  Below is a brief\n+description of each module contained in above diagram.\n+\n+## Ubernetes API Server\n+\n+The API Server in the Ubernetes control plane works just like the API\n+Server in K8S. It talks to a distributed key-value store to persist,\n+retrieve and watch API objects.  This store is completely distinct\n+from the kubernetes key-value stores (etcd) in the underlying\n+kubernetes clusters.  We still use `etcd` as the distributed\n+storage so customers don’t need to learn and manage a different\n+storage system, although it is envisaged that other storage systems\n+(consol, zookeeper) will probably be developedand supported over\n+time.\n+\n+## Ubernetes Scheduler\n+\n+The Ubernetes Scheduler schedules resources onto the underlying\n+Kubernetes clusters.  For example it watches for unscheduled Ubernetes\n+replication controllers (those that have not yet been scheduled onto\n+underlying Kubernetes clusters) and performs the global scheduling\n+work.  For each unscheduled replication controller, it calls policy\n+engine to decide how to spit workloads among clusters. It creates a\n+Kubernetes Replication Controller on one ore more underlying cluster,\n+and post them back to `etcd` storage.\n+\n+One sublety worth noting here is that the scheduling decision is\n+arrived at by combining the application-specific request from the user (which might\n+include, for example, placement constraints), and the global policy specified\n+by the federation administrator (for example, \"prefer on-premise\n+clusters over AWS clusters\" or \"spread load equally across clusters\").\n+\n+## Ubernetes Cluster Controller\n+\n+The cluster controller\n+performs the following two kinds of work:\n+\n+1. It watches all the sub-resources that are created by Ubernetes\n+   components, like a sub-RC or a sub-service. And then it creates the\n+   corresponding API objects on the underlying K8S clusters.\n+1. It periodically retrieves the available resources metrics from the\n+   underlying K8S cluster, and updates them as object status of the\n+   `cluster` API object.  An alternative design might be to run a pod\n+   in each underlying cluster that reports metrics for that cluster to\n+   the Ubernetes control plane.  Which approach is better remains an\n+   open topic of discussion.\n+\n+## Ubernetes Service Controller\n+\n+The Ubernetes service controller is a federation-level implementation\n+of K8S service controller. It watches service resources created on\n+control plane, creates corresponding K8S services on each involved K8S\n+clusters.  Besides interacting with services resources on each\n+individual K8S clusters, the Ubernetes service controller also\n+performs some global DNS registration work.","path":"docs/design/federation-phase-1.md","position":180,"original_position":180,"commit_id":"227710d25b044096fc47c104ad8fd9c3e9f999da","original_commit_id":"227710d25b044096fc47c104ad8fd9c3e9f999da","user":{"login":"quinton-hoole","id":10390785,"avatar_url":"https://avatars.githubusercontent.com/u/10390785?v=3","gravatar_id":"","url":"https://api.github.com/users/quinton-hoole","html_url":"https://github.com/quinton-hoole","followers_url":"https://api.github.com/users/quinton-hoole/followers","following_url":"https://api.github.com/users/quinton-hoole/following{/other_user}","gists_url":"https://api.github.com/users/quinton-hoole/gists{/gist_id}","starred_url":"https://api.github.com/users/quinton-hoole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quinton-hoole/subscriptions","organizations_url":"https://api.github.com/users/quinton-hoole/orgs","repos_url":"https://api.github.com/users/quinton-hoole/repos","events_url":"https://api.github.com/users/quinton-hoole/events{/privacy}","received_events_url":"https://api.github.com/users/quinton-hoole/received_events","type":"User","site_admin":false},"body":"@mfanjie Yes, absolutely.  The internal interface to global DNS will be pluggable.  We will probably focus on delivering implementations for GCE and AWS DNS first, but would very much welcome an F5 GTM contribution from the community.  I will be sure to include you on the interface definition discussions to make sure that the plugin interface works well for your case on F5.","created_at":"2016-03-11T22:45:41Z","updated_at":"2016-03-11T22:45:41Z","html_url":"https://github.com/kubernetes/kubernetes/pull/19313#discussion_r55900448","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/55900448"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/19313#discussion_r55900448"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313","id":55168904,"html_url":"https://github.com/kubernetes/kubernetes/pull/19313","diff_url":"https://github.com/kubernetes/kubernetes/pull/19313.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/19313.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19313","number":19313,"state":"open","locked":false,"title":"RFC design docs for Cluster Federation/Ubernetes.","user":{"login":"quinton-hoole","id":10390785,"avatar_url":"https://avatars.githubusercontent.com/u/10390785?v=3","gravatar_id":"","url":"https://api.github.com/users/quinton-hoole","html_url":"https://github.com/quinton-hoole","followers_url":"https://api.github.com/users/quinton-hoole/followers","following_url":"https://api.github.com/users/quinton-hoole/following{/other_user}","gists_url":"https://api.github.com/users/quinton-hoole/gists{/gist_id}","starred_url":"https://api.github.com/users/quinton-hoole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quinton-hoole/subscriptions","organizations_url":"https://api.github.com/users/quinton-hoole/orgs","repos_url":"https://api.github.com/users/quinton-hoole/repos","events_url":"https://api.github.com/users/quinton-hoole/events{/privacy}","received_events_url":"https://api.github.com/users/quinton-hoole/received_events","type":"User","site_admin":false},"body":"A first round of comments and feedback was solicited from a subset of the Federation SIG via Google Docs.  Moving this here now for wider review.\r\n\r\nStill needs some improved aesthetics (weave the diagrams in, and improve some formatting) but that can be done while addressing other review feedback.\r\n\r\n@justinsb @mikedanese @davidopp @lavalamp @thockin @bprashanth ","created_at":"2016-01-06T02:04:10Z","updated_at":"2016-03-11T22:45:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2d0c024a325e80146d3d3692d0c73f270c4663ac","assignee":{"login":"davidopp","id":8264113,"avatar_url":"https://avatars.githubusercontent.com/u/8264113?v=3","gravatar_id":"","url":"https://api.github.com/users/davidopp","html_url":"https://github.com/davidopp","followers_url":"https://api.github.com/users/davidopp/followers","following_url":"https://api.github.com/users/davidopp/following{/other_user}","gists_url":"https://api.github.com/users/davidopp/gists{/gist_id}","starred_url":"https://api.github.com/users/davidopp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidopp/subscriptions","organizations_url":"https://api.github.com/users/davidopp/orgs","repos_url":"https://api.github.com/users/davidopp/repos","events_url":"https://api.github.com/users/davidopp/events{/privacy}","received_events_url":"https://api.github.com/users/davidopp/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/milestones/next-candidate","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://avatars.githubusercontent.com/u/7725777?v=3","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":287,"closed_issues":13,"state":"open","created_at":"2016-01-16T17:58:20Z","updated_at":"2016-03-11T20:14:43Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/19313/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/227710d25b044096fc47c104ad8fd9c3e9f999da","head":{"label":"quinton-hoole:2015-01-05-ube-design-docs","ref":"2015-01-05-ube-design-docs","sha":"227710d25b044096fc47c104ad8fd9c3e9f999da","user":{"login":"quinton-hoole","id":10390785,"avatar_url":"https://avatars.githubusercontent.com/u/10390785?v=3","gravatar_id":"","url":"https://api.github.com/users/quinton-hoole","html_url":"https://github.com/quinton-hoole","followers_url":"https://api.github.com/users/quinton-hoole/followers","following_url":"https://api.github.com/users/quinton-hoole/following{/other_user}","gists_url":"https://api.github.com/users/quinton-hoole/gists{/gist_id}","starred_url":"https://api.github.com/users/quinton-hoole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quinton-hoole/subscriptions","organizations_url":"https://api.github.com/users/quinton-hoole/orgs","repos_url":"https://api.github.com/users/quinton-hoole/repos","events_url":"https://api.github.com/users/quinton-hoole/events{/privacy}","received_events_url":"https://api.github.com/users/quinton-hoole/received_events","type":"User","site_admin":false},"repo":{"id":29155350,"name":"kubernetes","full_name":"quinton-hoole/kubernetes","owner":{"login":"quinton-hoole","id":10390785,"avatar_url":"https://avatars.githubusercontent.com/u/10390785?v=3","gravatar_id":"","url":"https://api.github.com/users/quinton-hoole","html_url":"https://github.com/quinton-hoole","followers_url":"https://api.github.com/users/quinton-hoole/followers","following_url":"https://api.github.com/users/quinton-hoole/following{/other_user}","gists_url":"https://api.github.com/users/quinton-hoole/gists{/gist_id}","starred_url":"https://api.github.com/users/quinton-hoole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quinton-hoole/subscriptions","organizations_url":"https://api.github.com/users/quinton-hoole/orgs","repos_url":"https://api.github.com/users/quinton-hoole/repos","events_url":"https://api.github.com/users/quinton-hoole/events{/privacy}","received_events_url":"https://api.github.com/users/quinton-hoole/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/quinton-hoole/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/quinton-hoole/kubernetes","forks_url":"https://api.github.com/repos/quinton-hoole/kubernetes/forks","keys_url":"https://api.github.com/repos/quinton-hoole/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quinton-hoole/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quinton-hoole/kubernetes/teams","hooks_url":"https://api.github.com/repos/quinton-hoole/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/quinton-hoole/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/quinton-hoole/kubernetes/events","assignees_url":"https://api.github.com/repos/quinton-hoole/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/quinton-hoole/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/quinton-hoole/kubernetes/tags","blobs_url":"https://api.github.com/repos/quinton-hoole/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quinton-hoole/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quinton-hoole/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/quinton-hoole/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quinton-hoole/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/quinton-hoole/kubernetes/languages","stargazers_url":"https://api.github.com/repos/quinton-hoole/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/quinton-hoole/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/quinton-hoole/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/quinton-hoole/kubernetes/subscription","commits_url":"https://api.github.com/repos/quinton-hoole/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/quinton-hoole/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/quinton-hoole/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/quinton-hoole/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/quinton-hoole/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/quinton-hoole/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quinton-hoole/kubernetes/merges","archive_url":"https://api.github.com/repos/quinton-hoole/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quinton-hoole/kubernetes/downloads","issues_url":"https://api.github.com/repos/quinton-hoole/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/quinton-hoole/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/quinton-hoole/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/quinton-hoole/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quinton-hoole/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/quinton-hoole/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/quinton-hoole/kubernetes/deployments","created_at":"2015-01-12T20:28:39Z","updated_at":"2015-04-15T01:58:44Z","pushed_at":"2016-03-03T23:50:00Z","git_url":"git://github.com/quinton-hoole/kubernetes.git","ssh_url":"git@github.com:quinton-hoole/kubernetes.git","clone_url":"https://github.com/quinton-hoole/kubernetes.git","svn_url":"https://github.com/quinton-hoole/kubernetes","homepage":null,"size":171157,"stargazers_count":1,"watchers_count":1,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"afa7816c387ac82b34d51a1b58594622087e3e50","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}","deployments_url":"https://api.github.com/repos/kubernetes/kubernetes/deployments","created_at":"2014-06-06T22:56:04Z","updated_at":"2016-03-11T21:32:18Z","pushed_at":"2016-03-11T22:41:33Z","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":337751,"stargazers_count":13169,"watchers_count":13169,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":3802,"mirror_url":null,"open_issues_count":2978,"forks":3802,"open_issues":2978,"watchers":13169,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/19313"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/19313"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/19313/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/19313/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/227710d25b044096fc47c104ad8fd9c3e9f999da"}}}}