diff --git a/docs/concepts/cluster-administration/proxies.md b/docs/concepts/cluster-administration/proxies.md index 41e29d6cef..13f73e8bba 100644 --- a/docs/concepts/cluster-administration/proxies.md +++ b/docs/concepts/cluster-administration/proxies.md @@ -27,7 +27,7 @@ There are several different proxies you may encounter when using Kubernetes: - proxy to target may use HTTP or HTTPS as chosen by proxy using available information - can be used to reach a Node, Pod, or Service - does load balancing when used to reach a Service - 1. The [kube proxy](/docs/user-guide/services/#ips-and-vips): + 1. The [kube proxy](/docs/concepts/services-networking/service/#ips-and-vips): - runs on each node - proxies UDP and TCP - does not understand HTTP diff --git a/docs/concepts/configuration/overview.md b/docs/concepts/configuration/overview.md index 3690f36ea6..c354a2a6df 100644 --- a/docs/concepts/configuration/overview.md +++ b/docs/concepts/configuration/overview.md @@ -50,11 +50,11 @@ This is a living document. If you think of something that is not on this list bu If you only need access to the port for debugging purposes, you can use the [kubectl proxy and apiserver proxy](/docs/tasks/access-kubernetes-api/http-proxy-access-api/) or [kubectl port-forward](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/). You can use a [Service](/docs/concepts/services-networking/service/) object for external service access. - If you explicitly need to expose a pod's port on the host machine, consider using a [NodePort](/docs/user-guide/services/#type-nodeport) service before resorting to `hostPort`. + If you explicitly need to expose a pod's port on the host machine, consider using a [NodePort](/docs/concepts/services-networking/service/#type-nodeport) service before resorting to `hostPort`. - Avoid using `hostNetwork`, for the same reasons as `hostPort`. -- Use _headless services_ for easy service discovery when you don't need kube-proxy load balancing. See [headless services](/docs/user-guide/services/#headless-services). +- Use _headless services_ for easy service discovery when you don't need kube-proxy load balancing. See [headless services](/docs/concepts/services-networking/service/#headless-services). ## Using Labels diff --git a/docs/concepts/services-networking/connect-applications-service.md b/docs/concepts/services-networking/connect-applications-service.md index b69c831383..7079cfbeea 100644 --- a/docs/concepts/services-networking/connect-applications-service.md +++ b/docs/concepts/services-networking/connect-applications-service.md @@ -94,7 +94,7 @@ NAME ENDPOINTS AGE my-nginx 10.244.2.5:80,10.244.3.4:80 1m ``` -You should now be able to curl the nginx Service on `:` from any node in your cluster. Note that the Service IP is completely virtual, it never hits the wire, if you're curious about how this works you can read more about the [service proxy](/docs/user-guide/services/#virtual-ips-and-service-proxies). +You should now be able to curl the nginx Service on `:` from any node in your cluster. Note that the Service IP is completely virtual, it never hits the wire, if you're curious about how this works you can read more about the [service proxy](/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies). ## Accessing the Service diff --git a/docs/concepts/services-networking/ingress.md b/docs/concepts/services-networking/ingress.md index 115903c240..6914c89867 100644 --- a/docs/concepts/services-networking/ingress.md +++ b/docs/concepts/services-networking/ingress.md @@ -292,7 +292,7 @@ Please track the [L7 and Ingress proposal](https://github.com/kubernetes/kuberne You can expose a Service in multiple ways that don't directly involve the Ingress resource: -* Use [Service.Type=LoadBalancer](/docs/user-guide/services/#type-loadbalancer) -* Use [Service.Type=NodePort](/docs/user-guide/services/#type-nodeport) +* Use [Service.Type=LoadBalancer](/docs/concepts/services-networking/service/#type-loadbalancer) +* Use [Service.Type=NodePort](/docs/concepts/services-networking/service/#type-nodeport) * Use a [Port Proxy](https://git.k8s.io/contrib/for-demos/proxy-to-service) * Deploy the [Service loadbalancer](https://git.k8s.io/contrib/service-loadbalancer). This allows you to share a single IP among multiple Services and achieve more advanced loadbalancing through Service Annotations. diff --git a/docs/concepts/workloads/controllers/daemonset.md b/docs/concepts/workloads/controllers/daemonset.md index 26bc660eef..f1d6dd871b 100644 --- a/docs/concepts/workloads/controllers/daemonset.md +++ b/docs/concepts/workloads/controllers/daemonset.md @@ -124,7 +124,7 @@ Some possible patterns for communicating with pods in a DaemonSet are: - **Push**: Pods in the DaemonSet are configured to send updates to another service, such as a stats database. They do not have clients. - **NodeIP and Known Port**: Pods in the DaemonSet can use a `hostPort`, so that the pods are reachable via the node IPs. Clients know the list of node IPs somehow, and know the port by convention. -- **DNS**: Create a [headless service](/docs/user-guide/services/#headless-services) with the same pod selector, +- **DNS**: Create a [headless service](/docs/concepts/services-networking/service/#headless-services) with the same pod selector, and then discover DaemonSets using the `endpoints` resource or retrieve multiple A records from DNS. - **Service**: Create a service with the same pod selector, and use the service to reach a diff --git a/docs/concepts/workloads/controllers/petset.md b/docs/concepts/workloads/controllers/petset.md index 42c90cfd96..5858da2415 100644 --- a/docs/concepts/workloads/controllers/petset.md +++ b/docs/concepts/workloads/controllers/petset.md @@ -37,7 +37,7 @@ This doc assumes familiarity with the following Kubernetes concepts: * [Pods](/docs/user-guide/pods/single-container/) * [Cluster DNS](/docs/concepts/services-networking/dns-pod-service/) -* [Headless Services](/docs/user-guide/services/#headless-services) +* [Headless Services](/docs/concepts/services-networking/service/#headless-services) * [Persistent Volumes](/docs/concepts/storage/volumes/) * [Persistent Volume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/README.md) diff --git a/docs/getting-started-guides/scratch.md b/docs/getting-started-guides/scratch.md index 20bcecfef7..0e93a85301 100644 --- a/docs/getting-started-guides/scratch.md +++ b/docs/getting-started-guides/scratch.md @@ -27,7 +27,7 @@ steps that existing cluster setup scripts are making. 1. You should be familiar with using Kubernetes already. We suggest you set up a temporary cluster by following one of the other Getting Started Guides. - This will help you become familiar with the CLI ([kubectl](/docs/user-guide/kubectl/)) and concepts ([pods](/docs/user-guide/pods/), [services](/docs/user-guide/services/), etc.) first. + This will help you become familiar with the CLI ([kubectl](/docs/user-guide/kubectl/)) and concepts ([pods](/docs/user-guide/pods/), [services](/docs/concepts/services-networking/service/), etc.) first. 1. You should have `kubectl` installed on your desktop. This will happen as a side effect of completing one of the other Getting Started Guides. If not, follow the instructions [here](/docs/tasks/kubectl/install/). @@ -113,7 +113,7 @@ You will need to select an address range for the Pod IPs. Note that IPv6 is not using `10.10.0.0/24` through `10.10.255.0/24`, respectively. - Need to make these routable or connect with overlay. -Kubernetes also allocates an IP to each [service](/docs/user-guide/services/). However, +Kubernetes also allocates an IP to each [service](/docs/concepts/services-networking/service/). However, service IPs do not necessarily need to be routable. The kube-proxy takes care of translating Service IPs to Pod IPs before traffic leaves the node. You do need to Allocate a block of IPs for services. Call this diff --git a/docs/tasks/access-application-cluster/access-cluster.md b/docs/tasks/access-application-cluster/access-cluster.md index a3c1a6ce77..641f3c4ed9 100644 --- a/docs/tasks/access-application-cluster/access-cluster.md +++ b/docs/tasks/access-application-cluster/access-cluster.md @@ -308,7 +308,7 @@ There are several different proxies you may encounter when using Kubernetes: - proxy to target may use HTTP or HTTPS as chosen by proxy using available information - can be used to reach a Node, Pod, or Service - does load balancing when used to reach a Service - 1. The [kube proxy](/docs/user-guide/services/#ips-and-vips): + 1. The [kube proxy](/docs/concepts/services-networking/service/#ips-and-vips): - runs on each node - proxies UDP and TCP - does not understand HTTP diff --git a/docs/tasks/access-application-cluster/connecting-frontend-backend.md b/docs/tasks/access-application-cluster/connecting-frontend-backend.md index c1ba86065e..7b2798a0e1 100644 --- a/docs/tasks/access-application-cluster/connecting-frontend-backend.md +++ b/docs/tasks/access-application-cluster/connecting-frontend-backend.md @@ -29,7 +29,7 @@ frontend and backend are connected using a Kubernetes Service object. [Services with external load balancers](/docs/tasks/access-application-cluster/create-external-load-balancer/), which require a supported environment. If your environment does not support this, you can use a Service of type - [NodePort](/docs/user-guide/services/#type-nodeport) instead. + [NodePort](/docs/concepts/services-networking/service/#type-nodeport) instead. {% endcapture %} diff --git a/docs/tasks/access-application-cluster/create-external-load-balancer.md b/docs/tasks/access-application-cluster/create-external-load-balancer.md index effd07dd87..e3d69fdd58 100644 --- a/docs/tasks/access-application-cluster/create-external-load-balancer.md +++ b/docs/tasks/access-application-cluster/create-external-load-balancer.md @@ -25,7 +25,7 @@ cluster nodes _provided your cluster runs in a supported environment and is conf ## 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): +[service configuration file](/docs/concepts/services-networking/service/operations/#service-configuration-file): ```json "type": "LoadBalancer" diff --git a/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md b/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md index 91de9ece98..e4f59bff75 100644 --- a/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md +++ b/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md @@ -101,7 +101,7 @@ load-balanced access to an application running in a cluster. ## Using a service configuration file As an alternative to using `kubectl expose`, you can use a -[service configuration file](/docs/user-guide/services/operations) +[service configuration file](/docs/concepts/services-networking/service/operations) to create a Service. diff --git a/docs/tasks/access-application-cluster/service-access-application-cluster.md b/docs/tasks/access-application-cluster/service-access-application-cluster.md index 46bb4c9833..84909650c7 100644 --- a/docs/tasks/access-application-cluster/service-access-application-cluster.md +++ b/docs/tasks/access-application-cluster/service-access-application-cluster.md @@ -117,7 +117,7 @@ provides load balancing for an application that has two running instances. ## Using a service configuration file As an alternative to using `kubectl expose`, you can use a -[service configuration file](/docs/user-guide/services/operations) +[service configuration file](/docs/concepts/services-networking/service/operations) to create a Service. {% endcapture %} diff --git a/docs/tasks/federation/federation-service-discovery.md b/docs/tasks/federation/federation-service-discovery.md index 3068ce9ae3..a30910af72 100644 --- a/docs/tasks/federation/federation-service-discovery.md +++ b/docs/tasks/federation/federation-service-discovery.md @@ -125,9 +125,9 @@ underlying Kubernetes services (once these have been allocated - this may take a few seconds). For inter-cluster and inter-cloud-provider networking between service shards to work correctly, your services need to have an externally visible IP address. [Service Type: -Loadbalancer](/docs/user-guide/services/#type-loadbalancer) +Loadbalancer](/docs/concepts/services-networking/service/#type-loadbalancer) is typically used for this, although other options -(e.g. [External IP's](/docs/user-guide/services/#external-ips)) exist. +(e.g. [External IP's](/docs/concepts/services-networking/service/#external-ips)) exist. Note also that we have not yet provisioned any backend Pods to receive the network traffic directed to these addresses (i.e. 'Service diff --git a/docs/tasks/federation/set-up-cluster-federation-kubefed.md b/docs/tasks/federation/set-up-cluster-federation-kubefed.md index 5aef87109b..bbb1852911 100644 --- a/docs/tasks/federation/set-up-cluster-federation-kubefed.md +++ b/docs/tasks/federation/set-up-cluster-federation-kubefed.md @@ -261,11 +261,11 @@ kubefed init fellowship \ `kubefed init` exposes the federation API server as a Kubernetes [service](/docs/concepts/services-networking/service/) on the host cluster. By default, this service is exposed as a -[load balanced service](/docs/user-guide/services/#type-loadbalancer). +[load balanced service](/docs/concepts/services-networking/service/#type-loadbalancer). Most on-premises and bare-metal environments, and some cloud environments lack support for load balanced services. `kubefed init` allows exposing the federation API server as a -[`NodePort` service](/docs/user-guide/services/#type-nodeport) on +[`NodePort` service](/docs/concepts/services-networking/service/#type-nodeport) on such environments. This can be accomplished by passing the `--api-server-service-type=NodePort` flag. You can also specify the preferred address to advertise the federation API server by diff --git a/docs/tools/kompose/user-guide.md b/docs/tools/kompose/user-guide.md index 483ea22ea0..efd2b1c233 100644 --- a/docs/tools/kompose/user-guide.md +++ b/docs/tools/kompose/user-guide.md @@ -427,7 +427,7 @@ $ kompose up --provider openshift --build build-config ## Alternative Conversions -The default `kompose` transformation will generate Kubernetes [Deployments](http://kubernetes.io/docs/user-guide/deployments/) and [Services](http://kubernetes.io/docs/user-guide/services/), in yaml format. You have alternative option to generate json with `-j`. Also, you can alternatively generate [Replication Controllers](http://kubernetes.io/docs/user-guide/replication-controller/) objects, [Deamon Sets](http://kubernetes.io/docs/admin/daemons/), or [Helm](https://github.com/helm/helm) charts. +The default `kompose` transformation will generate Kubernetes [Deployments](http://kubernetes.io/docs/user-guide/deployments/) and [Services](http://kubernetes.io/docs/concepts/services-networking/service/), in yaml format. You have alternative option to generate json with `-j`. Also, you can alternatively generate [Replication Controllers](http://kubernetes.io/docs/user-guide/replication-controller/) objects, [Deamon Sets](http://kubernetes.io/docs/admin/daemons/), or [Helm](https://github.com/helm/helm) charts. ```sh $ kompose convert -j diff --git a/docs/tutorials/services/source-ip.md b/docs/tutorials/services/source-ip.md index bab393d37e..ba9f8139f0 100644 --- a/docs/tutorials/services/source-ip.md +++ b/docs/tutorials/services/source-ip.md @@ -53,7 +53,7 @@ deployment "source-ip-app" created ## Source IP for Services with Type=ClusterIP Packets sent to ClusterIP from within the cluster are never source NAT'd if -you're running kube-proxy in [iptables mode](/docs/user-guide/services/#proxy-mode-iptables), +you're running kube-proxy in [iptables mode](/docs/concepts/services-networking/service/#proxy-mode-iptables), which is the default since Kubernetes 1.2. Kube-proxy exposes its mode through a `proxyMode` endpoint: @@ -110,7 +110,7 @@ If the client pod and server pod are in the same node, the client_address is the ## Source IP for Services with Type=NodePort -As of Kubernetes 1.5, packets sent to Services with [Type=NodePort](/docs/user-guide/services/#type-nodeport) +As of Kubernetes 1.5, packets sent to Services with [Type=NodePort](/docs/concepts/services-networking/service/#type-nodeport) are source NAT'd by default. You can test this by creating a `NodePort` Service: ```console @@ -208,7 +208,7 @@ Visually: ## Source IP for Services with Type=LoadBalancer -As of Kubernetes 1.5, packets sent to Services with [Type=LoadBalancer](/docs/user-guide/services/#type-loadbalancer) are +As of Kubernetes 1.5, packets sent to Services with [Type=LoadBalancer](/docs/concepts/services-networking/service/#type-loadbalancer) are source NAT'd by default, because all schedulable Kubernetes nodes in the `Ready` state are eligible for loadbalanced traffic. So if packets arrive at a node without an endpoint, the system proxies it to a node *with* an diff --git a/docs/tutorials/stateful-application/basic-stateful-set.md b/docs/tutorials/stateful-application/basic-stateful-set.md index 52de2e9943..ea1b752c7b 100644 --- a/docs/tutorials/stateful-application/basic-stateful-set.md +++ b/docs/tutorials/stateful-application/basic-stateful-set.md @@ -55,7 +55,7 @@ After this tutorial, you will be familiar with the following. Begin by creating a StatefulSet using the example below. It is similar to the example presented in the [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/) concept. -It creates a [Headless Service](/docs/user-guide/services/#headless-services), +It creates a [Headless Service](/docs/concepts/services-networking/service/#headless-services), `nginx`, to publish the IP addresses of Pods in the StatefulSet, `web`. {% include code.html language="yaml" file="web.yaml" ghlink="/docs/tutorials/stateful-application/web.yaml" %} diff --git a/docs/tutorials/stateful-application/zookeeper.md b/docs/tutorials/stateful-application/zookeeper.md index 71350fedc0..a7857241d8 100644 --- a/docs/tutorials/stateful-application/zookeeper.md +++ b/docs/tutorials/stateful-application/zookeeper.md @@ -89,7 +89,7 @@ safely discarded. ## Creating a ZooKeeper Ensemble The manifest below contains a -[Headless Service](/docs/user-guide/services/#headless-services), +[Headless Service](/docs/concepts/services-networking/service/#headless-services), a [ConfigMap](/docs/tasks/configure-pod-container/configmap/), a [PodDisruptionBudget](/docs/admin/disruptions/#specifying-a-poddisruptionbudget), and a [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/).