{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/63627353","id":63627353,"diff_hunk":"@@ -0,0 +1,254 @@\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+# Resource Quality of Service in Kubernetes\n+\n+**Author(s)**: Ananya Kumar (@AnanyaKumar), Vishnu Kannan (vishh@)\n+**Last Updated**: 10/5/2015\n+\n+**Status**: Implemented\n+\n+*This document presents the design of resource quality of service for containers in Kubernetes, and describes use cases and implementation details.*\n+\n+## Introduction\n+\n+This document describes the way Kubernetes provides different levels of Quality of Service to pods depending on what they *request*.\n+Pods that need to stay up reliably can request guaranteed resources, while pods with less stringent requirements can use resources with weaker or no guarantee.\n+\n+Specifically, for each resource, containers specify a request, which is the amount of that resource that the system will guarantee to the container, and a limit which is the maximum amount that the system will allow the container to use.\n+The system computes pod level requests and limits by summing up per-resource requests and limits across all containers.\n+When request == limit, the resources are guranteed, and when request < limit, the pod is guaranteed the request but can opportunistically scavenge the difference between request and limit if they are not being used by other containers.\n+This allows Kubernetes to oversubscribe nodes, which increases utilization, while at the same time maintaining resource guarantees for the containers that need guarantees.\n+Borg increased utilization by about 20% when it started allowing use of such non-guaranteed resources, and we hope to see similar improvements in Kubernetes.\n+\n+## Requests and Limits\n+\n+For each resource, containers can specify a resource request and limit, 0 <= request <= limit <= Infinity.\n+If a pod is successfully scheduled, the container is guaranteed the amount of resources requested.\n+Scheduling is based on `requests` and not `limits`.\n+The pods and its containers will not be allowed to exceed the specified limit.\n+How the request and limit are enforced depends on whether the resource is [compressible or incompressible](resources.md).\n+\n+### Compressible Resource Guarantees\n+\n+- For now, we are only supporting CPU.\n+- Pods are guaranteed to get the amount of CPU they request, they may or may not get additional CPU time (depending on the other jobs running).\n+- Excess CPU resources will be distributed based on the amount of CPU requested. For example, suppose container A requests for 600 milli CPUs, and container B requests for 300 milli CPUs. Suppose that both containers are trying to use as much CPU as they can. Then the extra 10 milli CPUs will be distributed to A and B in a 2:1 ratio (implementation discussed in later sections).\n+- Pods will be throttled if they exceed their limit. If limit is unspecified, then the pods can use excess CPU when available.\n+\n+### Incompressible Resource Guarantees\n+\n+- For now, we are only supporting memory.\n+- Pods will get the amount of memory they request, if they exceed their memory request, they could be killed (if some other pod needs memory), but if pods consume less memory than requested, they will not be killed (except in cases where system tasks or daemons need more memory).\n+- Pods will be killed if they use more memory than their limit.\n+\n+### Admission/Scheduling Policy\n+\n+- Pods will be admitted by Kubelet & scheduled by the scheduler based on the sum of requests of its containers. The scheduler & kubelet will ensure that sum of requests of all containers is within the node’s current availability (for both memory and CPU).\n+\n+## QoS Classes\n+\n+In an overcommitted system (where sum of requests > machine capacity) containers might eventually have to be killed, for example if the system runs out of CPU or memory resources. Ideally, we should kill containers that are less important. For each resource, we divide containers into 3 QoS classes: *Guaranteed*, *Burstable*, and *Best-Effort*, in decreasing order of priority.\n+\n+The relationship between \"Requests and Limits\" and \"QoS Classes\" is subtle. Theoretically, the policy of classifying pods into QoS classes is orthogonal to the requests and limits specified for the container. Hypothetically, users could use an (currently unplanned) API to specify whether a pod is guaranteed or best-effort. However, in the current design, the policy of classifying pods into QoS classes is intimately tied to \"Requests and Limits\" - in fact, QoS classes are used to implement some of the memory guarantees described in the previous section.\n+\n+Pods can be of one of 3 different classes:\n+\n+- If `limits` and optionally *requests* (not equal to `0`) are set for all resources across all containers and they are *equal*, then the container is classified as **Guaranteed**.\n+\n+Examples:\n+\n+```yaml\n+containers:\n+\tname: foo\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\tname: bar\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 100m\n+\t\t\t\tmemory: 100Mi\n+```\n+\n+```yaml\n+containers:\n+\tname: foo\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\t\t\trequests:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\n+\tname: bar\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 100m\n+\t\t\t\tmemory: 100Mi\n+\t\t\trequests:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+```\n+\n+- If `requests` and optionally `limits` are set (not equal to `0`) for one or more resources across one or more containers, and they are *not equal*, then the pod is classified as **Burstable**.\n+When `limits` are not specified, they default to the node capacity.\n+\n+Examples:\n+\n+Container `bar` has not resources specified.\n+\n+```yaml\n+containers:\n+\tname: foo\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\t\t\trequests:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\n+\tname: bar\n+```\n+\n+Container `foo` and `bar` have limits set for different resources.\n+\n+```yaml\n+containers:\n+\tname: foo\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tmemory: 1Gi\n+\n+\tname: bar\n+\t\tresources:\n+\t\t\tlimits:\n+\t\t\t\tcpu: 100m\n+```\n+\n+Container `foo` has no limits set, and `bar` has neither requests nor limits specified.\n+\n+```yaml\n+containers:\n+\tname: foo\n+\t\tresources:\n+\t\t\trequests:\n+\t\t\t\tcpu: 10m\n+\t\t\t\tmemory: 1Gi\n+\n+\tname: bar\n+```\n+\n+- If `requests` and `limits` are not set for all of the resources, across all containers, then the pod is classified as **Best-Effort**.","path":"docs/design/resource-qos.md","position":171,"original_position":171,"commit_id":"3d28c98baeb4ac5931e1b4f3bc5b218bcd376705","original_commit_id":"0d120b89fe9b08cce3037161400c0b975a0cf272","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":"It is explicitly mentioned a few lines below.","created_at":"2016-05-18T00:20:38Z","updated_at":"2016-05-18T00:20:38Z","html_url":"https://github.com/kubernetes/kubernetes/pull/14943#discussion_r63627353","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/63627353"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/14943#discussion_r63627353"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943","id":46583373,"html_url":"https://github.com/kubernetes/kubernetes/pull/14943","diff_url":"https://github.com/kubernetes/kubernetes/pull/14943.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/14943.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/14943","number":14943,"state":"open","locked":false,"title":"Updaing QoS policy to be at the pod level","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":"Quality of Service will be derived from an entire Pod Spec, instead of being derived from resource specifications of individual resources per-container.\r\nA Pod is `Guaranteed` iff all its containers have limits == requests for all the first-class resources (cpu, memory as of now).\r\nA Pod is `BestEffort` iff requests & limits are not specified for any resource across all containers.\r\nA Pod is `Burstable` otherwise. \r\n\r\nNote: Existing pods might be more susceptible to OOM Kills on the node due to this PR! To protect pods from being OOM killed on the node, set `limits` for all resources across all containers in a pod.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"http://reviewable.k8s.io/review_button.svg\" height=\"35\" align=\"absmiddle\" alt=\"Reviewable\"/>](http://reviewable.k8s.io/reviews/kubernetes/kubernetes/14943)\n<!-- Reviewable:end -->\n","created_at":"2015-10-01T22:09:14Z","updated_at":"2016-05-18T00:20:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e407386e7cff70477652bbaa89d40e9d2c33bbde","assignee":{"login":"dchen1107","id":7740897,"avatar_url":"https://avatars.githubusercontent.com/u/7740897?v=3","gravatar_id":"","url":"https://api.github.com/users/dchen1107","html_url":"https://github.com/dchen1107","followers_url":"https://api.github.com/users/dchen1107/followers","following_url":"https://api.github.com/users/dchen1107/following{/other_user}","gists_url":"https://api.github.com/users/dchen1107/gists{/gist_id}","starred_url":"https://api.github.com/users/dchen1107/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dchen1107/subscriptions","organizations_url":"https://api.github.com/users/dchen1107/orgs","repos_url":"https://api.github.com/users/dchen1107/repos","events_url":"https://api.github.com/users/dchen1107/events{/privacy}","received_events_url":"https://api.github.com/users/dchen1107/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/18","html_url":"https://github.com/kubernetes/kubernetes/milestones/v1.3","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/18/labels","id":1638460,"number":18,"title":"v1.3","description":"https://github.com/kubernetes/kubernetes/wiki/Release-1.3","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":210,"closed_issues":96,"state":"open","created_at":"2016-03-11T07:40:20Z","updated_at":"2016-05-17T23:44:35Z","due_on":"2016-06-24T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/14943/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/3d28c98baeb4ac5931e1b4f3bc5b218bcd376705","head":{"label":"vishh:qos","ref":"qos","sha":"3d28c98baeb4ac5931e1b4f3bc5b218bcd376705","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},"repo":{"id":26461931,"name":"kubernetes","full_name":"vishh/kubernetes","owner":{"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},"private":false,"html_url":"https://github.com/vishh/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/vishh/kubernetes","forks_url":"https://api.github.com/repos/vishh/kubernetes/forks","keys_url":"https://api.github.com/repos/vishh/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vishh/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vishh/kubernetes/teams","hooks_url":"https://api.github.com/repos/vishh/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/vishh/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/vishh/kubernetes/events","assignees_url":"https://api.github.com/repos/vishh/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/vishh/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/vishh/kubernetes/tags","blobs_url":"https://api.github.com/repos/vishh/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vishh/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vishh/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/vishh/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vishh/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/vishh/kubernetes/languages","stargazers_url":"https://api.github.com/repos/vishh/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/vishh/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/vishh/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/vishh/kubernetes/subscription","commits_url":"https://api.github.com/repos/vishh/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/vishh/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/vishh/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/vishh/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/vishh/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/vishh/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vishh/kubernetes/merges","archive_url":"https://api.github.com/repos/vishh/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vishh/kubernetes/downloads","issues_url":"https://api.github.com/repos/vishh/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/vishh/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/vishh/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/vishh/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vishh/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/vishh/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/vishh/kubernetes/deployments","created_at":"2014-11-11T00:05:03Z","updated_at":"2016-03-18T21:32:11Z","pushed_at":"2016-05-18T00:18:28Z","git_url":"git://github.com/vishh/kubernetes.git","ssh_url":"git@github.com:vishh/kubernetes.git","clone_url":"https://github.com/vishh/kubernetes.git","svn_url":"https://github.com/vishh/kubernetes","homepage":null,"size":210410,"stargazers_count":0,"watchers_count":0,"language":"Go","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:master","ref":"master","sha":"07d1060192826732933bbfdabff2823e26d73b4e","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-05-17T20:48:23Z","pushed_at":"2016-05-18T00:18:30Z","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":428410,"stargazers_count":14422,"watchers_count":14422,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":4358,"mirror_url":null,"open_issues_count":3583,"forks":4358,"open_issues":3583,"watchers":14422,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/14943"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/14943"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/14943/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/14943/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/3d28c98baeb4ac5931e1b4f3bc5b218bcd376705"}}}}