{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/comments/105208681","pull_request_review_id":26060604,"id":105208681,"diff_hunk":"@@ -0,0 +1,200 @@\n+---\n+assignees:\n+- jayunit100\n+title: Pod Scheduling with node selectors\n+---\n+\n+## Node selection details\n+\n+You can constrain a [pod](/docs/user-guide/pods/) to only be able to run on particular [nodes](/docs/admin/node/) or to prefer to\n+run on particular nodes. There are several ways to do this, and they all use\n+[label selectors](/docs/user-guide/labels/) to make the selection.\n+Generally such constraints are unnecessary, as the scheduler will automatically do a reasonable placement\n+(e.g. spread your pods across nodes, not place the pod on a node with insufficient free resources, etc.)\n+but there are some circumstances where you may want more control where a pod lands, e.g. to ensure\n+that a pod ends up on a machine with an SSD attached to it, or to co-locate pods from two different\n+services that communicate a lot into the same availability zone.\n+\n+You can find all the files for these examples [in our docs\n+repo here](https://github.com/kubernetes/kubernetes.github.io/tree/{{page.docsbranch}}/docs/user-guide/node-selection).\n+\n+## nodeSelector\n+\n+`nodeSelector` is the simplest form of constraint.\n+`nodeSelector` is a field of PodSpec. It specifies a map of key-value pairs. For the pod to be eligible\n+to run on a node, the node must have each of the indicated key-value pairs as labels (it can have\n+additional labels as well). The most common usage is one key-value pair.\n+\n+Let's walk through an example of how to use `nodeSelector`.\n+\n+### Step Zero: Prerequisites\n+\n+This example assumes that you have a basic understanding of Kubernetes pods and that you have [turned up a Kubernetes cluster](https://github.com/kubernetes/kubernetes#documentation).\n+\n+### Step One: Attach label to the node\n+\n+Run `kubectl get nodes` to get the names of your cluster's nodes. Pick out the one that you want to add a label to.\n+\n+Then, to add a label to the node you've chosen, run `kubectl label nodes <node-name> <label-key>=<label-value>`. For example, if my node name is 'kubernetes-foo-node-1.c.a-robinson.internal' and my desired label is 'disktype=ssd', then I can run `kubectl label nodes kubernetes-foo-node-1.c.a-robinson.internal disktype=ssd`.\n+\n+If this fails with an \"invalid command\" error, you're likely using an older version of kubectl that doesn't have the `label` command. In that case, see the [previous version](https://github.com/kubernetes/kubernetes/blob/a053dbc313572ed60d89dae9821ecab8bfd676dc/examples/node-selection/README.md) of this guide for instructions on how to manually set labels on a node.\n+\n+Also, note that label keys must be in the form of DNS labels (as described in the [identifiers doc](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/identifiers.md)), meaning that they are not allowed to contain any upper-case letters.\n+\n+You can verify that it worked by re-running `kubectl get nodes --show-labels` and checking that the node now has a label.\n+\n+### Step Two: Add a nodeSelector field to your pod configuration\n+\n+Take whatever pod config file you want to run, and add a nodeSelector section to it, like this. For example, if this is my pod config:\n+\n+```yaml\n+apiVersion: v1\n+kind: Pod\n+metadata:\n+  name: nginx\n+  labels:\n+    env: test\n+spec:\n+  containers:\n+  - name: nginx\n+    image: nginx\n+```\n+\n+Then add a nodeSelector like so:\n+\n+{% include code.html language=\"yaml\" file=\"pod.yaml\" ghlink=\"/docs/user-guide/node-selection/pod.yaml\" %}\n+\n+When you then run `kubectl create -f pod.yaml`, the pod will get scheduled on the node that you attached the label to! You can verify that it worked by running `kubectl get pods -o wide` and looking at the \"NODE\" that the pod was assigned to.\n+\n+## Interlude: built-in node labels\n+\n+In addition to labels you [attach yourself](#step-one-attach-label-to-the-node), nodes come pre-populated\n+with a standard set of labels. As of Kubernetes v1.4 these labels are\n+\n+* `kubernetes.io/hostname`\n+* `failure-domain.beta.kubernetes.io/zone`\n+* `failure-domain.beta.kubernetes.io/region`\n+* `beta.kubernetes.io/instance-type`\n+* `beta.kubernetes.io/os`\n+* `beta.kubernetes.io/arch`\n+\n+## Alpha features: affinity and anti-affinity\n+\n+`nodeSelector` provides a very simple way to constrain pods to nodes with particular labels. The affinity/anti-affinity\n+feature, currently in alpha, greatly expands the types of constraints you can express. The key enhancements are\n+\n+1. the language is more expressive (not just \"AND of exact match\")\n+1. you can indicate that the rule is \"soft\"/\"preference\" rather than a hard requirement, so if the scheduler\n+can't satisfy it, the pod will still be scheduled\n+1. you can constrain against labels on other pods running on the node (or other topological domain),\n+rather than against labels on the node itself, which allows rules about which pods can and cannot be co-located\n+\n+The affinity feature consists of two types of affinity, \"node affinity\" and \"inter-pod affinity/anti-affinity.\"\n+Node affinity is like the existing `nodeSelector` (but with the first two benefits listed above),\n+while inter-pod affinity/anti-affinity constrains against pod labels rather than node labels, as\n+described in the third item listed above, in addition to having the first and second properties listed above.\n+\n+`nodeSelector` continues to work as usual, but will eventually be deprecated, as node affinity can express\n+everything that `nodeSelector` can express.\n+\n+### Node affinity (alpha feature)\n+\n+Node affinity was introduced in Kubernetes 1.2.\n+Node affinity is conceptually similar to `nodeSelector` -- it allows you to constrain which nodes your\n+pod is eligible to schedule on, based on labels on the node.\n+\n+There are currently two types of node affinity, called `requiredDuringSchedulingIgnoredDuringExecution` and\n+`preferredDuringSchedulingIgnoredDuringExecution`. You can think of them as \"hard\" and \"soft\" respectively,\n+in the sense that the former specifies rules that *must* be met for a pod to schedule onto a node (just like\n+`nodeSelector` but using a more expressive syntax), while the latter specifies *preferences* that the scheduler\n+will try to enforce but will not guarantee. The \"IgnoredDuringExecution\" part of the names means that, similar\n+to how `nodeSelector` works, if labels on a node change at runtime such that the affinity rules on a pod are no longer\n+met, the pod will still continue to run on the node. In the future we plan to offer\n+`requiredDuringSchedulingRequiredDuringExecution` which will be just like `requiredDuringSchedulingIgnoredDuringExecution`\n+except that it will evict pods from nodes that cease to satisfy the pods' node affinity requirements.\n+\n+Thus an example of `requiredDuringSchedulingIgnoredDuringExecution` would be \"only run the pod on nodes with Intel CPUs\"\n+and an example `preferredDuringSchedulingIgnoredDuringExecution` would be \"try to run this set of pods in availability\n+zone XYZ, but if it's not possible, then allow some to run elsewhere\".\n+\n+Node affinity is currently expressed using an annotation on Pod. Once the feature goes to GA it will use a field of Pod.\n+\n+Here's an example of a pod that uses node affinity:\n+\n+{% include code.html language=\"yaml\" file=\"pod-with-node-affinity.yaml\" ghlink=\"/docs/user-guide/node-selection/pod-with-node-affinity.yaml\" %}\n+\n+This node affinity rule says the pod can only be placed on a node with a label whose key is\n+`kubernetes.io/e2e-az-name` and whose value is either `e2e-az1` or `e2e-az2`. In addition,\n+among nodes that meet that criteria, nodes with a label whose key is `another-annotation-key` and whose\n+value is `another-annotation-value` should be preferred.\n+\n+You can see the operator `In` being used in the example. The new node affinity syntax supports the following operators: `In`, `NotIn`, `Exists`, `DoesNotExist`, `Gt`, `Lt`.\n+There is no explicit \"node anti-affinity\" concept, but `NotIn` and `DoesNotExist` give that behavior.\n+\n+If you specify both `nodeSelector` and `nodeAffinity`, *both* must be satisfied for the pod\n+to be scheduled onto a candidate node.\n+\n+For more information on node affinity, see the design doc\n+[here](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/nodeaffinity.md).\n+\n+### Inter-pod affinity and anti-affinity (alpha feature)\n+\n+Inter-pod affinity and anti-affinity were introduced in Kubernetes 1.4.\n+Inter-pod affinity and anti-affinity allow you to constrain which nodes your pod is eligible to schedule on *based on\n+labels on pods that are already running on the node* rather than based on labels on nodes. The rules are of the form \"this pod should (or, in the case of\n+anti-affinity, should not) run in an X if that X is already running one or more pods that meet rule Y.\" Y is expressed\n+as a LabelSelector with an associated list of namespaces (or \"all\" namespaces); unlike nodes, because pods are namespaced\n+(and therefore the labels on pods are implicitly namespaced),\n+a label selector over pod labels must specify which namespaces the selector should apply to. Conceptually X is a topology domain\n+like node, rack, cloud provider zone, cloud provider region, etc. You express it using a `topologyKey` which is the\n+key for the node label that the system uses to denote such a topology domain, e.g. see the label keys listed above\n+in the section \"Interlude: built-in node labels.\"\n+\n+As with node affinity, there are currently two types of pod affinity and anti-affinity, called `requiredDuringSchedulingIgnoredDuringExecution` and\n+`preferredDuringSchedulingIgnoredDuringExecution` which denote \"hard\" vs. \"soft\" requirements.\n+See the description in the node affinity section earlier.\n+An example of `requiredDuringSchedulingIgnoredDuringExecution` affinity would be \"co-locate the pods of service A and service B\n+in the same zone, since they communicate a lot with each other\"\n+and an example `preferredDuringSchedulingIgnoredDuringExecution` anti-affinity would be \"spread the pods from this service across zones\"\n+(a hard requirement wouldn't make sense, since you probably have more pods than zones).\n+\n+Inter-pod affinity and anti-affinity are currently expressed using an annotation on Pod. Once the feature goes to GA it will use a field.\n+\n+Here's an example of a pod that uses pod affinity:\n+\n+{% include code.html language=\"yaml\" file=\"pod-with-pod-affinity.yaml\" ghlink=\"/docs/user-guide/node-selection/pod-with-pod-affinity.yaml\" %}\n+\n+The affinity annotation on this pod defines one pod affinity rule and one pod anti-affinity rule. Both\n+must be satisfied for the pod to schedule onto a node. The\n+pod affinity rule says that the pod can schedule onto a node only if that node is in the same zone\n+as at least one already-running pod that has a label with key \"security\" and value \"S1\". (More precisely, the pod is eligible to run\n+on node N if node N has a label with key `failure-domain.beta.kubernetes.io/zone` and some value V\n+such that there is at least one node in the cluster with key `failure-domain.beta.kubernetes.io/zone` and\n+value V that is running a pod that has a label with key \"security\" and value \"S1\".) The pod anti-affinity\n+rule says that the pod cannot schedule onto a node if that node is already running a pod with label\n+having key \"security\" and value \"S2\". (If the `topologyKey` were `failure-domain.beta.kubernetes.io/zone` then\n+it would mean that the pod cannot schedule onto a node if that node is in the same zone as a pod with\n+label having key \"security\" and value \"S2\".) See the [design doc](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/podaffinity.md).\n+for many more examples of pod affinity and anti-affinity, both the `requiredDuringSchedulingIgnoredDuringExecution`\n+flavor and the `preferredDuringSchedulingIgnoredDuringExecution` flavor.\n+\n+As with node affinity, the legal operators for pod affinity and anti-affinity are `In`, `NotIn`, `Exists`, `DoesNotExist`, `Gt`, `Lt`.\n+\n+In principle, the `topologyKey` can be any legal label value. However,\n+for performance reasons, only a limit set of topology keys are allowed;\n+they are specified in the `--failure-domain` command-line argument to the scheduler. By default the allowed topology keys are\n+\n+* `kubernetes.io/hostname`\n+* `failure-domain.beta.kubernetes.io/zone`\n+* `failure-domain.beta.kubernetes.io/region`\n+\n+In addition to `labelSelector` and `topologyKey`, you can optionally specify a list `namespaces`","path":"docs/user-guide/node-selection/node-selection.md","position":191,"original_position":191,"commit_id":"cbef566d3c18edb4a0599a45da921b76fc5ca4fc","original_commit_id":"cbef566d3c18edb4a0599a45da921b76fc5ca4fc","user":{"login":"cmluciano","id":4790487,"avatar_url":"https://avatars2.githubusercontent.com/u/4790487?v=3","gravatar_id":"","url":"https://api.github.com/users/cmluciano","html_url":"https://github.com/cmluciano","followers_url":"https://api.github.com/users/cmluciano/followers","following_url":"https://api.github.com/users/cmluciano/following{/other_user}","gists_url":"https://api.github.com/users/cmluciano/gists{/gist_id}","starred_url":"https://api.github.com/users/cmluciano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmluciano/subscriptions","organizations_url":"https://api.github.com/users/cmluciano/orgs","repos_url":"https://api.github.com/users/cmluciano/repos","events_url":"https://api.github.com/users/cmluciano/events{/privacy}","received_events_url":"https://api.github.com/users/cmluciano/received_events","type":"User","site_admin":false},"body":"namespaces of namespaces?","created_at":"2017-03-09T16:34:42Z","updated_at":"2017-03-09T16:40:54Z","html_url":"https://github.com/kubernetes/kubernetes.github.io/pull/2392#discussion_r105208681","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/comments/105208681"},"html":{"href":"https://github.com/kubernetes/kubernetes.github.io/pull/2392#discussion_r105208681"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392","id":104047256,"html_url":"https://github.com/kubernetes/kubernetes.github.io/pull/2392","diff_url":"https://github.com/kubernetes/kubernetes.github.io/pull/2392.diff","patch_url":"https://github.com/kubernetes/kubernetes.github.io/pull/2392.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/2392","number":2392,"state":"open","locked":false,"title":"Canonical scheduling documentation","user":{"login":"jayunit100","id":826111,"avatar_url":"https://avatars0.githubusercontent.com/u/826111?v=3","gravatar_id":"","url":"https://api.github.com/users/jayunit100","html_url":"https://github.com/jayunit100","followers_url":"https://api.github.com/users/jayunit100/followers","following_url":"https://api.github.com/users/jayunit100/following{/other_user}","gists_url":"https://api.github.com/users/jayunit100/gists{/gist_id}","starred_url":"https://api.github.com/users/jayunit100/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jayunit100/subscriptions","organizations_url":"https://api.github.com/users/jayunit100/orgs","repos_url":"https://api.github.com/users/jayunit100/repos","events_url":"https://api.github.com/users/jayunit100/events{/privacy}","received_events_url":"https://api.github.com/users/jayunit100/received_events","type":"User","site_admin":false},"body":"Fixes #2276\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.kubernetes.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes.github.io/2392)\n<!-- Reviewable:end -->\n","created_at":"2017-01-31T23:37:47Z","updated_at":"2017-03-09T16:40:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6afe1183877cef0cb2f3a644711811a8cfb92b4f","assignee":{"login":"erictune","id":8105590,"avatar_url":"https://avatars0.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false},"assignees":[{"login":"erictune","id":8105590,"avatar_url":"https://avatars0.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/2392/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/statuses/cbef566d3c18edb4a0599a45da921b76fc5ca4fc","head":{"label":"jayunit100:canonical_scheduling_doc","ref":"canonical_scheduling_doc","sha":"cbef566d3c18edb4a0599a45da921b76fc5ca4fc","user":{"login":"jayunit100","id":826111,"avatar_url":"https://avatars0.githubusercontent.com/u/826111?v=3","gravatar_id":"","url":"https://api.github.com/users/jayunit100","html_url":"https://github.com/jayunit100","followers_url":"https://api.github.com/users/jayunit100/followers","following_url":"https://api.github.com/users/jayunit100/following{/other_user}","gists_url":"https://api.github.com/users/jayunit100/gists{/gist_id}","starred_url":"https://api.github.com/users/jayunit100/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jayunit100/subscriptions","organizations_url":"https://api.github.com/users/jayunit100/orgs","repos_url":"https://api.github.com/users/jayunit100/repos","events_url":"https://api.github.com/users/jayunit100/events{/privacy}","received_events_url":"https://api.github.com/users/jayunit100/received_events","type":"User","site_admin":false},"repo":{"id":79287320,"name":"kubernetes.github.io","full_name":"jayunit100/kubernetes.github.io","owner":{"login":"jayunit100","id":826111,"avatar_url":"https://avatars0.githubusercontent.com/u/826111?v=3","gravatar_id":"","url":"https://api.github.com/users/jayunit100","html_url":"https://github.com/jayunit100","followers_url":"https://api.github.com/users/jayunit100/followers","following_url":"https://api.github.com/users/jayunit100/following{/other_user}","gists_url":"https://api.github.com/users/jayunit100/gists{/gist_id}","starred_url":"https://api.github.com/users/jayunit100/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jayunit100/subscriptions","organizations_url":"https://api.github.com/users/jayunit100/orgs","repos_url":"https://api.github.com/users/jayunit100/repos","events_url":"https://api.github.com/users/jayunit100/events{/privacy}","received_events_url":"https://api.github.com/users/jayunit100/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jayunit100/kubernetes.github.io","description":"Kubernetes website and documentation repo: ","fork":true,"url":"https://api.github.com/repos/jayunit100/kubernetes.github.io","forks_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/forks","keys_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/teams","hooks_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/hooks","issue_events_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/events","assignees_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/tags","blobs_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/languages","stargazers_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/stargazers","contributors_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/contributors","subscribers_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/subscribers","subscription_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/subscription","commits_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/merges","archive_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/downloads","issues_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/labels{/name}","releases_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/jayunit100/kubernetes.github.io/deployments","created_at":"2017-01-18T00:35:45Z","updated_at":"2017-01-18T00:35:52Z","pushed_at":"2017-02-01T17:37:32Z","git_url":"git://github.com/jayunit100/kubernetes.github.io.git","ssh_url":"git@github.com:jayunit100/kubernetes.github.io.git","clone_url":"https://github.com/jayunit100/kubernetes.github.io.git","svn_url":"https://github.com/jayunit100/kubernetes.github.io","homepage":"https://kubernetes.github.io","size":49039,"stargazers_count":0,"watchers_count":0,"language":"HTML","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":"bf3ccfd7afdc8130102e39dd30795d431cd68cf9","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars1.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":51478266,"name":"kubernetes.github.io","full_name":"kubernetes/kubernetes.github.io","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars1.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.github.io","description":"Kubernetes website and documentation repo: ","fork":false,"url":"https://api.github.com/repos/kubernetes/kubernetes.github.io","forks_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/forks","keys_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/teams","hooks_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/events","assignees_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/tags","blobs_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/subscription","commits_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/merges","archive_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/downloads","issues_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kubernetes.github.io/deployments","created_at":"2016-02-10T22:46:48Z","updated_at":"2017-03-08T07:50:16Z","pushed_at":"2017-03-09T15:59:56Z","git_url":"git://github.com/kubernetes/kubernetes.github.io.git","ssh_url":"git@github.com:kubernetes/kubernetes.github.io.git","clone_url":"https://github.com/kubernetes/kubernetes.github.io.git","svn_url":"https://github.com/kubernetes/kubernetes.github.io","homepage":"https://kubernetes.github.io","size":51933,"stargazers_count":140,"watchers_count":140,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1015,"mirror_url":null,"open_issues_count":300,"forks":1015,"open_issues":300,"watchers":140,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392"},"html":{"href":"https://github.com/kubernetes/kubernetes.github.io/pull/2392"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/2392"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/issues/2392/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/pulls/2392/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes.github.io/statuses/cbef566d3c18edb4a0599a45da921b76fc5ca4fc"}}}}
{"actor":{"display_login":"cmluciano"}}