From 49fcbb7e4a68b2556677970b0f5b28aa2c6e6319 Mon Sep 17 00:00:00 2001 From: a-mccarthy Date: Tue, 23 Aug 2016 10:01:24 -0400 Subject: [PATCH 01/10] Fixed a broken link on accessing-the-api.md Corrected link to Admission Control page. --- docs/admin/accessing-the-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/admin/accessing-the-api.md b/docs/admin/accessing-the-api.md index 57d67a0a5d..6569ac93f8 100644 --- a/docs/admin/accessing-the-api.md +++ b/docs/admin/accessing-the-api.md @@ -116,7 +116,7 @@ rejects, then the request is immediately rejected. In addition to rejecting objects, admission controllers can also set complex defaults for fields. -The available Admission Control Modules are described [here](docs/admin/admission-controllers/). +The available Admission Control Modules are described [here](/docs/admin/admission-controllers/). Once a request passes all admission controllers, it is validated using the validation routines for the corresponding API object, and then written to the object store (shown as step **4**). From 94140aee7043bc58a828e4fdeb667287058774e1 Mon Sep 17 00:00:00 2001 From: desert-orchid Date: Tue, 23 Aug 2016 09:08:12 -0700 Subject: [PATCH 02/10] Fix typo `it can be disable through` should be `it can be disabled through` --- docs/user-guide/petset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/petset.md b/docs/user-guide/petset.md index 91796a4316..0a42169ea6 100644 --- a/docs/user-guide/petset.md +++ b/docs/user-guide/petset.md @@ -83,7 +83,7 @@ Example workloads for Pet Set: Before you start deploying applications as Pet Sets, there are a few limitations you should understand. * Pet Set is an *alpha* resource, not available in any Kubernetes release prior to 1.3. -* As with all alpha/beta resources, it can be disable through the `--runtime-config` option passed to the apiserver, and in fact most likely will be disabled on hosted offerings of Kubernetes. +* As with all alpha/beta resources, it can be disabled through the `--runtime-config` option passed to the apiserver, and in fact most likely will be disabled on hosted offerings of Kubernetes. * The only updatable field on a Pet Set is `replicas` * The storage for a given pet must either be provisioned by a [dynamic storage provisioner](http://releases.k8s.io/{{page.githubbranch}}/examples/experimental/persistent-volume-provisioning/README.md) based on the requested `storage class`, or pre-provisioned by an admin. Note that dynamic volume provisioning is also currently in alpha. * Deleting the Pet Set *will not* delete any pets. You will either have to manually scale it down to 0 pets first, or delete the pets yourself. From 1772478d0cc7a219383df28fa699535fb47f80bd Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 23 Aug 2016 14:17:38 -0700 Subject: [PATCH 03/10] Fix broken links in kubectrl --- docs/user-guide/kubectl/kubectl.md | 68 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/user-guide/kubectl/kubectl.md b/docs/user-guide/kubectl/kubectl.md index daeff4a144..20033d2aca 100644 --- a/docs/user-guide/kubectl/kubectl.md +++ b/docs/user-guide/kubectl/kubectl.md @@ -46,40 +46,40 @@ kubectl ### SEE ALSO -* [kubectl annotate](kubectl_annotate.md) - Update the annotations on a resource -* [kubectl api-versions](kubectl_api-versions.md) - Print the supported API versions on the server, in the form of "group/version". -* [kubectl apply](kubectl_apply.md) - Apply a configuration to a resource by filename or stdin -* [kubectl attach](kubectl_attach.md) - Attach to a running container. -* [kubectl autoscale](kubectl_autoscale.md) - Auto-scale a Deployment, ReplicaSet, or ReplicationController -* [kubectl cluster-info](kubectl_cluster-info.md) - Display cluster info -* [kubectl completion](kubectl_completion.md) - Output shell completion code for the given shell (bash or zsh) -* [kubectl config](kubectl_config.md) - config modifies kubeconfig files -* [kubectl convert](kubectl_convert.md) - Convert config files between different API versions -* [kubectl cordon](kubectl_cordon.md) - Mark node as unschedulable -* [kubectl create](kubectl_create.md) - Create a resource by filename or stdin -* [kubectl delete](kubectl_delete.md) - Delete resources by filenames, stdin, resources and names, or by resources and label selector. -* [kubectl describe](kubectl_describe.md) - Show details of a specific resource or group of resources -* [kubectl drain](kubectl_drain.md) - Drain node in preparation for maintenance -* [kubectl edit](kubectl_edit.md) - Edit a resource on the server -* [kubectl exec](kubectl_exec.md) - Execute a command in a container. -* [kubectl explain](kubectl_explain.md) - Documentation of resources. -* [kubectl expose](kubectl_expose.md) - Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service -* [kubectl get](kubectl_get.md) - Display one or many resources -* [kubectl label](kubectl_label.md) - Update the labels on a resource -* [kubectl logs](kubectl_logs.md) - Print the logs for a container in a pod. -* [kubectl namespace](kubectl_namespace.md) - SUPERSEDED: Set and view the current Kubernetes namespace -* [kubectl patch](kubectl_patch.md) - Update field(s) of a resource using strategic merge patch. -* [kubectl port-forward](kubectl_port-forward.md) - Forward one or more local ports to a pod. -* [kubectl proxy](kubectl_proxy.md) - Run a proxy to the Kubernetes API server -* [kubectl replace](kubectl_replace.md) - Replace a resource by filename or stdin. -* [kubectl rolling-update](kubectl_rolling-update.md) - Perform a rolling update of the given ReplicationController. -* [kubectl rollout](kubectl_rollout.md) - rollout manages a deployment -* [kubectl run](kubectl_run.md) - Run a particular image on the cluster. -* [kubectl scale](kubectl_scale.md) - Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job. -* [kubectl set](kubectl_set.md) - Set specific features on objects -* [kubectl taint](kubectl_taint.md) - Update the taints on one or more nodes -* [kubectl uncordon](kubectl_uncordon.md) - Mark node as schedulable -* [kubectl version](kubectl_version.md) - Print the client and server version information. +* [kubectl annotate](../../kubectl_annotate.md) - Update the annotations on a resource +* [kubectl api-versions](../kubectl_api-versions.md) - Print the supported API versions on the server, in the form of "group/version". +* [kubectl apply](../kubectl_apply.md) - Apply a configuration to a resource by filename or stdin +* [kubectl attach](../kubectl_attach.md) - Attach to a running container. +* [kubectl autoscale](../kubectl_autoscale.md) - Auto-scale a Deployment, ReplicaSet, or ReplicationController +* [kubectl cluster-info](../kubectl_cluster-info.md) - Display cluster info +* [kubectl completion](../kubectl_completion.md) - Output shell completion code for the given shell (bash or zsh) +* [kubectl config](../kubectl_config.md) - config modifies kubeconfig files +* [kubectl convert](../kubectl_convert.md) - Convert config files between different API versions +* [kubectl cordon](../kubectl_cordon.md) - Mark node as unschedulable +* [kubectl create](../kubectl_create.md) - Create a resource by filename or stdin +* [kubectl delete](../kubectl_delete.md) - Delete resources by filenames, stdin, resources and names, or by resources and label selector. +* [kubectl describe](../kubectl_describe.md) - Show details of a specific resource or group of resources +* [kubectl drain](../kubectl_drain.md) - Drain node in preparation for maintenance +* [kubectl edit](../kubectl_edit.md) - Edit a resource on the server +* [kubectl exec](../kubectl_exec.md) - Execute a command in a container. +* [kubectl explain](../kubectl_explain.md) - Documentation of resources. +* [kubectl expose](../kubectl_expose.md) - Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service +* [kubectl get](../kubectl_get.md) - Display one or many resources +* [kubectl label](../kubectl_label.md) - Update the labels on a resource +* [kubectl logs](../kubectl_logs.md) - Print the logs for a container in a pod. +* [kubectl namespace](../kubectl_namespace.md) - SUPERSEDED: Set and view the current Kubernetes namespace +* [kubectl patch](../kubectl_patch.md) - Update field(s) of a resource using strategic merge patch. +* [kubectl port-forward](../kubectl_port-forward.md) - Forward one or more local ports to a pod. +* [kubectl proxy](../kubectl_proxy.md) - Run a proxy to the Kubernetes API server +* [kubectl replace](../kubectl_replace.md) - Replace a resource by filename or stdin. +* [kubectl rolling-update](../kubectl_rolling-update.md) - Perform a rolling update of the given ReplicationController. +* [kubectl rollout](../kubectl_rollout.md) - rollout manages a deployment +* [kubectl run](../kubectl_run.md) - Run a particular image on the cluster. +* [kubectl scale](../kubectl_scale.md) - Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job. +* [kubectl set](../kubectl_set.md) - Set specific features on objects +* [kubectl taint](../kubectl_taint.md) - Update the taints on one or more nodes +* [kubectl uncordon](../kubectl_uncordon.md) - Mark node as schedulable +* [kubectl version](../kubectl_version.md) - Print the client and server version information. ###### Auto generated by spf13/cobra on 12-Aug-2016 From acc2143fa367f4215d4a7c700c79ebe3d7258fdc Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 23 Aug 2016 14:24:07 -0700 Subject: [PATCH 04/10] Update kubectl.md --- docs/user-guide/kubectl/kubectl.md | 68 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/user-guide/kubectl/kubectl.md b/docs/user-guide/kubectl/kubectl.md index 20033d2aca..bc9ba1a76f 100644 --- a/docs/user-guide/kubectl/kubectl.md +++ b/docs/user-guide/kubectl/kubectl.md @@ -46,40 +46,40 @@ kubectl ### SEE ALSO -* [kubectl annotate](../../kubectl_annotate.md) - Update the annotations on a resource -* [kubectl api-versions](../kubectl_api-versions.md) - Print the supported API versions on the server, in the form of "group/version". -* [kubectl apply](../kubectl_apply.md) - Apply a configuration to a resource by filename or stdin -* [kubectl attach](../kubectl_attach.md) - Attach to a running container. -* [kubectl autoscale](../kubectl_autoscale.md) - Auto-scale a Deployment, ReplicaSet, or ReplicationController -* [kubectl cluster-info](../kubectl_cluster-info.md) - Display cluster info -* [kubectl completion](../kubectl_completion.md) - Output shell completion code for the given shell (bash or zsh) -* [kubectl config](../kubectl_config.md) - config modifies kubeconfig files -* [kubectl convert](../kubectl_convert.md) - Convert config files between different API versions -* [kubectl cordon](../kubectl_cordon.md) - Mark node as unschedulable -* [kubectl create](../kubectl_create.md) - Create a resource by filename or stdin -* [kubectl delete](../kubectl_delete.md) - Delete resources by filenames, stdin, resources and names, or by resources and label selector. -* [kubectl describe](../kubectl_describe.md) - Show details of a specific resource or group of resources -* [kubectl drain](../kubectl_drain.md) - Drain node in preparation for maintenance -* [kubectl edit](../kubectl_edit.md) - Edit a resource on the server -* [kubectl exec](../kubectl_exec.md) - Execute a command in a container. -* [kubectl explain](../kubectl_explain.md) - Documentation of resources. -* [kubectl expose](../kubectl_expose.md) - Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service -* [kubectl get](../kubectl_get.md) - Display one or many resources -* [kubectl label](../kubectl_label.md) - Update the labels on a resource -* [kubectl logs](../kubectl_logs.md) - Print the logs for a container in a pod. -* [kubectl namespace](../kubectl_namespace.md) - SUPERSEDED: Set and view the current Kubernetes namespace -* [kubectl patch](../kubectl_patch.md) - Update field(s) of a resource using strategic merge patch. -* [kubectl port-forward](../kubectl_port-forward.md) - Forward one or more local ports to a pod. -* [kubectl proxy](../kubectl_proxy.md) - Run a proxy to the Kubernetes API server -* [kubectl replace](../kubectl_replace.md) - Replace a resource by filename or stdin. -* [kubectl rolling-update](../kubectl_rolling-update.md) - Perform a rolling update of the given ReplicationController. -* [kubectl rollout](../kubectl_rollout.md) - rollout manages a deployment -* [kubectl run](../kubectl_run.md) - Run a particular image on the cluster. -* [kubectl scale](../kubectl_scale.md) - Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job. -* [kubectl set](../kubectl_set.md) - Set specific features on objects -* [kubectl taint](../kubectl_taint.md) - Update the taints on one or more nodes -* [kubectl uncordon](../kubectl_uncordon.md) - Mark node as schedulable -* [kubectl version](../kubectl_version.md) - Print the client and server version information. +* [kubectl annotate](../kubectl_annotate/) - Update the annotations on a resource +* [kubectl api-versions](../kubectl_api-versions/) - Print the supported API versions on the server, in the form of "group/version". +* [kubectl apply](../kubectl_apply/) - Apply a configuration to a resource by filename or stdin +* [kubectl attach](../kubectl_attach/) - Attach to a running container. +* [kubectl autoscale](../kubectl_autoscale/) - Auto-scale a Deployment, ReplicaSet, or ReplicationController +* [kubectl cluster-info](../kubectl_cluster-info/) - Display cluster info +* [kubectl completion](../kubectl_completion/) - Output shell completion code for the given shell (bash or zsh) +* [kubectl config](../kubectl_config/) - config modifies kubeconfig files +* [kubectl convert](../kubectl_convert/) - Convert config files between different API versions +* [kubectl cordon](../kubectl_cordon/) - Mark node as unschedulable +* [kubectl create](../kubectl_create/) - Create a resource by filename or stdin +* [kubectl delete](../kubectl_delete/) - Delete resources by filenames, stdin, resources and names, or by resources and label selector. +* [kubectl describe](../kubectl_describe/) - Show details of a specific resource or group of resources +* [kubectl drain](../kubectl_drain/) - Drain node in preparation for maintenance +* [kubectl edit](../kubectl_edit/) - Edit a resource on the server +* [kubectl exec](../kubectl_exec/) - Execute a command in a container. +* [kubectl explain](../kubectl_explain/) - Documentation of resources. +* [kubectl expose](../kubectl_expose/) - Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service +* [kubectl get](../kubectl_get/) - Display one or many resources +* [kubectl label](../kubectl_label/) - Update the labels on a resource +* [kubectl logs](../kubectl_logs/) - Print the logs for a container in a pod. +* [kubectl namespace](../kubectl_namespace/) - SUPERSEDED: Set and view the current Kubernetes namespace +* [kubectl patch](../kubectl_patch/) - Update field(s) of a resource using strategic merge patch. +* [kubectl port-forward](../kubectl_port-forward/) - Forward one or more local ports to a pod. +* [kubectl proxy](../kubectl_proxy/) - Run a proxy to the Kubernetes API server +* [kubectl replace](../kubectl_replace/) - Replace a resource by filename or stdin. +* [kubectl rolling-update](../kubectl_rolling-update/) - Perform a rolling update of the given ReplicationController. +* [kubectl rollout](../kubectl_rollout/) - rollout manages a deployment +* [kubectl run](../kubectl_run/) - Run a particular image on the cluster. +* [kubectl scale](../kubectl_scale/) - Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job. +* [kubectl set](../kubectl_set/) - Set specific features on objects +* [kubectl taint](../kubectl_taint/) - Update the taints on one or more nodes +* [kubectl uncordon](../kubectl_uncordon/) - Mark node as schedulable +* [kubectl version](../kubectl_version/) - Print the client and server version information. ###### Auto generated by spf13/cobra on 12-Aug-2016 From c241e7c97b9e6834f50271a2a58f7d243785679e Mon Sep 17 00:00:00 2001 From: Doug Davis Date: Tue, 23 Aug 2016 14:11:54 -0700 Subject: [PATCH 05/10] add IBM to the list of community members Signed-off-by: Doug Davis --- community.html | 1 + images/community_logos/ibm_logo.png | Bin 0 -> 10041 bytes 2 files changed, 1 insertion(+) create mode 100644 images/community_logos/ibm_logo.png diff --git a/community.html b/community.html index 626832f512..a1e0e04d61 100644 --- a/community.html +++ b/community.html @@ -71,6 +71,7 @@ title: Community + diff --git a/images/community_logos/ibm_logo.png b/images/community_logos/ibm_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd0624f0ac8f0804d0572cb21bd21ef4ca932ab GIT binary patch literal 10041 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 f|EmZPW%v Date: Tue, 23 Aug 2016 21:27:18 -0700 Subject: [PATCH 06/10] Resized IBM logo Replaced ridiculously sized IBM logo with something a bit more reasonable. --- images/community_logos/ibm_logo.png | Bin 10041 -> 7502 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/community_logos/ibm_logo.png b/images/community_logos/ibm_logo.png index 8dd0624f0ac8f0804d0572cb21bd21ef4ca932ab..79ccf452539edc98a3a0075e65368f63509b4c88 100644 GIT binary patch literal 7502 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 H_Vs@NE}%3| literal 10041 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 f|EmZPW%v Date: Wed, 24 Aug 2016 10:47:00 -0400 Subject: [PATCH 07/10] Fix tiny grammatical errors in petset user guide --- docs/user-guide/petset.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/user-guide/petset.md b/docs/user-guide/petset.md index 0a42169ea6..47213c188d 100644 --- a/docs/user-guide/petset.md +++ b/docs/user-guide/petset.md @@ -145,7 +145,7 @@ Cluster Domain | Service (ns/name) | Pet Set (ns/name) | Pet Set Domain | Pet DN Note that Cluster Domain will be set to `cluster.local` unless [otherwise configured](http://releases.k8s.io/{{page.githubbranch}}/build/kube-dns/README.md#how-do-i-configure-it). -Lets verify our assertion with a simple test. +Let's verify our assertion with a simple test. ```shell $ kubectl get svc @@ -154,7 +154,7 @@ nginx None 80/TCP 12m ... ``` -First, the PetSet gives provides a stable hostname: +First, the PetSet provides a stable hostname: ```shell $ for i in 0 1; do kubectl exec web-$i -- sh -c 'hostname'; done @@ -181,7 +181,7 @@ Name: web-1.nginx Address 1: 10.180.0.9 ``` -The containers are running nginx webservers, which by default will look for an index.html file in `/usr/share/nginx/html/index.html`. That directory is backed by a `PersistentVolume` created by the Pet Set. So lets write our hostname there: +The containers are running nginx webservers, which by default will look for an index.html file in `/usr/share/nginx/html/index.html`. That directory is backed by a `PersistentVolume` created by the Pet Set. So let's write our hostname there: ```shell $ for i in 0 1; do From f1fb380d1fcdc30a97a86cf813cdd7f20b430ad9 Mon Sep 17 00:00:00 2001 From: Girish Kalele Date: Fri, 19 Aug 2016 11:19:03 -0700 Subject: [PATCH 08/10] Modify loadbalancer docs for new external source ip preservation annotation --- docs/user-guide/load-balancer.md | 82 +++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/docs/user-guide/load-balancer.md b/docs/user-guide/load-balancer.md index 7c9c43a63b..c129190248 100644 --- a/docs/user-guide/load-balancer.md +++ b/docs/user-guide/load-balancer.md @@ -8,19 +8,28 @@ ## Overview When creating a service, you have the option of automatically creating a -network load balancer. This provides an +cloud network load balancer. This provides an externally-accessible IP address that sends traffic to the correct port on your -cluster nodes. +cluster nodes _provided your cluster runs in a supported environment and is configured with the correct cloud load balancer provider package_. + +## External Load Balancer Providers + +It is important to note that the datapath for this functionality is provided by a load balancer external to the Kubernetes cluster. + +When the service type is set to `LoadBalancer`, Kubernetes provides functionality equivalent to type=`ClusterIP` to pods within the cluster and extends it by programming the (external to Kubernetes) load balancer with entries for the Kubernetes VMs. The Kubernetes service controller automates the creation of the external load balancer, health checks (if needed), firewall rules (if needed) and retrieves the external IP allocated by the cloud provider and populates it in the service object. ## Configuration file To create an external load balancer, add the following line to your [service configuration file](/docs/user-guide/services/operations/#service-configuration-file): +```json "type": "LoadBalancer" +``` Your configuration file might look like: +```json { "kind": "Service", "apiVersion": "v1", @@ -38,14 +47,17 @@ Your configuration file might look like: "type": "LoadBalancer" } } +``` ## Using kubectl You can alternatively create the service with the `kubectl expose` command and its `--type=LoadBalancer` flag: +```bash $ kubectl expose rc example --port=8765 --target-port=9376 \ --name=example-service --type=LoadBalancer +``` This command creates a new service using the same selectors as the referenced resource (in the case of the example above, a replication controller named @@ -59,6 +71,7 @@ For more information, including optional flags, refer to the You can find the IP address created for your service by getting the service information through `kubectl`: +```bash $ kubectl describe services example-service Name: example-service Selector: app=example @@ -70,5 +83,70 @@ information through `kubectl`: Endpoints: 10.64.0.4:80,10.64.1.5:80,10.64.2.4:80 Session Affinity: None No events. +``` The IP address is listed next to `LoadBalancer Ingress`. + +## Loss of client source IP for external traffic + +Due to the implementation of this feature, the source IP for sessions as seen in the target container will *not be the original source IP* of the client. This is the default behavior as of Kubernetes v1.4. However, starting in v1.4, an optional alpha feature has been added +that will preserve the client Source IP for GCE/GKE environments. This feature will be phased in for other cloud providers in subsequent releases. + +## Annotation to modify the LoadBalancer behavior for preservation of Source IP +In 1.4, an Alpha feature has been added that changes the behavior of the external LoadBalancer feature. + +This feature can be activated by adding the alpha annotation below to the metadata section of the Service Configuration file. + +```json + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "example-service", + "annotations": { + "service.alpha.kubernetes.io/external-traffic": "OnlyLocal" + } + }, + "spec": { + "ports": [{ + "port": 8765, + "targetPort": 9376 + }], + "selector": { + "app": "example" + }, + "type": "LoadBalancer" + } + } +``` + +### Alpha Feature Gate for the 'service.alpha.kubernetes.io/external-traffic' annotation + +Alpha features are not enabled by default, they must be enabled using the release gate command line flags +for kube-controller-manager and kube-proxy. +See [https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/runtimeconfig.md](Runtime feature flags proposal) for more details on feature gate flags. + +If this feature is not enabled in your cluster, this annotation in your service configuration will be rejected. + +### Implementation across different cloudproviders/environments + +Note that this feature is not currently implemented for all cloudproviders/environments. +This feature does not work for nodePorts yet, so environments/cloud providers with proxy-style load-balancers cannot use it yet. + +### Caveats and Limitations when preserving source IPs + +GCE/AWS load balancers do not provide weights for their target pools. This was not an issue with the old LB +kube-proxy rules which would correctly balance across all endpoints. + +With the new functionality, the external traffic will not be equally load balanced across pods, but rather +equally balanced at the node level (because GCE/AWS and other external LB implementations do not have the ability +for specifying the weight per node, they balance equally across all target nodes, disregarding the number of +pods on each node). + +We can, however, state that for NumServicePods << NumNodes or NumServicePods >> NumNodes, a fairly close-to-equal +distribution will be seen, even without weights. + +Once the external load balancers provide weights, this functionality can be added to the LB programming path. +*Future Work: No support for weights is provided for the 1.4 release, but may be added at a future date* + +Internal pod to pod traffic should behave similar to ClusterIP services, with equal probability across all pods. From 1f17f1a45006339b0807375ba5f8f9bf968ac964 Mon Sep 17 00:00:00 2001 From: Jared Date: Wed, 24 Aug 2016 14:43:47 -0700 Subject: [PATCH 09/10] Fixed link to "nodes" --- docs/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference.md b/docs/reference.md index b8ed937049..c95f21a0c0 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -20,7 +20,7 @@ In the reference section, you can find reference documentation for Kubernetes AP ## Glossary -Explore the glossary of essential Kubernetes concepts. Some good starting points are the entries for [Pods](/docs/user-guide/pods/), [Nodes](/docs/admin/nodes/), [Services](/docs/user-guide/services/), and [Replication Controllers](/docs/user-guide/replication-controller/). +Explore the glossary of essential Kubernetes concepts. Some good starting points are the entries for [Pods](/docs/user-guide/pods/), [Nodes](/docs/admin/node/), [Services](/docs/user-guide/services/), and [Replication Controllers](/docs/user-guide/replication-controller/). ## Design Docs From a6543c31e76994e72d44f7e791936d4c57d0ff89 Mon Sep 17 00:00:00 2001 From: Jared Date: Wed, 24 Aug 2016 14:50:28 -0700 Subject: [PATCH 10/10] Fixed broken link to "addon" --- docs/admin/node-problem.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/admin/node-problem.md b/docs/admin/node-problem.md index ab09a78dfc..fdb557311c 100644 --- a/docs/admin/node-problem.md +++ b/docs/admin/node-problem.md @@ -36,8 +36,8 @@ it to [support other log format](/docs/admin/node-problem/#support-other-log-for ## Enable/Disable in GCE cluster -Node problem detector is running as a cluster -[addon](docs/admin/cluster-large/#addon-resources) enabled by default in the +Node problem detector is [running as a cluster +addon](/docs/admin/cluster-large/#addon-resources) enabled by default in the gce cluster. You can enable/disable it by setting the environment variable