-
- file,
-
- # Deny all file writes.
- deny /** w,
-}
diff --git a/docs/admin/apparmor/hello-apparmor-pod.yaml b/docs/admin/apparmor/hello-apparmor-pod.yaml
deleted file mode 100644
index 3e9b3b2a9c..0000000000
--- a/docs/admin/apparmor/hello-apparmor-pod.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Pod
-metadata:
- name: hello-apparmor
- annotations:
- # Tell Kubernetes to apply the AppArmor profile "k8s-apparmor-example-deny-write".
- # Note that this is ignored if the Kubernetes node is not running version 1.4 or greater.
- container.apparmor.security.beta.kubernetes.io/hello: localhost/k8s-apparmor-example-deny-write
-spec:
- containers:
- - name: hello
- image: busybox
- command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]
diff --git a/docs/admin/authentication.md b/docs/admin/authentication.md
index a0ab2d9a89..10f3ce64dd 100644
--- a/docs/admin/authentication.md
+++ b/docs/admin/authentication.md
@@ -435,7 +435,7 @@ the authentication webhook
queries the remote service with a review object containing the token. Kubernetes
will not challenge a request that lacks such a header.
-Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/api/)
+Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/concepts/overview/kubernetes-api/)
as other Kubernetes API objects. Implementers should be aware of looser
compatibility promises for beta objects and check the "apiVersion" field of the
request to ensure correct deserialization. Additionally, the API server must
diff --git a/docs/admin/authorization/index.md b/docs/admin/authorization/index.md
index 7b51bedc0d..54ccdc6350 100644
--- a/docs/admin/authorization/index.md
+++ b/docs/admin/authorization/index.md
@@ -37,7 +37,7 @@ Kubernetes reviews only the following API request attributes:
--* For resource requests using `get`, `update`, `patch`, and `delete` verbs, you must provide the resource name.
* **Subresource** - The subresource that is being accessed (for resource requests only).
* **Namespace** - The namespace of the object that is being accessed (for namespaced resource requests only).
- * **API group** - The API group being accessed (for resource requests only). An empty string designates the [core API group](/docs/api/).
+ * **API group** - The API group being accessed (for resource requests only). An empty string designates the [core API group](/docs/concepts/overview/kubernetes-api/).
## Determine the Request Verb
To determine the request verb for a resource API endpoint, review the HTTP verb used and whether or not the request acts on an individual resource or a collection of resources:
diff --git a/docs/admin/authorization/rbac.md b/docs/admin/authorization/rbac.md
index 56260e13d9..a7d17a9265 100644
--- a/docs/admin/authorization/rbac.md
+++ b/docs/admin/authorization/rbac.md
@@ -521,7 +521,7 @@ This is commonly used by add-on API servers for unified authentication and autho
| system:persistent-volume-provisioner |
None |
-Allows access to the resources required by most dynamic volume provisioners. |
+Allows access to the resources required by most dynamic volume provisioners. |
diff --git a/docs/admin/authorization/webhook.md b/docs/admin/authorization/webhook.md
index b88fef6357..8a807bc35b 100644
--- a/docs/admin/authorization/webhook.md
+++ b/docs/admin/authorization/webhook.md
@@ -58,7 +58,7 @@ action. This object contains fields describing the user attempting to make the
request, and either details about the resource being accessed or requests
attributes.
-Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/api/)
+Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/concepts/overview/kubernetes-api/)
as other Kubernetes API objects. Implementers should be aware of looser
compatibility promises for beta objects and check the "apiVersion" field of the
request to ensure correct deserialization. Additionally, the API Server must
diff --git a/docs/admin/federation/index.md b/docs/admin/federation/index.md
index ecdcca87d9..d4c524a926 100644
--- a/docs/admin/federation/index.md
+++ b/docs/admin/federation/index.md
@@ -134,7 +134,7 @@ existing Kubernetes cluster. It also starts a
[`type: LoadBalancer`](/docs/concepts/services-networking/service/#type-loadbalancer)
[`Service`](/docs/concepts/services-networking/service/) for the
`federation-apiserver` and a
-[`PVC`](/docs/concepts/storage/persistent-volumes/) backed
+[`PVC`](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims/) backed
by a dynamically provisioned
[`PV`](/docs/concepts/storage/persistent-volumes/) for
`etcd`. All these components are created in the `federation` namespace.
diff --git a/docs/api-reference/apps/v1beta1/definitions.html b/docs/api-reference/apps/v1beta1/definitions.html
index 2f15ecf907..7043dfcba4 100755
--- a/docs/api-reference/apps/v1beta1/definitions.html
+++ b/docs/api-reference/apps/v1beta1/definitions.html
@@ -367,7 +367,7 @@
accessModes |
-AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
false |
v1.PersistentVolumeAccessMode array |
|
@@ -381,7 +381,7 @@
resources |
-Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
false |
v1.ResourceRequirements |
|
@@ -1160,7 +1160,7 @@ Examples:
resources |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
false |
v1.ResourceRequirements |
|
@@ -1896,14 +1896,14 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
spec |
-Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
false |
v1.PersistentVolumeClaimSpec |
|
status |
-Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
false |
v1.PersistentVolumeClaimStatus |
|
@@ -2006,7 +2006,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
claimName |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
true |
string |
|
@@ -2194,7 +2194,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
accessModes |
-AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
false |
v1.PersistentVolumeAccessMode array |
|
@@ -2988,7 +2988,7 @@ The StatefulSet guarantees that a given network identity will always map to the
persistentVolumeClaim |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
false |
v1.PersistentVolumeClaimVolumeSource |
|
diff --git a/docs/api-reference/batch/v1/definitions.html b/docs/api-reference/batch/v1/definitions.html
index 50f6f28e44..20ecb4cf03 100755
--- a/docs/api-reference/batch/v1/definitions.html
+++ b/docs/api-reference/batch/v1/definitions.html
@@ -1066,7 +1066,7 @@ Examples:
resources |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
false |
v1.ResourceRequirements |
|
@@ -1857,7 +1857,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
claimName |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
true |
string |
|
@@ -2977,7 +2977,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
persistentVolumeClaim |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
false |
v1.PersistentVolumeClaimVolumeSource |
|
diff --git a/docs/api-reference/extensions/v1beta1/definitions.html b/docs/api-reference/extensions/v1beta1/definitions.html
index 262b7aed95..7830bf5666 100755
--- a/docs/api-reference/extensions/v1beta1/definitions.html
+++ b/docs/api-reference/extensions/v1beta1/definitions.html
@@ -1938,7 +1938,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
claimName |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
true |
string |
|
@@ -2749,7 +2749,7 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
persistentVolumeClaim |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
false |
v1.PersistentVolumeClaimVolumeSource |
|
@@ -4993,7 +4993,7 @@ Both these may change in the future. Incoming requests are matched against the h
resources |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
false |
v1.ResourceRequirements |
|
diff --git a/docs/api-reference/v1.5/index.html b/docs/api-reference/v1.5/index.html
index 71b333af82..de6a3b57da 100644
--- a/docs/api-reference/v1.5/index.html
+++ b/docs/api-reference/v1.5/index.html
@@ -179,7 +179,7 @@ Appears In PodSpec
resources ResourceRequirements |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
securityContext SecurityContext |
@@ -23125,11 +23125,11 @@ Appears In PersistentVolumeClaimList
spec PersistentVolumeClaimSpec |
-Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
status PersistentVolumeClaimStatus |
-Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
@@ -23147,11 +23147,11 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
resources ResourceRequirements |
-Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
selector LabelSelector |
@@ -23177,7 +23177,7 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
capacity object |
@@ -23204,7 +23204,7 @@ Appears In PersistentVolumeClaim
items PersistentVolumeClaim array |
-A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+A list of persistent volume claims. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
kind string |
@@ -25413,7 +25413,7 @@ Appears In PodSpec
persistentVolumeClaim PersistentVolumeClaimVolumeSource |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -36717,7 +36717,7 @@ Appears In Node
capacity object |
-Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details. |
+Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity for more details. |
conditions NodeCondition array |
@@ -39039,7 +39039,7 @@ Appears In Node
-PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes
+PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/
@@ -39065,11 +39065,11 @@ Appears In PersistentVolumeList
spec PersistentVolumeSpec |
-Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
status PersistentVolumeStatus |
-Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
@@ -39087,7 +39087,7 @@ Appears In PersistentVolume
accessModes string array |
-AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes |
+AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes |
awsElasticBlockStore AWSElasticBlockStoreVolumeSource |
@@ -39103,7 +39103,7 @@ Appears In PersistentVolume
capacity object |
-A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity |
+A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity |
cephfs CephFSVolumeSource |
@@ -39115,7 +39115,7 @@ Appears In PersistentVolume
claimRef ObjectReference |
-ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding |
+ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding |
fc FCVolumeSource |
@@ -39151,7 +39151,7 @@ Appears In PersistentVolume
persistentVolumeReclaimPolicy string |
-What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy |
+What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#recycling-policy |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -39189,7 +39189,7 @@ Appears In PersistentVolume
phase string |
-Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase |
+Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#phase |
reason string |
@@ -39212,7 +39212,7 @@ Appears In PersistentVolume
items PersistentVolume array |
-List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes |
+List of persistent volumes. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/ |
kind string |
@@ -50004,7 +50004,7 @@ Appears In Volume
claimName string |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
readOnly boolean |
diff --git a/docs/api-reference/v1.6/index.html b/docs/api-reference/v1.6/index.html
index 64322a8562..37d5d7f9c2 100644
--- a/docs/api-reference/v1.6/index.html
+++ b/docs/api-reference/v1.6/index.html
@@ -183,7 +183,7 @@ Appears In PodSpec
resources ResourceRequirements |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
securityContext SecurityContext |
@@ -23025,11 +23025,11 @@ Appears In PersistentVolumeClaimLis
spec PersistentVolumeClaimSpec |
-Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
status PersistentVolumeClaimStatus |
-Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
@@ -23047,11 +23047,11 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
resources ResourceRequirements |
-Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
selector LabelSelector |
@@ -23059,7 +23059,7 @@ Appears In PersistentVolumeClaim
storageClassName string |
-Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#class-1 |
+Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 |
volumeName string |
@@ -23081,7 +23081,7 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
capacity object |
@@ -23108,7 +23108,7 @@ Appears In PersistentVolumeClaim
items PersistentVolumeClaim array |
-A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+A list of persistent volume claims. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
kind string |
@@ -25328,7 +25328,7 @@ Appears In PodPresetSpec
persistentVolumeClaim PersistentVolumeClaimVolumeSource |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -38720,7 +38720,7 @@ Appears In Node
capacity object |
-Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details. |
+Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity for more details. |
conditions NodeCondition array |
@@ -41046,7 +41046,7 @@ Appears In Node
-PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes
+PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/
@@ -41072,11 +41072,11 @@ Appears In PersistentVolumeList
spec PersistentVolumeSpec |
-Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
status PersistentVolumeStatus |
-Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
@@ -41094,7 +41094,7 @@ Appears In PersistentVolume
accessModes string array |
-AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes |
+AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes |
awsElasticBlockStore AWSElasticBlockStoreVolumeSource |
@@ -41110,7 +41110,7 @@ Appears In PersistentVolume
capacity object |
-A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity |
+A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity |
cephfs CephFSVolumeSource |
@@ -41122,7 +41122,7 @@ Appears In PersistentVolume
claimRef ObjectReference |
-ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding |
+ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding |
fc FCVolumeSource |
@@ -41158,7 +41158,7 @@ Appears In PersistentVolume
persistentVolumeReclaimPolicy string |
-What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy |
+What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#recycling-policy |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -41208,7 +41208,7 @@ Appears In PersistentVolume
phase string |
-Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase |
+Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#phase |
reason string |
@@ -41231,7 +41231,7 @@ Appears In PersistentVolume
items PersistentVolume array |
-List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes |
+List of persistent volumes. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/ |
kind string |
@@ -52657,7 +52657,7 @@ Appears In Volume
claimName string |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
readOnly boolean |
diff --git a/docs/concepts/api-extension/custom-resources.md b/docs/concepts/api-extension/custom-resources.md
index dce7da2b15..aded0427a5 100644
--- a/docs/concepts/api-extension/custom-resources.md
+++ b/docs/concepts/api-extension/custom-resources.md
@@ -53,8 +53,12 @@ This frees you from writing your own API server to handle the custom resource,
but the generic nature of the implementation means you have less flexibility than with
[API server aggregation](#api-server-aggregation).
-CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of
-Kubernetes 1.7.
+Refer to the [Custom Resource Example](https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/apiextensions-apiserver/examples/client-go)
+for a demonstration of how to register a new custom resource, work with instances of your new resource type,
+and setup a controller to handle events.
+
+**Note:** CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of Kubernetes 1.7.
+{: .note}
## API server aggregation
diff --git a/docs/concepts/cluster-administration/cloud-providers.md b/docs/concepts/cluster-administration/cloud-providers.md
index 4c0034efb9..e31c0acf23 100644
--- a/docs/concepts/cluster-administration/cloud-providers.md
+++ b/docs/concepts/cluster-administration/cloud-providers.md
@@ -13,7 +13,7 @@ This section describes all the possible configurations which can
be used when running Kubernetes on Amazon Web Services.
## Load Balancers
-You can setup [external load balancers](/docs/tasks/access-application-cluster/create-external-load-balancer)
+You can setup [external load balancers](/docs/tasks/access-application-cluster/create-external-load-balancer/)
to use specific features in AWS by configuring the annotations as shown below.
```yaml
diff --git a/docs/concepts/cluster-administration/cluster-administration-overview.md b/docs/concepts/cluster-administration/cluster-administration-overview.md
index 9f6a9018c0..97c07725e3 100644
--- a/docs/concepts/cluster-administration/cluster-administration-overview.md
+++ b/docs/concepts/cluster-administration/cluster-administration-overview.md
@@ -18,23 +18,23 @@ See the guides in [Picking the Right Solution](/docs/setup/pick-right-solution/)
Before choosing a guide, here are some considerations:
- Do you just want to try out Kubernetes on your computer, or do you want to build a high-availability, multi-node cluster? Choose distros best suited for your needs.
- - **If you are designing for high-availability**, learn about configuring [clusters in multiple zones](/docs/admin/multi-cluster).
+ - **If you are designing for high-availability**, learn about configuring [clusters in multiple zones](/docs/admin/multi-cluster/).
- Will you be using **a hosted Kubernetes cluster**, such as [Google Container Engine (GKE)](https://cloud.google.com/container-engine/), or **hosting your own cluster**?
- Will your cluster be **on-premises**, or **in the cloud (IaaS)**? Kubernetes does not directly support hybrid clusters. Instead, you can set up multiple clusters.
- - **If you are configuring Kubernetes on-premises**, consider which [networking model](/docs/admin/networking) fits best. One option for custom networking is [*OpenVSwitch GRE/VxLAN networking*](/docs/admin/ovs-networking/), which uses OpenVSwitch to set up networking between pods across Kubernetes nodes.
+ - **If you are configuring Kubernetes on-premises**, consider which [networking model](/docs/admin/networking/) fits best. One option for custom networking is [*OpenVSwitch GRE/VxLAN networking*](/docs/admin/ovs-networking/), which uses OpenVSwitch to set up networking between pods across Kubernetes nodes.
- Will you be running Kubernetes on **"bare metal" hardware** or on **virtual machines (VMs)**?
- Do you **just want to run a cluster**, or do you expect to do **active development of Kubernetes project code**? If the
latter, choose a actively-developed distro. Some distros only use binary releases, but
offer a greater variety of choices.
- - Familiarize yourself with the [components](/docs/admin/cluster-components) needed to run a cluster.
+ - Familiarize yourself with the [components](/docs/admin/cluster-components/) needed to run a cluster.
Note: Not all distros are actively maintained. Choose distros which have been tested with a recent version of Kubernetes.
-If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](/docs/admin/salt).
+If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](/docs/admin/salt/).
## Managing a cluster
-* [Managing a cluster](/docs/concepts/cluster-administration/cluster-management/) describes several topics related to the lifecycle of a cluster: creating a new cluster, upgrading your cluster’s master and worker nodes, performing node maintenance (e.g. kernel upgrades), and upgrading the Kubernetes API version of a running cluster..
+* [Managing a cluster](/docs/concepts/cluster-administration/cluster-management/) describes several topics related to the lifecycle of a cluster: creating a new cluster, upgrading your cluster’s master and worker nodes, performing node maintenance (e.g. kernel upgrades), and upgrading the Kubernetes API version of a running cluster.
* Learn how to [manage nodes](/docs/concepts/nodes/node/).
@@ -44,20 +44,20 @@ If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](
* [Kubernetes Container Environment](/docs/concepts/containers/container-environment-variables/) describes the environment for Kubelet managed containers on a Kubernetes node.
-* [Controlling Access to the Kubernetes API](/docs/admin/accessing-the-api) describes how to set up permissions for users and service accounts.
+* [Controlling Access to the Kubernetes API](/docs/admin/accessing-the-api/) describes how to set up permissions for users and service accounts.
-* [Authenticating](/docs/admin/authentication) explains authentication in Kubernetes, including the various authentication options.
+* [Authenticating](/docs/admin/authentication/) explains authentication in Kubernetes, including the various authentication options.
-* [Authorization](/docs/admin/authorization) is separate from authentication, and controls how HTTP calls are handled.
+* [Authorization](/docs/admin/authorization/) is separate from authentication, and controls how HTTP calls are handled.
-* [Using Admission Controllers](/docs/admin/admission-controllers) explains plug-ins which intercepts requests to the Kubernetes API server after authentication and authorization.
+* [Using Admission Controllers](/docs/admin/admission-controllers/) explains plug-ins which intercepts requests to the Kubernetes API server after authentication and authorization.
* [Using Sysctls in a Kubernetes Cluster](/docs/concepts/cluster-administration/sysctl-cluster/) describes to an administrator how to use the `sysctl` command-line tool to set kernel parameters .
* [Auditing](/docs/tasks/debug-application-cluster/audit/) describes how to interact with Kubernetes' audit logs.
### Securing the kubelet
- * [Master-Node communication](/docs/concepts/cluster-administration/master-node-communication/)
+ * [Master-Node communication](/docs/concepts/architecture/master-node-communication/)
* [TLS bootstrapping](/docs/admin/kubelet-tls-bootstrapping/)
* [Kubelet authentication/authorization](/docs/admin/kubelet-authentication-authorization/)
diff --git a/docs/concepts/cluster-administration/kubelet-garbage-collection.md b/docs/concepts/cluster-administration/kubelet-garbage-collection.md
index 0a1036cd69..068ee6bd2a 100644
--- a/docs/concepts/cluster-administration/kubelet-garbage-collection.md
+++ b/docs/concepts/cluster-administration/kubelet-garbage-collection.md
@@ -72,4 +72,4 @@ Including:
| `--low-diskspace-threshold-mb` | `--eviction-hard` or `eviction-soft` | eviction generalizes disk thresholds to other resources |
| `--outofdisk-transition-frequency` | `--eviction-pressure-transition-period` | eviction generalizes disk pressure transition to other resources |
-See [Configuring Out Of Resource Handling](/docs/concepts/cluster-administration/out-of-resource/) for more details.
+See [Configuring Out Of Resource Handling](/docs/tasks/administer-cluster/out-of-resource/) for more details.
diff --git a/docs/concepts/cluster-administration/manage-deployment.md b/docs/concepts/cluster-administration/manage-deployment.md
index 4a94607125..c89990c044 100644
--- a/docs/concepts/cluster-administration/manage-deployment.md
+++ b/docs/concepts/cluster-administration/manage-deployment.md
@@ -256,7 +256,7 @@ my-nginx-2035384211-u3t6x 1/1 Running 0 23m fe
This outputs all "app=nginx" pods, with an additional label column of pods' tier (specified with `-L` or `--label-columns`).
-For more information, please see [labels](/docs/user-guide/labels/) and [kubectl label](/docs/user-guide/kubectl/{{page.version}}/#label) document.
+For more information, please see [labels](/docs/concepts/overview/working-with-objects/labels/) and [kubectl label](/docs/user-guide/kubectl/{{page.version}}/#label) document.
## Updating annotations
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/manage-compute-resources-container.md b/docs/concepts/configuration/manage-compute-resources-container.md
index 2b5c67b022..475d859044 100644
--- a/docs/concepts/configuration/manage-compute-resources-container.md
+++ b/docs/concepts/configuration/manage-compute-resources-container.md
@@ -26,7 +26,7 @@ CPU and memory are collectively referred to as *compute resources*, or just
*resources*. Compute
resources are measurable quantities that can be requested, allocated, and
consumed. They are distinct from
-[API resources](/docs/api/). API resources, such as Pods and
+[API resources](/docs/concepts/overview/kubernetes-api/). API resources, such as Pods and
[Services](/docs/user-guide/services) are objects that can be read and modified
through the Kubernetes API server.
diff --git a/docs/concepts/configuration/organize-cluster-access-kubeconfig.md b/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
index 78a63da117..3709914bd5 100644
--- a/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
+++ b/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
@@ -37,16 +37,20 @@ in a variety of ways. For example:
- Administrators might have sets of certificates that they provide to individual users.
With kubeconfig files, you can organize your clusters, users, and namespaces.
-And you can define contexts that enable users to quickly and easily switch between
+You can also define contexts to quickly and easily switch between
clusters and namespaces.
## Context
-A kubeconfig file can have *context* elements. Each context is a triple
-(cluster, namespace, user). You can use `kubectl config use-context` to set
-the current context. The `kubectl` command-line tool communicates with the
-cluster and namespace listed in the current context. And it uses the
-credentials of the user listed in the current context.
+A *context* element in a kubeconfig file is used to group access parameters
+under a convenient name. Each context has three parameters: cluster, namespace, and user.
+By default, the `kubectl` command-line tool uses parameters from
+the *current context* to communicate with the cluster.
+
+To choose the current context:
+```
+kubectl config use-context
+```
## The KUBECONFIG environment variable
diff --git a/docs/concepts/configuration/overview.md b/docs/concepts/configuration/overview.md
index 3690f36ea6..61149cd3ca 100644
--- a/docs/concepts/configuration/overview.md
+++ b/docs/concepts/configuration/overview.md
@@ -50,15 +50,15 @@ 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
-- Define and use [labels](/docs/user-guide/labels/) that identify __semantic attributes__ of your application or deployment. For example, instead of attaching a label to a set of pods to explicitly represent some service (For example, `service: myservice`), or explicitly representing the replication controller managing the pods (for example, `controller: mycontroller`), attach labels that identify semantic attributes, such as `{ app: myapp, tier: frontend, phase: test, deployment: v3 }`. This will let you select the object groups appropriate to the context— for example, a service for all "tier: frontend" pods, or all "test" phase components of app "myapp". See the [guestbook](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/guestbook/) app for an example of this approach.
+- Define and use [labels](/docs/concepts/overview/working-with-objects/labels/) that identify __semantic attributes__ of your application or deployment. For example, instead of attaching a label to a set of pods to explicitly represent some service (For example, `service: myservice`), or explicitly representing the replication controller managing the pods (for example, `controller: mycontroller`), attach labels that identify semantic attributes, such as `{ app: myapp, tier: frontend, phase: test, deployment: v3 }`. This will let you select the object groups appropriate to the context— for example, a service for all "tier: frontend" pods, or all "test" phase components of app "myapp". See the [guestbook](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/guestbook/) app for an example of this approach.
A service can be made to span multiple deployments, such as is done across [rolling updates](/docs/tasks/run-application/rolling-update-replication-controller/), by simply omitting release-specific labels from its selector, rather than updating a service's selector to match the replication controller's selector fully.
@@ -84,7 +84,7 @@ This is a living document. If you think of something that is not on this list bu
- Use `kubectl delete` rather than `stop`. `Delete` has a superset of the functionality of `stop`, and `stop` is deprecated.
-- Use kubectl bulk operations (via files and/or labels) for get and delete. See [label selectors](/docs/user-guide/labels/#label-selectors) and [using labels effectively](/docs/concepts/cluster-administration/manage-deployment/#using-labels-effectively).
+- Use kubectl bulk operations (via files and/or labels) for get and delete. See [label selectors](/docs/concepts/overview/working-with-objects/labels/#label-selectors) and [using labels effectively](/docs/concepts/cluster-administration/manage-deployment/#using-labels-effectively).
- Use `kubectl run` and `expose` to quickly create and expose single container Deployments. See the [quick start guide](/docs/user-guide/quick-start/) for an example.
diff --git a/docs/concepts/containers/container-environment-variables.md b/docs/concepts/containers/container-environment-variables.md
index 07f2e2caba..513b09cb46 100644
--- a/docs/concepts/containers/container-environment-variables.md
+++ b/docs/concepts/containers/container-environment-variables.md
@@ -19,7 +19,7 @@ This page describes the resources available to Containers in the Container envir
The Kubernetes Container environment provides several important resources to Containers:
-* A filesystem, which is a combination of an [image](/docs/concepts/containers/images) and one or more [volumes](/docs/concepts/storage/volumes).
+* A filesystem, which is a combination of an [image](/docs/concepts/containers/images/) and one or more [volumes](/docs/concepts/storage/volumes/).
* Information about the Container itself.
* Information about other objects in the cluster.
@@ -31,7 +31,7 @@ It is available through the `hostname` command or the
function call in libc.
The Pod name and namespace are available as environment variables through the
-[downward API](/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information).
+[downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/).
User defined environment variables from the Pod definition are also available to the Container,
as are any environment variables specified statically in the Docker image.
diff --git a/docs/concepts/containers/images.md b/docs/concepts/containers/images.md
index 6d06187dbb..6519f42a2e 100644
--- a/docs/concepts/containers/images.md
+++ b/docs/concepts/containers/images.md
@@ -25,7 +25,7 @@ you can do one of the following:
- set the `imagePullPolicy` of the container to `Always`;
- use `:latest` as the tag for the image to use;
-- enable the [AllwaysPullImages](/docs/admin/admission-controllers/#alwayspullimages) admission controller.
+- enable the [AlwaysPullImages](/docs/admin/admission-controllers/#alwayspullimages) admission controller.
If you did not specify tag of your image, it will be assumed as `:latest`, with
pull image policy of `Always` correspondingly.
diff --git a/docs/concepts/overview/components.md b/docs/concepts/overview/components.md
index 3cf64483ca..52fcd42175 100644
--- a/docs/concepts/overview/components.md
+++ b/docs/concepts/overview/components.md
@@ -18,20 +18,20 @@ cluster (for example, scheduling), and detecting and responding to cluster event
Master components can be run on any node in the cluster. However,
for simplicity, set up scripts typically start all master components on
the same VM, and do not run user containers on this VM. See
-[Building High-Availability Clusters](/docs/admin/high-availability) for an example multi-master-VM setup.
+[Building High-Availability Clusters](/docs/admin/high-availability/) for an example multi-master-VM setup.
### kube-apiserver
-[kube-apiserver](/docs/admin/kube-apiserver) exposes the Kubernetes API. It is the front-end for the
-Kubernetes control plane. It is designed to scale horizontally -- that is, it scales by deploying more instances. See [Building High-Availability Clusters](/docs/admin/high-availability).
+[kube-apiserver](/docs/admin/kube-apiserver/) exposes the Kubernetes API. It is the front-end for the
+Kubernetes control plane. It is designed to scale horizontally -- that is, it scales by deploying more instances. See [Building High-Availability Clusters](/docs/admin/high-availability/).
### etcd
-[etcd](/docs/tasks/administer-cluster/configure-upgrade-etcd) is used as Kubernetes' backing store. All cluster data is stored here. Always have a backup plan for etcd's data for your Kubernetes cluster.
+[etcd](/docs/tasks/administer-cluster/configure-upgrade-etcd/) is used as Kubernetes' backing store. All cluster data is stored here. Always have a backup plan for etcd's data for your Kubernetes cluster.
### kube-controller-manager
-[kube-controller-manager](/docs/admin/kube-controller-manager) runs controllers, which are the background threads that handle routine tasks in the cluster. Logically, each controller is a separate process, but to reduce complexity, they are all compiled into a single binary and run in a single process.
+[kube-controller-manager](/docs/admin/kube-controller-manager/) runs controllers, which are the background threads that handle routine tasks in the cluster. Logically, each controller is a separate process, but to reduce complexity, they are all compiled into a single binary and run in a single process.
These controllers include:
@@ -58,7 +58,7 @@ The following controllers have cloud provider dependencies:
### kube-scheduler
-[kube-scheduler](/docs/admin/kube-scheduler) watches newly created pods that have no node assigned, and
+[kube-scheduler](/docs/admin/kube-scheduler/) watches newly created pods that have no node assigned, and
selects a node for them to run on.
### addons
@@ -84,12 +84,12 @@ Containers started by Kubernetes automatically include this DNS server in their
#### Container Resource Monitoring
-[Container Resource Monitoring](/docs/tasks/debug-application-cluster/resource-usage-monitoring) records generic time-series metrics
+[Container Resource Monitoring](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) records generic time-series metrics
about containers in a central database, and provides a UI for browsing that data.
#### Cluster-level Logging
-A [Cluster-level logging](/docs/concepts/cluster-administration/logging) mechanism is responsible for
+A [Cluster-level logging](/docs/concepts/cluster-administration/logging/) mechanism is responsible for
saving container logs to a central log store with search/browsing interface.
## Node components
@@ -98,7 +98,7 @@ Node components run on every node, maintaining running pods and providing the Ku
### kubelet
-[kubelet](/docs/admin/kubelet) is the primary node agent. It watches for pods that have been assigned to its node (either by apiserver or via local configuration file) and:
+[kubelet](/docs/admin/kubelet/) is the primary node agent. It watches for pods that have been assigned to its node (either by apiserver or via local configuration file) and:
* Mounts the pod's required volumes.
* Downloads the pod's secrets.
@@ -109,7 +109,7 @@ Node components run on every node, maintaining running pods and providing the Ku
### kube-proxy
-[kube-proxy](/docs/admin/kube-proxy) enables the Kubernetes service abstraction by maintaining
+[kube-proxy](/docs/admin/kube-proxy/) enables the Kubernetes service abstraction by maintaining
network rules on the host and performing connection forwarding.
diff --git a/docs/concepts/overview/kubernetes-api.md b/docs/concepts/overview/kubernetes-api.md
index a6d38679a5..b74650ff8d 100644
--- a/docs/concepts/overview/kubernetes-api.md
+++ b/docs/concepts/overview/kubernetes-api.md
@@ -18,7 +18,7 @@ Kubernetes itself is decomposed into multiple components, which interact through
## API changes
-In our experience, any system that is successful needs to grow and change as new use cases emerge or existing ones change. Therefore, we expect the Kubernetes API to continuously change and grow. However, we intend to not break compatibility with existing clients, for an extended period of time. In general, new API resources and new resource fields can be expected to be added frequently. Elimination of resources or fields will require following a deprecation process. The precise deprecation policy for eliminating features is TBD, but once we reach our 1.0 milestone, there will be a specific policy.
+In our experience, any system that is successful needs to grow and change as new use cases emerge or existing ones change. Therefore, we expect the Kubernetes API to continuously change and grow. However, we intend to not break compatibility with existing clients, for an extended period of time. In general, new API resources and new resource fields can be expected to be added frequently. Elimination of resources or fields will require following the [API deprecation policy](https://kubernetes.io/docs/reference/deprecation-policy/).
What constitutes a compatible change and how to change the API are detailed by the [API change document](https://git.k8s.io/community/contributors/devel/api_changes.md).
diff --git a/docs/concepts/overview/what-is-kubernetes.md b/docs/concepts/overview/what-is-kubernetes.md
index 0596b10b26..93cff0b445 100644
--- a/docs/concepts/overview/what-is-kubernetes.md
+++ b/docs/concepts/overview/what-is-kubernetes.md
@@ -93,7 +93,7 @@ Even though Kubernetes provides a lot of functionality, there are always new sce
Additionally, the [Kubernetes control plane](/docs/concepts/overview/components/) is built upon the same [APIs](/docs/reference/api-overview/) that are available to developers and users. Users can write their own controllers, such as [schedulers](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/devel/scheduler.md), with [their own APIs](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/api-machinery/extending-api.md) that can be targeted by a general-purpose [command-line tool](/docs/user-guide/kubectl-overview/).
-This [design](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/architecture/principles.md) has enabled a number of other systems to build atop Kubernetes.
+This [design](https://git.k8s.io/community/contributors/design-proposals/architecture/principles.md) has enabled a number of other systems to build atop Kubernetes.
#### What Kubernetes is not
diff --git a/docs/concepts/overview/working-with-objects/annotations.md b/docs/concepts/overview/working-with-objects/annotations.md
index 2bb89e17e5..e0b8443253 100644
--- a/docs/concepts/overview/working-with-objects/annotations.md
+++ b/docs/concepts/overview/working-with-objects/annotations.md
@@ -55,7 +55,7 @@ and the like.
{% endcapture %}
{% capture whatsnext %}
-Learn more about [Labels and Selectors](/docs/user-guide/labels/).
+Learn more about [Labels and Selectors](/docs/concepts/overview/working-with-objects/labels/).
{% endcapture %}
{% include templates/concept.md %}
diff --git a/docs/concepts/overview/working-with-objects/kubernetes-objects.md b/docs/concepts/overview/working-with-objects/kubernetes-objects.md
index b462fb5f0b..bb8358f617 100644
--- a/docs/concepts/overview/working-with-objects/kubernetes-objects.md
+++ b/docs/concepts/overview/working-with-objects/kubernetes-objects.md
@@ -56,7 +56,7 @@ In the `.yaml` file for the Kubernetes object you want to create, you'll need to
* `kind` - What kind of object you want to create
* `metadata` - Data that helps uniquely identify the object, including a `name` string, UID, and optional `namespace`
-You'll also need to provide the object `spec` field. The precise format of the object `spec` is different for every Kubernetes object, and contains nested fields specific to that object. The [Kubernetes API reference](/docs/api/) can help you find the spec format for all of the objects you can create using Kubernetes.
+You'll also need to provide the object `spec` field. The precise format of the object `spec` is different for every Kubernetes object, and contains nested fields specific to that object. The [Kubernetes API reference](/docs/concepts/overview/kubernetes-api/) can help you find the spec format for all of the objects you can create using Kubernetes.
{% endcapture %}
diff --git a/docs/concepts/policy/pod-security-policy.md b/docs/concepts/policy/pod-security-policy.md
index b408a84508..2ea42a4de3 100644
--- a/docs/concepts/policy/pod-security-policy.md
+++ b/docs/concepts/policy/pod-security-policy.md
@@ -8,7 +8,7 @@ Objects of type `PodSecurityPolicy` govern the ability
to make requests on a pod that affect the `SecurityContext` that will be
applied to a pod and container.
-See [PodSecurityPolicy proposal](https://git.k8s.io/community/contributors/design-proposals/auth/security-context-constraints.md) for more information.
+See [PodSecurityPolicy proposal](https://git.k8s.io/community/contributors/design-proposals/auth/pod-security-policy.md) for more information.
* TOC
{:toc}
diff --git a/docs/concepts/policy/resource-quotas.md b/docs/concepts/policy/resource-quotas.md
index fb9b07e3d6..11a51a76f2 100644
--- a/docs/concepts/policy/resource-quotas.md
+++ b/docs/concepts/policy/resource-quotas.md
@@ -67,16 +67,16 @@ The following resource types are supported:
## Storage Resource Quota
-You can limit the total sum of [storage resources](/docs/user-guide/persistent-volumes) that can be requested in a given namespace.
+You can limit the total sum of [storage resources](/docs/concepts/storage/persistent-volumes/) that can be requested in a given namespace.
In addition, you can limit consumption of storage resources based on associated storage-class.
| Resource Name | Description |
| --------------------- | ----------------------------------------------------------- |
| `requests.storage` | Across all persistent volume claims, the sum of storage requests cannot exceed this value. |
-| `persistentvolumeclaims` | The total number of [persistent volume claims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
+| `persistentvolumeclaims` | The total number of [persistent volume claims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
| `.storageclass.storage.k8s.io/requests.storage` | Across all persistent volume claims associated with the storage-class-name, the sum of storage requests cannot exceed this value. |
-| `.storageclass.storage.k8s.io/persistentvolumeclaims` | Across all persistent volume claims associated with the storage-class-name, the total number of [persistent volume claims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
+| `.storageclass.storage.k8s.io/persistentvolumeclaims` | Across all persistent volume claims associated with the storage-class-name, the total number of [persistent volume claims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
For example, if an operator wants to quota storage with `gold` storage class separate from `bronze` storage class, the operator can
define a quota as follows:
@@ -99,7 +99,7 @@ are supported:
| Resource Name | Description |
| ------------------------------- | ------------------------------------------------- |
| `configmaps` | The total number of config maps that can exist in the namespace. |
-| `persistentvolumeclaims` | The total number of [persistent volume claims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
+| `persistentvolumeclaims` | The total number of [persistent volume claims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) that can exist in the namespace. |
| `pods` | The total number of pods in a non-terminal state that can exist in the namespace. A pod is in a terminal state if `status.phase in (Failed, Succeeded)` is true. |
| `replicationcontrollers` | The total number of replication controllers that can exist in the namespace. |
| `resourcequotas` | The total number of [resource quotas](/docs/admin/admission-controllers/#resourcequota) that can exist in the namespace. |
@@ -244,4 +244,4 @@ See a [detailed example for how to use resource quota](/docs/tasks/administer-cl
## Read More
-See [ResourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md) for more information.
+See [ResourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md) for more information.
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/services-networking/network-policies.md b/docs/concepts/services-networking/network-policies.md
index ee03ad0715..e88049922d 100644
--- a/docs/concepts/services-networking/network-policies.md
+++ b/docs/concepts/services-networking/network-policies.md
@@ -44,6 +44,10 @@ spec:
- Egress
ingress:
- from:
+ - ipBlock:
+ cidr: 172.17.0.0/16
+ except:
+ - 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
@@ -76,6 +80,11 @@ __ingress__: Each `NetworkPolicy` may include a list of whitelist `ingress` rule
__egress__: Each `NetworkPolicy` may include a list of whitelist `egress` rules. Each rule allows traffic which matches both the `to` and `ports` sections. The example policy contains a single rule, which matches traffic on a single port to any destination in `10.0.0.0/24`.
+__ipBlock__: `ipBlock` describes a particular CIDR that is allowed to
+the pods matched by a NetworkPolicySpec's podSelector. The `except` entry
+is a slice of CIDRs that should not be included within an IP Block. Except
+values will be rejected if they are outside the CIDR range.
+
So, the example NetworkPolicy:
1. isolates "role=db" pods in the "default" namespace for both ingress and egress traffic (if they weren't already isolated)
diff --git a/docs/concepts/services-networking/service.md b/docs/concepts/services-networking/service.md
index 653e10aeb3..7bb7ecbba4 100644
--- a/docs/concepts/services-networking/service.md
+++ b/docs/concepts/services-networking/service.md
@@ -120,7 +120,7 @@ subsets:
NOTE: Endpoint IPs may not be loopback (127.0.0.0/8), link-local
(169.254.0.0/16), or link-local multicast (224.0.0.0/24).
-Accessing a `Service` without a selector works the same as if it had selector.
+Accessing a `Service` without a selector works the same as if it had a selector.
The traffic will be routed to endpoints defined by the user (`1.2.3.4:9376` in
this example).
@@ -176,7 +176,9 @@ or `Services` or `Pods`.
By default, the choice of backend is round robin. Client-IP based session affinity
can be selected by setting `service.spec.sessionAffinity` to `"ClientIP"` (the
-default is `"None"`).
+default is `"None"`), and you can set the max session sticky time by setting the field
+`service.spec.sessionAffinityConfig.clientIP.timeoutSeconds` if you have already set
+`service.spec.sessionAffinity` to `"ClientIP"` (the default is "10800").

@@ -191,7 +193,9 @@ select a backend `Pod`.
By default, the choice of backend is random. Client-IP based session affinity
can be selected by setting `service.spec.sessionAffinity` to `"ClientIP"` (the
-default is `"None"`).
+default is `"None"`), and you can set the max session sticky time by setting the field
+`service.spec.sessionAffinityConfig.clientIP.timeoutSeconds` if you have already set
+`service.spec.sessionAffinity` to `"ClientIP"` (the default is "10800").
As with the userspace proxy, the net result is that any traffic bound for the
`Service`'s IP:Port is proxied to an appropriate backend without the clients
diff --git a/docs/concepts/storage/persistent-volumes.md b/docs/concepts/storage/persistent-volumes.md
index f0db8975b4..df42021572 100644
--- a/docs/concepts/storage/persistent-volumes.md
+++ b/docs/concepts/storage/persistent-volumes.md
@@ -35,7 +35,7 @@ administrators. Kubernetes itself is unopinionated about what classes
represent. This concept is sometimes called "profiles" in other storage
systems.
-Please see the [detailed walkthrough with working examples](/docs/user-guide/persistent-volumes/walkthrough/).
+Please see the [detailed walkthrough with working examples](/docs/tasks/configure-pod-container/configure-persistent-volume-storage/).
## Lifecycle of a volume and claim
@@ -334,7 +334,7 @@ Claims, like pods, can request specific quantities of a resource. In this case,
### Selector
-Claims can specify a [label selector](/docs/user-guide/labels/#label-selectors) to further filter the set of volumes. Only the volumes whose labels match the selector can be bound to the claim. The selector can consist of two fields:
+Claims can specify a [label selector](/docs/concepts/overview/working-with-objects/labels/#label-selectors) to further filter the set of volumes. Only the volumes whose labels match the selector can be bound to the claim. The selector can consist of two fields:
* matchLabels - the volume must have a label with this value
* matchExpressions - a list of requirements made by specifying key, list of values, and operator that relates the key and values. Valid operators include In, NotIn, Exists, and DoesNotExist.
diff --git a/docs/concepts/storage/volumes.md b/docs/concepts/storage/volumes.md
index 56bf83acd0..bd03bb9196 100644
--- a/docs/concepts/storage/volumes.md
+++ b/docs/concepts/storage/volumes.md
@@ -462,7 +462,7 @@ Secrets are described in more detail [here](/docs/user-guide/secrets).
### persistentVolumeClaim
A `persistentVolumeClaim` volume is used to mount a
-[PersistentVolume](/docs/user-guide/persistent-volumes) into a pod. PersistentVolumes are a
+[PersistentVolume](/docs/concepts/storage/persistent-volumes/) into a pod. PersistentVolumes are a
way for users to "claim" durable storage (such as a GCE PersistentDisk or an
iSCSI volume) without knowing the details of the particular cloud environment.
@@ -474,7 +474,7 @@ details.
A `downwardAPI` volume is used to make downward API data available to applications.
It mounts a directory and writes the requested data in plain text files.
-See the [`downwardAPI` volume example](/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information/) for more details.
+See the [`downwardAPI` volume example](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) for more details.
### projected
@@ -686,8 +686,8 @@ More details and examples can be found [here](https://github.com/kubernetes/exam
### ScaleIO
ScaleIO is a software-based storage platform that can use existing hardware to create clusters of scalable
shared block networked storage. The ScaleIO volume plugin allows deployed pods to access existing ScaleIO
-volumes or it can dynamically provision new volumes, see
-[ScaleIO Persistent Volumes](/docs/user-guide/persistent-volumes/#scaleio).
+volumes (or it can dynamically provision new volumes for persistent volume claims, see
+[ScaleIO Persistent Volumes](/docs/concepts/storage/persistent-volumes/#scaleio)).
**Important:** You must have an existing ScaleIO cluster already setup and running with the volumes created before you can use them.
{: .caution}
diff --git a/docs/concepts/workloads/controllers/daemonset.md b/docs/concepts/workloads/controllers/daemonset.md
index 69920f92e9..30f1b33248 100644
--- a/docs/concepts/workloads/controllers/daemonset.md
+++ b/docs/concepts/workloads/controllers/daemonset.md
@@ -138,8 +138,8 @@ 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,
+- **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/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/jobs-run-to-completion.md b/docs/concepts/workloads/controllers/jobs-run-to-completion.md
index 401368d035..f71008a343 100644
--- a/docs/concepts/workloads/controllers/jobs-run-to-completion.md
+++ b/docs/concepts/workloads/controllers/jobs-run-to-completion.md
@@ -92,9 +92,7 @@ $ kubectl logs $pods
## Writing a Job Spec
-As with all other Kubernetes config, a Job needs `apiVersion`, `kind`, and `metadata` fields. For
-general information about working with config files, see [here](/docs/user-guide/simple-yaml),
-[here](/docs/user-guide/configuring-containers), and [here](/docs/user-guide/working-with-resources).
+As with all other Kubernetes config, a Job needs `apiVersion`, `kind`, and `metadata` fields.
A Job also needs a [`.spec` section](https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status).
diff --git a/docs/concepts/workloads/controllers/petset.md b/docs/concepts/workloads/controllers/petset.md
new file mode 100644
index 0000000000..ea4a16b653
--- /dev/null
+++ b/docs/concepts/workloads/controllers/petset.md
@@ -0,0 +1,441 @@
+---
+approvers:
+- bprashanth
+- enisoc
+- erictune
+- foxish
+- janetkuo
+- kow3ns
+- smarterclayton
+title: PetSets
+---
+
+__Warning:__ Starting in Kubernetes version 1.5, PetSet has been renamed to [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets). To use (or continue to use) PetSet in Kubernetes 1.5, you _must_ [migrate](/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set/) your existing PetSets to StatefulSets. For information on working with StatefulSet, see the tutorial on [how to run replicated stateful applications](/docs/tasks/run-application/run-replicated-stateful-application/).
+
+__This document has been deprecated__, but can still apply if you're using
+ Kubernetes version 1.4 or earlier.
+
+* TOC
+{:toc}
+
+__Terminology__
+
+Throughout this doc you will see a few terms that are sometimes used interchangeably elsewhere, that might cause confusion. This section attempts to clarify them.
+
+* Node: A single virtual or physical machine in a Kubernetes cluster.
+* Cluster: A group of nodes in a single failure domain, unless mentioned otherwise.
+* Persistent Volume Claim (PVC): A request for storage, typically a [persistent volume](/docs/tasks/configure-pod-container/configure-persistent-volume-storage/).
+* Host name: The hostname attached to the UTS namespace of the pod, i.e. the output of `hostname` in the pod.
+* DNS/Domain name: A *cluster local* domain name resolvable using standard methods (e.g.: [gethostbyname](http://linux.die.net/man/3/gethostbyname)).
+* Ordinality: the property of being "ordinal", or occupying a position in a sequence.
+* Pet: a single member of a PetSet; more generally, a stateful application.
+* Peer: a process running a server, capable of communicating with other such processes.
+
+__Prerequisites__
+
+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/concepts/services-networking/service/#headless-services)
+* [Persistent Volumes](/docs/concepts/storage/persistent-volumes/)
+* [Persistent Volume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/README.md)
+
+You need a working Kubernetes cluster at version >= 1.3, with a healthy DNS [cluster addon](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/README.md) at version >= 15. You cannot use PetSet on a hosted Kubernetes provider that has disabled `alpha` resources.
+
+## What is a PetSet?
+
+In Kubernetes, most pod management abstractions group them into disposable units of work that compose a micro service. Replication controllers for example, are designed with a weak guarantee - that there should be N replicas of a particular pod template. The pods are treated as stateless units, if one of them is unhealthy or superseded by a newer version, the system just disposes it.
+
+```
+ foo.default.svc.cluster.local
+ |service|
+ / \
+ | pod-asdf | | pod-zxcv |
+```
+
+A PetSet, in contrast, is a group of stateful pods that require a stronger notion of identity. The document refers to these as "clustered applications".
+
+```
+ *.foo.default.svc.cluster.local
+ | mysql-0 | <-> | mysql-1 |
+ [pv 0] [pv 1]
+```
+
+The co-ordinated deployment of clustered applications is notoriously hard. They require stronger notions of identity and membership, which they use in opaque internal protocols, and are especially prone to race conditions and deadlock. Traditionally administrators have deployed these applications by leveraging nodes as stable, long-lived entities with persistent storage and static ips.
+
+The goal of PetSet is to decouple this dependency by assigning identities to individual instances of an application that are not anchored to the underlying physical infrastructure. For the rest of this document we will refer to these entities as "Pets". Our use of this term is predated by the "Pets vs Cattle" analogy.
+
+__Relationship between Pets and Pods__: PetSet requires there be {0..N-1} Pets. Each Pet has a deterministic name - PetSetName-Ordinal, and a unique identity. Each Pet has at most one pod, and each PetSet has at most one Pet with a given identity.
+
+## When to use PetSet?
+
+A PetSet ensures that a specified number of "pets" with unique identities are running at any given time. The identity of a Pet is comprised of:
+
+* a stable hostname, available in DNS
+* an ordinal index
+* stable storage: linked to the ordinal & hostname
+
+These properties are useful in deploying stateful applications. However most stateful applications are also clustered, meaning they form groups with strict membership requirements that rely on stored state. PetSet also helps with the 2 most common problems encountered managing such clustered applications:
+
+* discovery of peers for quorum
+* startup/teardown ordering
+
+Only use PetSet if your application requires some or all of these properties. Managing pods as stateless replicas is vastly easier.
+
+Example workloads for PetSet:
+
+* Databases like MySQL or PostgreSQL that require a single instance attached to an NFS persistent volume at any time
+* Clustered software like Zookeeper, Etcd, or Elasticsearch that require stable membership.
+
+## Alpha limitations
+
+Before you start deploying applications as PetSets, there are a few limitations you should understand.
+
+* PetSet is an *alpha* resource, not available in any Kubernetes release prior to 1.3.
+* 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 PetSet is `replicas`.
+* The storage for a given pet must either be provisioned by a [persistent volume provisioner](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/README.md) based on the requested `storage class`, or pre-provisioned by an admin. Note that persistent volume provisioning is also currently in alpha.
+* Deleting and/or scaling a PetSet down will *not* delete the volumes associated with the PetSet. This is done to ensure safety first, your data is more valuable than an auto purge of all related PetSet resources. **Deleting the Persistent Volume Claims will result in a deletion of the associated volumes**.
+* All PetSets currently require a "governing service", or a Service responsible for the network identity of the pets. The user is responsible for this Service.
+* Updating an existing PetSet is currently a manual process, meaning you either need to deploy a new PetSet with the new image version, or orphan Pets one by one, update their image, and join them back to the cluster.
+
+## Example PetSet
+
+We'll create a basic PetSet to demonstrate how Pets are assigned unique and "sticky" identities.
+
+{% include code.html language="yaml" file="petset.yaml" ghlink="/docs/concepts/workloads/controllers/petset.yaml" %}
+
+Saving this config into `petset.yaml` and submitting it to a Kubernetes cluster should create the defined PetSet and Pets it manages:
+
+```shell
+$ kubectl create -f petset.yaml
+service "nginx" created
+petset "web" created
+```
+
+## Pet Identity
+
+The identity of a Pet sticks to it, regardless of which node it's (re) scheduled on. We can examine the identity of the pets we just created.
+
+### Ordinal index
+
+you should see 2 pods with predictable names formatted thus: `$(petset name)-$(ordinal index assigned by petset controller)`
+
+```shell
+$ kubectl get po
+NAME READY STATUS RESTARTS AGE
+web-0 1/1 Running 0 10m
+web-1 1/1 Running 0 10m
+```
+
+### Stable storage
+
+2 persistent volumes, one per pod. This is auto created by the PetSet based on the `volumeClaimTemplate` field
+
+```shell
+$ kubectl get pv
+NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
+pvc-90234946-3717-11e6-a46e-42010af00002 1Gi RWO Bound default/www-web-0 11m
+pvc-902733c2-3717-11e6-a46e-42010af00002 1Gi RWO Bound default/www-web-1 11m
+```
+
+### Network identity
+
+The network identity has 2 parts. First, we created a headless Service that controls the domain within which we create Pets. The domain managed by this Service takes the form: `$(service name).$(namespace).svc.cluster.local`, where "cluster.local" is the [cluster domain](/docs/concepts/services-networking/dns-pod-service/). As each pet is created, it gets a matching DNS subdomain, taking the form: `$(petname).$(governing service domain)`, where the governing service is defined by the `serviceName` field on the PetSet.
+
+Here are some examples of choices for Cluster Domain, Service name, PetSet name, and how that affects the DNS names for the Pets and the hostnames in the Pet's pods:
+
+Cluster Domain | Service (ns/name) | PetSet (ns/name) | PetSet Domain | Pet DNS | Pet Hostname |
+-------------- | ----------------- | ----------------- | -------------- | ------- | ------------ |
+ cluster.local | default/nginx | default/web | nginx.default.svc.cluster.local | web-{0..N-1}.nginx.default.svc.cluster.local | web-{0..N-1} |
+ cluster.local | foo/nginx | foo/web | nginx.foo.svc.cluster.local | web-{0..N-1}.nginx.foo.svc.cluster.local | web-{0..N-1} |
+ kube.local | foo/nginx | foo/web | nginx.foo.svc.kube.local | web-{0..N-1}.nginx.foo.svc.kube.local | web-{0..N-1} |
+
+Note that Cluster Domain will be set to `cluster.local` unless [otherwise configured](https://github.com/kubernetes/kubernetes/blob/master/examples/cluster-dns/README.md).
+
+Let's verify our assertion with a simple test.
+
+```shell
+$ kubectl get svc
+NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+nginx None 80/TCP 12m
+...
+```
+
+First, the PetSet provides a stable hostname:
+
+```shell
+$ for i in 0 1; do kubectl exec web-$i -- sh -c 'hostname'; done
+web-0
+web-1
+```
+
+And the hostname is linked to the in-cluster DNS address:
+
+```shell
+$ kubectl run -i --tty --image busybox dns-test --restart=Never /bin/sh
+dns-test # nslookup web-0.nginx
+Server: 10.0.0.10
+Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
+
+Name: web-0.nginx
+Address 1: 10.180.3.5
+
+dns-test # nslookup web-1.nginx
+Server: 10.0.0.10
+Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
+
+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 PetSet. So let's write our hostname there:
+
+```shell
+$ for i in 0 1; do
+ kubectl exec web-$i -- sh -c 'echo $(hostname) > /usr/share/nginx/html/index.html';
+done
+```
+
+And verify each webserver serves its own hostname:
+
+```shell
+$ for i in 0 1; do kubectl exec -it web-$i -- curl localhost; done
+web-0
+web-1
+```
+
+Now delete all pods in the petset:
+
+```shell
+$ kubectl delete po -l app=nginx
+pod "web-0" deleted
+pod "web-1" deleted
+```
+
+Wait for them to come back up, and try to retrieve the previously written hostname through the DNS name of the peer. They match, because the storage, DNS name, and hostname stick to the Pet no matter where it gets scheduled:
+
+```shell
+$ kubectl exec -it web-1 -- curl web-0.nginx
+web-0
+$ kubectl exec -it web-0 -- curl web-1.nginx
+web-1
+```
+
+## Peer discovery
+
+A pet can piece together its own identity:
+
+1. Use the [downward api](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) to find its pod name
+2. Run `hostname` to find its DNS name
+3. Run `mount` or `df` to find its volumes (usually this is unnecessary)
+
+It's not necessary to "discover" the governing Service of a PetSet, since it's known at creation time you can simply pass it down through an [environment variable](/docs/user-guide/environment-guide).
+
+Usually pets also need to find their peers. In the previous nginx example, we just used `kubectl` to get the names of existing pods, and as humans, we could tell which ones belonged to a given PetSet. Another way to find peers is by contacting the API server, just like `kubectl`, but that has several disadvantages (you end up implementing a Kubernetes specific init system that runs as pid 1 in your application container).
+
+PetSet gives you a way to discover your peers using DNS records. To illustrate this we can use the previous example (note: one usually doesn't `apt-get` in a container).
+
+```shell
+$ kubectl exec -it web-0 /bin/sh
+web-0 # apt-get update && apt-get install -y dnsutils
+...
+
+web-0 # nslookup -type=srv nginx.default
+Server: 10.0.0.10
+Address: 10.0.0.10#53
+
+nginx.default.svc.cluster.local service = 10 50 0 web-1.ub.default.svc.cluster.local.
+nginx.default.svc.cluster.local service = 10 50 0 web-0.ub.default.svc.cluster.local.
+```
+
+## Updating a PetSet
+
+You cannot update any field of the PetSet except `spec.replicas` and the `containers` in the podTemplate. Updating `spec.replicas` will scale the PetSet, updating `containers` will not have any effect till a Pet is deleted, at which time it is recreated with the modified podTemplate.
+
+## Scaling a PetSet
+
+You can scale a PetSet by updating the "replicas" field. Note however that the controller will only:
+
+1. Create one pet at a time, in order from {0..N-1}, and wait till each one is in [Running and Ready](/docs/user-guide/pod-states) before creating the next
+2. Delete one pet at a time, in reverse order from {N-1..0}, and wait till each one is completely shutdown (past its [terminationGracePeriodSeconds](/docs/concepts/workloads/pods/pod/#termination-of-pods) before deleting the next
+
+```shell
+$ kubectl get po
+NAME READY STATUS RESTARTS AGE
+web-0 1/1 Running 0 30s
+web-1 1/1 Running 0 36s
+
+$ kubectl patch petset web -p '{"spec":{"replicas":3}}'
+petset "web" patched
+
+$ kubectl get po
+NAME READY STATUS RESTARTS AGE
+web-0 1/1 Running 0 40s
+web-1 1/1 Running 0 46s
+web-2 1/1 Running 0 8s
+```
+
+You can also use the `kubectl scale` command:
+
+```shell
+$ kubectl get petset
+NAME DESIRED CURRENT AGE
+web 3 3 24m
+
+$ kubectl scale petset web --replicas=5
+petset "web" scaled
+
+$ kubectl get po --watch-only
+NAME READY STATUS RESTARTS AGE
+web-0 1/1 Running 0 10m
+web-1 1/1 Running 0 27m
+web-2 1/1 Running 0 10m
+web-3 1/1 Running 0 3m
+web-4 0/1 ContainerCreating 0 48s
+
+$ kubectl get petset web
+NAME DESIRED CURRENT AGE
+web 5 5 30m
+```
+
+Note however, that scaling up to N and back down to M *will not* delete the volumes of the M-N pets, as described in the section on [deletion](#deleting-a-petset), i.e. scaling back up to M creates new pets that use the same volumes. To see this in action, scale the PetSet back down to 3:
+
+```shell
+$ kubectl get po --watch-only
+web-4 1/1 Terminating 0 4m
+web-4 1/1 Terminating 0 4m
+web-3 1/1 Terminating 0 6m
+web-3 1/1 Terminating 0 6m
+```
+
+Note that we still have 5 pvcs:
+
+```shell
+$ kubectl get pvc
+NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
+www-web-0 Bound pvc-42ca5cef-8113-11e6-82f6-42010af00002 1Gi RWO 32m
+www-web-1 Bound pvc-42de30af-8113-11e6-82f6-42010af00002 1Gi RWO 32m
+www-web-2 Bound pvc-ba416413-8115-11e6-82f6-42010af00002 1Gi RWO 14m
+www-web-3 Bound pvc-ba45f19c-8115-11e6-82f6-42010af00002 1Gi RWO 14m
+www-web-4 Bound pvc-ba47674a-8115-11e6-82f6-42010af00002 1Gi RWO 14m
+```
+
+This allows you to upgrade the image of a petset and have it come back up with the same data, as described in the next section.
+
+## Image upgrades
+
+PetSet currently *does not* support automated image upgrade as noted in the section on [limitations](#alpha-limitations), however you can update the `image` field of any container in the podTemplate and delete Pets one by one, the PetSet controller will recreate it with the new image.
+
+Edit the image on the PetSet to `gcr.io/google_containers/nginx-slim:0.7` and delete 1 Pet:
+
+```shell{% raw %}
+$ for p in 0 1 2; do kubectl get po web-$p --template '{{range $i, $c := .spec.containers}}{{$c.image}}{{end}}'; echo; done
+gcr.io/google_containers/nginx-slim:0.8
+gcr.io/google_containers/nginx-slim:0.8
+gcr.io/google_containers/nginx-slim:0.8
+
+$ kubectl delete po web-0
+pod "web-0" deleted
+
+$ for p in 0 1 2; do kubectl get po web-$p --template '{{range $i, $c := .spec.containers}}{{$c.image}}{{end}}'; echo; done
+gcr.io/google_containers/nginx-slim:0.7
+gcr.io/google_containers/nginx-slim:0.8
+gcr.io/google_containers/nginx-slim:0.8
+{% endraw %}```
+
+Delete the remaining 2:
+
+```shell
+$ kubectl delete po web-1 web-2
+pod "web-1" deleted
+pod "web-2" deleted
+```
+
+Wait till the PetSet is stable and check the images:
+
+```shell{% raw %}
+$ for p in 0 1 2; do kubectl get po web-$p --template '{{range $i, $c := .spec.containers}}{{$c.image}}{{end}}'; echo; done
+gcr.io/google_containers/nginx-slim:0.7
+gcr.io/google_containers/nginx-slim:0.7
+gcr.io/google_containers/nginx-slim:0.7
+{% endraw %}```
+
+## Deleting a PetSet
+
+Deleting a PetSet through kubectl will scale it down to 0, thereby deleting all the Pets. If you wish to delete just the PetSet and not the Pets, use `--cascade=false`:
+
+```shell
+$ kubectl delete -f petset.yaml --cascade=false
+petset "web" deleted
+
+$ kubectl get po -l app=nginx
+NAME READY STATUS RESTARTS AGE
+web-0 1/1 Running 0 21h
+web-1 1/1 Running 0 21h
+
+$ kubectl delete po -l app=nginx
+pod "web-0" deleted
+pod "web-1" deleted
+```
+
+Deleting the pods will *not* delete the volumes. Until we finalize the recycle policy for these volumes they will have to get cleaned up by an admin. This is to ensure that you have the chance to copy data off the volume before deleting it. Simply deleting the PVC after the pods have left the [terminating state](/docs/concepts/workloads/pods/pod/#termination-of-pods) should trigger deletion of the backing Persistent Volumes.
+
+**Note: you will lose all your data once the PVC is deleted, do this with caution.**
+
+```shell
+$ kubectl get po -l app=nginx
+$ kubectl get pvc -l app=nginx
+NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
+www-web-0 Bound pvc-62d271cd-3822-11e6-b1b7-42010af00002 0 21h
+www-web-1 Bound pvc-62d6750e-3822-11e6-b1b7-42010af00002 0 21h
+
+$ kubectl delete pvc -l app=nginx
+$ kubectl get pv
+```
+
+If you simply want to clean everything:
+
+```shell{% raw %}
+$ grace=$(kubectl get po web-0 --template '{{.spec.terminationGracePeriodSeconds}}')
+$ kubectl delete petset,po -l app=nginx
+$ sleep $grace
+$ kubectl delete pvc -l app=nginx
+{% endraw %}
+```
+
+## Troubleshooting
+
+You might have noticed an `annotations` field in all the PetSets shown above.
+
+```yaml
+annotations:
+ pod.alpha.kubernetes.io/initialized: "true"
+```
+
+This field is a debugging hook. It pauses any scale up/down operations on the entire PetSet. If you'd like to pause a petset after each pet, set it to `false` in the template, wait for each pet to come up, verify it has initialized correctly, and then set it to `true` using `kubectl edit` on the pet (setting it to `false` on *any pet* is enough to pause the PetSet). If you don't need it, create the PetSet with it set to `true` as shown. This is surprisingly useful in debugging bootstrapping race conditions.
+
+## Future Work
+
+There are a LOT of planned improvements since PetSet is still in alpha.
+
+* Data gravity and local storage
+* Richer notification events
+* Public network identities
+* WAN cluster deployments (multi-AZ/region/cloud provider)
+* Image and node upgrades
+
+This list goes on, if you have examples, ideas or thoughts, please contribute.
+
+## Alternatives
+
+Deploying one RC of size 1/Service per pod is a popular alternative, as is simply deploying a DaemonSet that utilizes the identity of a Node.
+
+## Next steps
+
+* Learn about [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/),
+ the replacement for PetSet introduced in Kubernetes version 1.5.
+* [Migrate your existing PetSets to StatefulSets](/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set/)
+ when upgrading to Kubernetes version 1.5 or higher.
+
diff --git a/docs/concepts/workloads/controllers/replicaset.md b/docs/concepts/workloads/controllers/replicaset.md
index 224b922473..7f91398263 100644
--- a/docs/concepts/workloads/controllers/replicaset.md
+++ b/docs/concepts/workloads/controllers/replicaset.md
@@ -12,7 +12,7 @@ ReplicaSet is the next-generation Replication Controller. The only difference
between a _ReplicaSet_ and a
[_Replication Controller_](/docs/concepts/workloads/controllers/replicationcontroller/) right now is
the selector support. ReplicaSet supports the new set-based selector requirements
-as described in the [labels user guide](/docs/user-guide/labels/#label-selectors)
+as described in the [labels user guide](/docs/concepts/overview/working-with-objects/labels/#label-selectors)
whereas a Replication Controller only supports equality-based selector requirements.
{% endcapture %}
diff --git a/docs/concepts/workloads/controllers/replicationcontroller.md b/docs/concepts/workloads/controllers/replicationcontroller.md
index 42f929317f..12a37bc445 100644
--- a/docs/concepts/workloads/controllers/replicationcontroller.md
+++ b/docs/concepts/workloads/controllers/replicationcontroller.md
@@ -129,7 +129,7 @@ different, and the `.metadata.labels` do not affect the behavior of the Replicat
### Pod Selector
-The `.spec.selector` field is a [label selector](/docs/user-guide/labels/#label-selectors). A ReplicationController
+The `.spec.selector` field is a [label selector](/docs/concepts/overview/working-with-objects/labels/#label-selectors). A ReplicationController
manages all the pods with labels that match the selector. It does not distinguish
between pods that it created or deleted and pods that another person or process created or
deleted. This allows the ReplicationController to be replaced without affecting the running pods.
@@ -243,7 +243,7 @@ object](/docs/api-reference/{{page.version}}/#replicationcontroller-v1-core).
### ReplicaSet
-[`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is the next-generation ReplicationController that supports the new [set-based label selector](/docs/user-guide/labels/#set-based-requirement).
+[`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is the next-generation ReplicationController that supports the new [set-based label selector](/docs/concepts/overview/working-with-objects/labels/#set-based-requirement).
It’s mainly used by [`Deployment`](/docs/concepts/workloads/controllers/deployment/) as a mechanism to orchestrate pod creation, deletion and updates.
Note that we recommend using Deployments instead of directly using Replica Sets, unless you require custom update orchestration or don’t require updates at all.
diff --git a/docs/concepts/workloads/controllers/statefulset.md b/docs/concepts/workloads/controllers/statefulset.md
index 841d11119a..7e2e0fcd87 100644
--- a/docs/concepts/workloads/controllers/statefulset.md
+++ b/docs/concepts/workloads/controllers/statefulset.md
@@ -163,7 +163,7 @@ The StatefulSet should not specify a `pod.Spec.TerminationGracePeriodSeconds` of
When the nginx example above is created, three Pods will be deployed in the order
web-0, web-1, web-2. web-1 will not be deployed before web-0 is
-[Running and Ready](/docs/user-guide/pod-states), and web-2 will not be deployed until
+[Running and Ready](/docs/user-guide/pod-states/), and web-2 will not be deployed until
web-1 is Running and Ready. If web-0 should fail, after web-1 is Running and Ready, but before
web-2 is launched, web-2 will not be launched until web-0 is successfully relaunched and
becomes Running and Ready.
@@ -228,7 +228,7 @@ update, roll out a canary, or perform a phased roll out.
{% endcapture %}
{% capture whatsnext %}
-* Follow an example of [deploying a stateful application](/docs/tutorials/stateful-application/basic-stateful-set).
+* Follow an example of [deploying a stateful application](/docs/tutorials/stateful-application/basic-stateful-set/).
* Follow an example of [deploying Cassandra with Stateful Sets](/docs/tutorials/stateful-application/cassandra/).
{% endcapture %}
diff --git a/docs/getting-started-guides/coreos/bare_metal_offline.md b/docs/getting-started-guides/coreos/bare_metal_offline.md
index c7684f73b2..35824a4f03 100644
--- a/docs/getting-started-guides/coreos/bare_metal_offline.md
+++ b/docs/getting-started-guides/coreos/bare_metal_offline.md
@@ -631,7 +631,7 @@ Reboot these servers to get the images PXEd and ready for running containers!
Now that the CoreOS with Kubernetes installed is up and running lets spin up some Kubernetes pods to demonstrate the system.
-See [a simple nginx example](/docs/user-guide/simple-nginx) to try out your new cluster.
+See [a simple nginx example](/docs/user-guide/simple-nginx/) to try out your new cluster.
For more complete applications, please look in the [examples directory](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/).
@@ -683,6 +683,6 @@ for i in `kubectl get pods | awk '{print $1}'`; do kubectl delete pod $i; done
IaaS Provider | Config. Mgmt | OS | Networking | Docs | Conforms | Support Level
-------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ----------------------------
-Bare-metal (Offline) | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/bare_metal_offline) | | Community ([@jeffbean](https://github.com/jeffbean))
+Bare-metal (Offline) | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/bare_metal_offline/) | | Community ([@jeffbean](https://github.com/jeffbean))
-For support level information on all solutions, see the [Table of solutions](/docs/getting-started-guides/#table-of-solutions) chart.
+For support level information on all solutions, see the [Table of solutions](/docs/getting-started-guides/#table-of-solutions/) chart.
diff --git a/docs/getting-started-guides/dcos.md b/docs/getting-started-guides/dcos.md
index 07aa56c002..23ad7912dd 100644
--- a/docs/getting-started-guides/dcos.md
+++ b/docs/getting-started-guides/dcos.md
@@ -1,143 +1,16 @@
---
approvers:
-- karlkfi
-title: DCOS
+- smugcloud
+title: Kubernetes on DCOS
---
-{% assign for_k8s_version="1.6" %}{% include feature-state-deprecated.md %}
+Mesosphere provides an easy option to provision Kubernetes onto [DC/OS](https://mesosphere.com/product/), offering:
-This guide will walk you through installing [Kubernetes-Mesos](https://github.com/mesosphere/kubernetes-mesos) on [Datacenter Operating System (DCOS)](https://mesosphere.com/product/) with the [DCOS CLI](https://github.com/mesosphere/dcos-cli) and operating Kubernetes with the [DCOS Kubectl plugin](https://github.com/mesosphere/dcos-kubectl).
+* Pure upstream Kubernetes
+* Single-click cluster provisioning
+* Highly available and secure by default
+* Kubernetes running alongside fast-data platforms (e.g. Akka, Cassandra, Kafka, Spark)
-* TOC
-{:toc}
+## Official Mesosphere Guide
-
-## About Kubernetes on DCOS
-
-DCOS is system software that manages computer cluster hardware and software resources and provides common services for distributed applications. Among other services, it provides [Apache Mesos](http://mesos.apache.org/) as its cluster kernel and [Marathon](https://mesosphere.github.io/marathon/) as its init system. With DCOS CLI, Mesos frameworks like [Kubernetes-Mesos](https://github.com/mesosphere/kubernetes-mesos) can be installed with a single command.
-
-Another feature of the DCOS CLI is that it allows plugins like the [DCOS Kubectl plugin](https://github.com/mesosphere/dcos-kubectl). This allows for easy access to a version-compatible Kubectl without having to manually download or install.
-
-Further information about the benefits of installing Kubernetes on DCOS can be found in the [Kubernetes-Mesos documentation](https://releases.k8s.io/{{page.githubbranch}}/contrib/mesos/README.md).
-
-For more details about the Kubernetes DCOS packaging, see the [Kubernetes-Mesos project](https://github.com/mesosphere/kubernetes-mesos).
-
-Since Kubernetes-Mesos is still alpha, it is a good idea to familiarize yourself with the [current known issues](https://releases.k8s.io/{{page.githubbranch}}/contrib/mesos/docs/issues.md) which may limit or modify the behavior of Kubernetes on DCOS.
-
-If you have problems completing the steps below, please [file an issue against the kubernetes-mesos project](https://github.com/mesosphere/kubernetes-mesos/issues).
-
-
-## Resources
-
-Explore the following resources for more information about Kubernetes, Kubernetes on Mesos/DCOS, and DCOS itself.
-
-- [DCOS Documentation](https://docs.mesosphere.com/)
-- [Managing DCOS Services](https://docs.mesosphere.com/services/kubernetes/)
-- [Kubernetes Examples](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/)
-- [Kubernetes on Mesos Documentation](https://github.com/kubernetes-incubator/kube-mesos-framework/blob/master/README.md)
-- [Kubernetes on Mesos Release Notes](https://github.com/mesosphere/kubernetes-mesos/releases)
-- [Kubernetes on DCOS Package Source](https://github.com/mesosphere/kubernetes-mesos)
-
-
-## Prerequisites
-
-- A running [DCOS cluster](https://mesosphere.com/product/)
- - [DCOS Community Edition](https://docs.mesosphere.com/1.7/archived-dcos-enterprise-edition/installing-enterprise-edition-1-6/cloud/) is currently available on [AWS](https://mesosphere.com/amazon/).
- - [DCOS Enterprise Edition](https://mesosphere.com/product/) can be deployed on virtual or bare metal machines. Contact sales@mesosphere.com for more info and to set up an engagement.
-- [DCOS CLI](https://docs.mesosphere.com/install/cli/) installed locally
-
-
-## Install
-
-1. Configure and validate the [Mesosphere Multiverse](https://github.com/mesosphere/multiverse) as a package source repository
-
- ```shell
-$ dcos config prepend package.sources https://github.com/mesosphere/multiverse/archive/version-1.x.zip
- $ dcos package update --validate
- ```
-2. Install etcd
-
- By default, the Kubernetes DCOS package starts a single-node etcd. In order to avoid state loss in the event of Kubernetes component container failure, install an HA [etcd-mesos](https://github.com/mesosphere/etcd-mesos) cluster on DCOS.
-
- ```shell
-$ dcos package install etcd
- ```
-3. Verify that etcd is installed and healthy
-
- The etcd cluster takes a short while to deploy. Verify that `/etcd` is healthy before going on to the next step.
-
- ```shell
-$ dcos marathon app list
- ID MEM CPUS TASKS HEALTH DEPLOYMENT CONTAINER CMD
- /etcd 128 0.2 1/1 1/1 --- DOCKER None
- ```
-4. Create Kubernetes installation configuration
-
- Configure Kubernetes to use the HA etcd installed on DCOS.
-
- ```shell
-$ cat >/tmp/options.json <PodSpec
resources ResourceRequirements |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
securityContext SecurityContext |
@@ -2268,11 +2268,11 @@ Appears In PersistentVolumeClaimList
spec PersistentVolumeClaimSpec |
-Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
status PersistentVolumeClaimStatus |
-Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
@@ -2290,11 +2290,11 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
resources ResourceRequirements |
-Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
selector LabelSelector |
@@ -2320,7 +2320,7 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
capacity object |
@@ -2347,7 +2347,7 @@ Appears In PersistentVolumeClaim
items PersistentVolumeClaim array |
-A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+A list of persistent volume claims. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
kind string |
@@ -2543,7 +2543,7 @@ Appears In PodSpec
persistentVolumeClaim PersistentVolumeClaimVolumeSource |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -3913,7 +3913,7 @@ Appears In Node
capacity object |
-Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details. |
+Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity for more details. |
conditions NodeCondition array |
@@ -3995,7 +3995,7 @@ Appears In Node
-PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes
+PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/
@@ -4021,11 +4021,11 @@ Appears In PersistentVolumeList
spec PersistentVolumeSpec |
-Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
status PersistentVolumeStatus |
-Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
@@ -4043,7 +4043,7 @@ Appears In PersistentVolume
accessModes string array |
-AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes |
+AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes |
awsElasticBlockStore AWSElasticBlockStoreVolumeSource |
@@ -4059,7 +4059,7 @@ Appears In PersistentVolume
capacity object |
-A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity |
+A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity |
cephfs CephFSVolumeSource |
@@ -4071,7 +4071,7 @@ Appears In PersistentVolume
claimRef ObjectReference |
-ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding |
+ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding |
fc FCVolumeSource |
@@ -4107,7 +4107,7 @@ Appears In PersistentVolume
persistentVolumeReclaimPolicy string |
-What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy |
+What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#recycling-policy |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -4145,7 +4145,7 @@ Appears In PersistentVolume
phase string |
-Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase |
+Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#phase |
reason string |
@@ -4168,7 +4168,7 @@ Appears In PersistentVolume
items PersistentVolume array |
-List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes |
+List of persistent volumes. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/ |
kind string |
@@ -8515,7 +8515,7 @@ Appears In Volume
claimName string |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
readOnly boolean |
diff --git a/docs/resources-reference/v1.6/index.html b/docs/resources-reference/v1.6/index.html
index 4c69ee05eb..563418f892 100644
--- a/docs/resources-reference/v1.6/index.html
+++ b/docs/resources-reference/v1.6/index.html
@@ -116,7 +116,7 @@ Appears In PodSpec
resources ResourceRequirements |
-Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Compute Resources required by this container. Cannot be updated. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
securityContext SecurityContext |
@@ -2357,11 +2357,11 @@ Appears In PersistentVolumeClaimLis
spec PersistentVolumeClaimSpec |
-Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Spec defines the desired characteristics of a volume requested by a pod author. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
status PersistentVolumeClaimStatus |
-Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+Status represents the current information/status of a persistent volume claim. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
@@ -2379,11 +2379,11 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the desired access modes the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
resources ResourceRequirements |
-Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#resources |
+Resources represents the minimum resources the volume should have. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#resources |
selector LabelSelector |
@@ -2391,7 +2391,7 @@ Appears In PersistentVolumeClaim
storageClassName string |
-Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#class-1 |
+Name of the StorageClass required by the claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 |
volumeName string |
@@ -2413,7 +2413,7 @@ Appears In PersistentVolumeClaim
accessModes string array |
-AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes-1 |
+AccessModes contains the actual access modes the volume backing the PVC has. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1 |
capacity object |
@@ -2440,7 +2440,7 @@ Appears In PersistentVolumeClaim
items PersistentVolumeClaim array |
-A list of persistent volume claims. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+A list of persistent volume claims. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
kind string |
@@ -2639,7 +2639,7 @@ Appears In PodPresetSpec
persistentVolumeClaim PersistentVolumeClaimVolumeSource |
-PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -4299,7 +4299,7 @@ Appears In Node
capacity object |
-Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity for more details. |
+Capacity represents the total resources of a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity for more details. |
conditions NodeCondition array |
@@ -4381,7 +4381,7 @@ Appears In Node
-PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/user-guide/persistent-volumes
+PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/
@@ -4407,11 +4407,11 @@ Appears In PersistentVolumeList
spec PersistentVolumeSpec |
-Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
status PersistentVolumeStatus |
-Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistent-volumes |
+Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes |
@@ -4429,7 +4429,7 @@ Appears In PersistentVolume
accessModes string array |
-AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#access-modes |
+AccessModes contains all ways the volume can be mounted. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes |
awsElasticBlockStore AWSElasticBlockStoreVolumeSource |
@@ -4445,7 +4445,7 @@ Appears In PersistentVolume
capacity object |
-A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#capacity |
+A description of the persistent volume's resources and capacity. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#capacity |
cephfs CephFSVolumeSource |
@@ -4457,7 +4457,7 @@ Appears In PersistentVolume
claimRef ObjectReference |
-ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#binding |
+ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#binding |
fc FCVolumeSource |
@@ -4493,7 +4493,7 @@ Appears In PersistentVolume
persistentVolumeReclaimPolicy string |
-What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#recycling-policy |
+What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#recycling-policy |
photonPersistentDisk PhotonPersistentDiskVolumeSource |
@@ -4543,7 +4543,7 @@ Appears In PersistentVolume
phase string |
-Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#phase |
+Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#phase |
reason string |
@@ -4566,7 +4566,7 @@ Appears In PersistentVolume
items PersistentVolume array |
-List of persistent volumes. More info: http://kubernetes.io/docs/user-guide/persistent-volumes |
+List of persistent volumes. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/ |
kind string |
@@ -9523,7 +9523,7 @@ Appears In Volume
claimName string |
-ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/user-guide/persistent-volumes#persistentvolumeclaims |
+ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims |
readOnly boolean |
diff --git a/docs/setup/independent/create-cluster-kubeadm.md b/docs/setup/independent/create-cluster-kubeadm.md
index b579fd8e22..e26bf00951 100644
--- a/docs/setup/independent/create-cluster-kubeadm.md
+++ b/docs/setup/independent/create-cluster-kubeadm.md
@@ -258,7 +258,6 @@ kubectl apply -f https://raw.githubusercontent.com/projectcalico/canal/master/k8
```shell
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
```
{% endcapture %}
diff --git a/docs/setup/independent/install-kubeadm.md b/docs/setup/independent/install-kubeadm.md
index 69a1d682a5..445c4a3108 100644
--- a/docs/setup/independent/install-kubeadm.md
+++ b/docs/setup/independent/install-kubeadm.md
@@ -39,7 +39,7 @@ This page shows how to use install kubeadm.
|-------------|---------------------------------|
| 10250 | Kubelet API |
| 10255 | Read-only Kubelet API (Heapster)|
-| 30000-32767 | Default port range for [NodePort Services](/docs/concepts/services-networking/service). Typically, these ports would need to be exposed to external load-balancers, or other external consumers of the application itself. |
+| 30000-32767 | Default port range for [NodePort Services](/docs/concepts/services-networking/service/). Typically, these ports would need to be exposed to external load-balancers, or other external consumers of the application itself. |
Any port numbers marked with * are overridable, so you will need to ensure any
custom ports you provide are also open.
@@ -127,7 +127,8 @@ example. You have to do this until SELinux support is improved in the kubelet.
{% capture whatsnext %}
-* [Using kubeadm to Create a Cluster](/docs/getting-started-guides/kubeadm/)
+* [Using kubeadm to Create a
+ Cluster](/docs/setup/independent/create-cluster-kubeadm/)
{% endcapture %}
diff --git a/docs/setup/pick-right-solution.md b/docs/setup/pick-right-solution.md
index 5c65f1a38c..8a624c1523 100644
--- a/docs/setup/pick-right-solution.md
+++ b/docs/setup/pick-right-solution.md
@@ -29,7 +29,7 @@ a Kubernetes cluster from scratch.
* [Minikube](/docs/getting-started-guides/minikube/) is the recommended method for creating a local, single-node Kubernetes cluster for development and testing. Setup is completely automated and doesn't require a cloud provider account.
-* [Ubuntu on LXD](/docs/getting-started-guides/ubuntu/local) supports a nine-instance deployment on localhost.
+* [Ubuntu on LXD](/docs/getting-started-guides/ubuntu/local/) supports a nine-instance deployment on localhost.
* [IBM Cloud private-ce (Community Edition)](https://www.ibm.com/support/knowledgecenter/en/SSBS6K/product_welcome_cloud_private.html) can use VirtualBox on your machine to deploy Kubernetes to one or more VMs for dev and test scenarios. Scales to full multi-node cluster. Free version of the enterprise solution.
@@ -62,11 +62,11 @@ a Kubernetes cluster from scratch.
These solutions allow you to create Kubernetes clusters on a range of Cloud IaaS providers with only a
few commands. These solutions are actively developed and have active community support.
-* [Google Compute Engine (GCE)](/docs/getting-started-guides/gce)
-* [AWS](/docs/getting-started-guides/aws)
-* [Azure](/docs/getting-started-guides/azure)
+* [Google Compute Engine (GCE)](/docs/getting-started-guides/gce/)
+* [AWS](/docs/getting-started-guides/aws/)
+* [Azure](/docs/getting-started-guides/azure/)
* [Tectonic by CoreOS](https://coreos.com/tectonic)
-* [CenturyLink Cloud](/docs/getting-started-guides/clc)
+* [CenturyLink Cloud](/docs/getting-started-guides/clc/)
* [IBM Bluemix](https://github.com/patrocinio/kubernetes-softlayer)
* [Stackpoint.io](/docs/getting-started-guides/stackpoint/)
* [KUBE2GO.io](https://kube2go.io/)
@@ -80,7 +80,7 @@ base operating systems.
If you can find a guide below that matches your needs, use it. It may be a little out of date, but
it will be easier than starting from scratch. If you do want to start from scratch, either because you
have special requirements, or just because you want to understand what is underneath a Kubernetes
-cluster, try the [Getting Started from Scratch](/docs/getting-started-guides/scratch) guide.
+cluster, try the [Getting Started from Scratch](/docs/getting-started-guides/scratch/) guide.
If you are interested in supporting Kubernetes on a new platform, see
[Writing a Getting Started Guide](https://git.k8s.io/community/contributors/devel/writing-a-getting-started-guide.md).
@@ -95,40 +95,40 @@ with a single command per machine.
These solutions are combinations of cloud providers and operating systems not covered by the above solutions.
-* [CoreOS on AWS or GCE](/docs/getting-started-guides/coreos)
+* [CoreOS on AWS or GCE](/docs/getting-started-guides/coreos/)
* [Kubernetes on Ubuntu](/docs/getting-started-guides/ubuntu/)
* [Kubespray](/docs/getting-started-guides/kubespray/)
## On-Premises VMs
-* [Vagrant](/docs/getting-started-guides/coreos) (uses CoreOS and flannel)
-* [CloudStack](/docs/getting-started-guides/cloudstack) (uses Ansible, CoreOS and flannel)
-* [Vmware vSphere](/docs/getting-started-guides/vsphere) (uses Debian)
-* [Vmware Photon Controller](/docs/getting-started-guides/photon-controller) (uses Debian)
+* [Vagrant](/docs/getting-started-guides/coreos/) (uses CoreOS and flannel)
+* [CloudStack](/docs/getting-started-guides/cloudstack/) (uses Ansible, CoreOS and flannel)
+* [Vmware vSphere](/docs/getting-started-guides/vsphere/) (uses Debian)
+* [Vmware Photon Controller](/docs/getting-started-guides/photon-controller/) (uses Debian)
* [Vmware vSphere, OpenStack, or Bare Metal](/docs/getting-started-guides/ubuntu/) (uses Juju, Ubuntu and flannel)
-* [Vmware](/docs/getting-started-guides/coreos) (uses CoreOS and flannel)
-* [CoreOS on libvirt](/docs/getting-started-guides/libvirt-coreos) (uses CoreOS)
-* [oVirt](/docs/getting-started-guides/ovirt)
-* [OpenStack Heat](/docs/getting-started-guides/openstack-heat) (uses CentOS and flannel)
-* [Fedora (Multi Node)](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) (uses Fedora and flannel)
+* [Vmware](/docs/getting-started-guides/coreos/) (uses CoreOS and flannel)
+* [CoreOS on libvirt](/docs/getting-started-guides/libvirt-coreos/) (uses CoreOS)
+* [oVirt](/docs/getting-started-guides/ovirt/)
+* [OpenStack Heat](/docs/getting-started-guides/openstack-heat/) (uses CentOS and flannel)
+* [Fedora (Multi Node)](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) (uses Fedora and flannel)
## Bare Metal
-* [Offline](/docs/getting-started-guides/coreos/bare_metal_offline) (no internet required. Uses CoreOS and Flannel)
-* [Fedora via Ansible](/docs/getting-started-guides/fedora/fedora_ansible_config)
-* [Fedora (Single Node)](/docs/getting-started-guides/fedora/fedora_manual_config)
-* [Fedora (Multi Node)](/docs/getting-started-guides/fedora/flannel_multi_node_cluster)
-* [CentOS](/docs/getting-started-guides/centos/centos_manual_config)
+* [Offline](/docs/getting-started-guides/coreos/bare_metal_offline/) (no internet required. Uses CoreOS and Flannel)
+* [Fedora via Ansible](/docs/getting-started-guides/fedora/fedora_ansible_config/)
+* [Fedora (Single Node)](/docs/getting-started-guides/fedora/fedora_manual_config/)
+* [Fedora (Multi Node)](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/)
+* [CentOS](/docs/getting-started-guides/centos/centos_manual_config/)
* [Kubernetes on Ubuntu](/docs/getting-started-guides/ubuntu/)
-* [CoreOS on AWS or GCE](/docs/getting-started-guides/coreos)
+* [CoreOS on AWS or GCE](/docs/getting-started-guides/coreos/)
## Integrations
These solutions provide integration with third-party schedulers, resource managers, and/or lower level platforms.
-* [Kubernetes on Mesos](/docs/getting-started-guides/mesos)
+* [Kubernetes on Mesos](/docs/getting-started-guides/mesos/)
* Instructions specify GCE, but are generic enough to be adapted to most existing Mesos clusters
-* [DCOS](/docs/getting-started-guides/dcos)
+* [DCOS](/docs/getting-started-guides/dcos/)
* Community Edition DCOS uses AWS
* Enterprise Edition DCOS supports cloud hosting, on-premises VMs, and bare metal
@@ -146,37 +146,37 @@ KUBE2GO.io | | multi-support | multi-support | [docs](http
Madcore.Ai | Jenkins DSL | Ubuntu | flannel | [docs](https://madcore.ai) | Community ([@madcore-ai](https://github.com/madcore-ai))
Platform9 | | multi-support | multi-support | [docs](https://platform9.com/managed-kubernetes/) | Commercial
Giant Swarm | | CoreOS | flannel and/or Calico | [docs](https://docs.giantswarm.io/) | Commercial
-GCE | Saltstack | Debian | GCE | [docs](/docs/getting-started-guides/gce) | Project
+GCE | Saltstack | Debian | GCE | [docs](/docs/getting-started-guides/gce/) | Project
Azure Container Service | | Ubuntu | Azure | [docs](https://azure.microsoft.com/en-us/services/container-service/) | Commercial
-Azure (IaaS) | | Ubuntu | Azure | [docs](/docs/getting-started-guides/azure) | [Community (Microsoft)](https://github.com/Azure/acs-engine)
-Bare-metal | Ansible | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/fedora_ansible_config) | Project
-Bare-metal | custom | Fedora | _none_ | [docs](/docs/getting-started-guides/fedora/fedora_manual_config) | Project
-Bare-metal | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
-libvirt | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
-KVM | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
-Mesos/Docker | custom | Ubuntu | Docker | [docs](/docs/getting-started-guides/mesos-docker) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
-Mesos/GCE | | | | [docs](/docs/getting-started-guides/mesos) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
-DCOS | Marathon | CoreOS/Alpine | custom | [docs](/docs/getting-started-guides/dcos) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
-AWS | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/aws) | Community
-GCE | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos) | Community ([@pires](https://github.com/pires))
-Vagrant | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos) | Community ([@pires](https://github.com/pires), [@AntonioMeireles](https://github.com/AntonioMeireles))
-Bare-metal (Offline) | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/bare_metal_offline) | Community ([@jeffbean](https://github.com/jeffbean))
-CloudStack | Ansible | CoreOS | flannel | [docs](/docs/getting-started-guides/cloudstack) | Community ([@sebgoa](https://github.com/sebgoa))
-Vmware vSphere | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/vsphere) | Community ([@imkin](https://github.com/imkin))
-Vmware Photon | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/photon-controller) | Community ([@alainroy](https://github.com/alainroy))
-Bare-metal | custom | CentOS | flannel | [docs](/docs/getting-started-guides/centos/centos_manual_config) | Community ([@coolsvap](https://github.com/coolsvap))
+Azure (IaaS) | | Ubuntu | Azure | [docs](/docs/getting-started-guides/azure/) | [Community (Microsoft)](https://github.com/Azure/acs-engine)
+Bare-metal | Ansible | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/fedora_ansible_config/) | Project
+Bare-metal | custom | Fedora | _none_ | [docs](/docs/getting-started-guides/fedora/fedora_manual_config/) | Project
+Bare-metal | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
+libvirt | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
+KVM | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | Community ([@aveshagarwal](https://github.com/aveshagarwal))
+Mesos/Docker | custom | Ubuntu | Docker | [docs](/docs/getting-started-guides/mesos-docker/) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
+Mesos/GCE | | | | [docs](/docs/getting-started-guides/mesos/) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
+DCOS | Marathon | CoreOS/Alpine | custom | [docs](/docs/getting-started-guides/dcos/) | Community ([Kubernetes-Mesos Authors](https://github.com/mesosphere/kubernetes-mesos/blob/master/AUTHORS.md))
+AWS | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/aws/) | Community
+GCE | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/) | Community ([@pires](https://github.com/pires))
+Vagrant | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/) | Community ([@pires](https://github.com/pires), [@AntonioMeireles](https://github.com/AntonioMeireles))
+Bare-metal (Offline) | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/coreos/bare_metal_offline/) | Community ([@jeffbean](https://github.com/jeffbean))
+CloudStack | Ansible | CoreOS | flannel | [docs](/docs/getting-started-guides/cloudstack/) | Community ([@sebgoa](https://github.com/sebgoa))
+Vmware vSphere | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/vsphere/) | Community ([@imkin](https://github.com/imkin))
+Vmware Photon | Saltstack | Debian | OVS | [docs](/docs/getting-started-guides/photon-controller/) | Community ([@alainroy](https://github.com/alainroy))
+Bare-metal | custom | CentOS | flannel | [docs](/docs/getting-started-guides/centos/centos_manual_config/) | Community ([@coolsvap](https://github.com/coolsvap))
AWS | Juju | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | [Commercial](http://www.ubuntu.com/cloud/kubernetes) and [Community](https://github.com/juju-solutions/bundle-canonical-kubernetes) ( [@matt](https://github.com/mbruzek), [@chuck](https://github.com/chuckbutler) )
GCE | Juju | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | [Commercial](http://www.ubuntu.com/cloud/kubernetes) and [Community](https://github.com/juju-solutions/bundle-canonical-kubernetes) ( [@matt](https://github.com/mbruzek), [@chuck](https://github.com/chuckbutler) )
Bare Metal | Juju | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | [Commercial](http://www.ubuntu.com/cloud/kubernetes) and [Community](https://github.com/juju-solutions/bundle-canonical-kubernetes) ( [@matt](https://github.com/mbruzek), [@chuck](https://github.com/chuckbutler) )
Rackspace | Juju | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | [Commercial](http://www.ubuntu.com/cloud/kubernetes) and [Community](https://github.com/juju-solutions/bundle-canonical-kubernetes) ( [@matt](https://github.com/mbruzek), [@chuck](https://github.com/chuckbutler) )
Vmware vSphere | Juju | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | [Commercial](http://www.ubuntu.com/cloud/kubernetes) and [Community](https://github.com/juju-solutions/bundle-canonical-kubernetes) ( [@matt](https://github.com/mbruzek), [@chuck](https://github.com/chuckbutler) )
-AWS | Saltstack | Debian | AWS | [docs](/docs/getting-started-guides/aws) | Community ([@justinsb](https://github.com/justinsb))
-AWS | kops | Debian | AWS | [docs](https://github.com/kubernetes/kops) | Community ([@justinsb](https://github.com/justinsb))
-Bare-metal | custom | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu) | Community ([@resouer](https://github.com/resouer), [@WIZARD-CXY](https://github.com/WIZARD-CXY))
-libvirt/KVM | CoreOS | CoreOS | libvirt/KVM | [docs](/docs/getting-started-guides/libvirt-coreos) | Community ([@lhuard1A](https://github.com/lhuard1A))
-oVirt | | | | [docs](/docs/getting-started-guides/ovirt) | Community ([@simon3z](https://github.com/simon3z))
-OpenStack Heat | Saltstack | CentOS | Neutron + flannel hostgw | [docs](/docs/getting-started-guides/openstack-heat) | Community ([@FujitsuEnablingSoftwareTechnologyGmbH](https://github.com/FujitsuEnablingSoftwareTechnologyGmbH))
-any | any | any | any | [docs](/docs/getting-started-guides/scratch) | Community ([@erictune](https://github.com/erictune))
+AWS | Saltstack | Debian | AWS | [docs](/docs/getting-started-guides/aws/) | Community ([@justinsb](https://github.com/justinsb))
+AWS | kops | Debian | AWS | [docs](https://github.com/kubernetes/kops/) | Community ([@justinsb](https://github.com/justinsb))
+Bare-metal | custom | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu/) | Community ([@resouer](https://github.com/resouer), [@WIZARD-CXY](https://github.com/WIZARD-CXY))
+libvirt/KVM | CoreOS | CoreOS | libvirt/KVM | [docs](/docs/getting-started-guides/libvirt-coreos/) | Community ([@lhuard1A](https://github.com/lhuard1A))
+oVirt | | | | [docs](/docs/getting-started-guides/ovirt/) | Community ([@simon3z](https://github.com/simon3z))
+OpenStack Heat | Saltstack | CentOS | Neutron + flannel hostgw | [docs](/docs/getting-started-guides/openstack-heat/) | Community ([@FujitsuEnablingSoftwareTechnologyGmbH](https://github.com/FujitsuEnablingSoftwareTechnologyGmbH))
+any | any | any | any | [docs](/docs/getting-started-guides/scratch/) | Community ([@erictune](https://github.com/erictune))
any | any | any | any | [docs](http://docs.projectcalico.org/v2.2/getting-started/kubernetes/installation/) | Commercial and Community
**Note**: The above table is ordered by version test/used in nodes, followed by support level.
diff --git a/docs/tasks/access-application-cluster/access-cluster.md b/docs/tasks/access-application-cluster/access-cluster.md
index a8c0abcf89..297ff597d7 100644
--- a/docs/tasks/access-application-cluster/access-cluster.md
+++ b/docs/tasks/access-application-cluster/access-cluster.md
@@ -136,7 +136,7 @@ If the application is deployed as a Pod in the cluster, please refer to the [nex
To use [Python client](https://github.com/kubernetes-incubator/client-python), run the following command: `pip install kubernetes`. See [Python Client Library page](https://github.com/kubernetes-incubator/client-python) for more installation options.
-The Python client can use the same [kubeconfig file](/docs/user-guide/kubeconfig-file)
+The Python client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://github.com/kubernetes-incubator/client-python/tree/master/examples/example1.py).
#### Other languages
@@ -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..1ac15d13b2 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/#type-loadbalancer):
```json
"type": "LoadBalancer"
@@ -68,7 +68,7 @@ resource (in the case of the example above, a replication controller named
`example`).
For more information, including optional flags, refer to the
-[`kubectl expose` reference](/docs/user-guide/kubectl/v1.6/#expose).
+[`kubectl expose` reference](/docs/user-guide/kubectl/{{page.version}}/#expose).
## Finding your IP address
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..458dc2062e 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/)
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..212e1be9e6 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/)
to create a Service.
{% endcapture %}
diff --git a/docs/tasks/access-application-cluster/web-ui-dashboard.md b/docs/tasks/access-application-cluster/web-ui-dashboard.md
index d650f69545..a6bd934444 100644
--- a/docs/tasks/access-application-cluster/web-ui-dashboard.md
+++ b/docs/tasks/access-application-cluster/web-ui-dashboard.md
@@ -20,7 +20,7 @@ Dashboard also provides information on the state of Kubernetes resources in your
The Dashboard UI is not deployed by default. To deploy it, run the following command:
```
-kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml
+kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
```
## Accessing the Dashboard UI
@@ -64,7 +64,7 @@ To access the deploy wizard from the Welcome page, click the respective button.
The deploy wizard expects that you provide the following information:
-- **App name** (mandatory): Name for your application. A [label](/docs/user-guide/labels/) with the name will be added to the Deployment and Service, if any, that will be deployed.
+- **App name** (mandatory): Name for your application. A [label](/docs/concepts/overview/working-with-objects/labels/) with the name will be added to the Deployment and Service, if any, that will be deployed.
The application name must be unique within the selected Kubernetes [namespace](/docs/tasks/administer-cluster/namespaces/). It must start with a lowercase character, and end with a lowercase character or a number, and contain only lowercase letters, numbers and dashes (-). It is limited to 24 characters. Leading and trailing spaces are ignored.
@@ -84,7 +84,7 @@ If needed, you can expand the **Advanced options** section where you can specify
- **Description**: The text you enter here will be added as an [annotation](/docs/concepts/overview/working-with-objects/annotations/) to the Deployment and displayed in the application's details.
-- **Labels**: Default [labels](/docs/user-guide/labels/) to be used for your application are application name and version. You can specify additional labels to be applied to the Deployment, Service (if any), and Pods, such as release, environment, tier, partition, and release track.
+- **Labels**: Default [labels](/docs/concepts/overview/working-with-objects/labels/) to be used for your application are application name and version. You can specify additional labels to be applied to the Deployment, Service (if any), and Pods, such as release, environment, tier, partition, and release track.
Example:
diff --git a/docs/tasks/administer-cluster/access-cluster-api.md b/docs/tasks/administer-cluster/access-cluster-api.md
index f1fd4ea5c1..0eb4d059ca 100644
--- a/docs/tasks/administer-cluster/access-cluster-api.md
+++ b/docs/tasks/administer-cluster/access-cluster-api.md
@@ -147,7 +147,7 @@ If the application is deployed as a Pod in the cluster, please refer to the [nex
To use [Python client](https://github.com/kubernetes-incubator/client-python), run the following command: `pip install kubernetes` See [Python Client Library page](https://github.com/kubernetes-incubator/client-python) for more installation options.
-The Python client can use the same [kubeconfig file](/docs/user-guide/kubeconfig-file)
+The Python client can use the same [kubeconfig file](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
as the kubectl CLI does to locate and authenticate to the apiserver. See this [example](https://github.com/kubernetes-incubator/client-python/tree/master/examples/example1.py):
```python
diff --git a/docs/tasks/administer-cluster/calico-network-policy.md b/docs/tasks/administer-cluster/calico-network-policy.md
index 4543aa7069..424ffea4df 100644
--- a/docs/tasks/administer-cluster/calico-network-policy.md
+++ b/docs/tasks/administer-cluster/calico-network-policy.md
@@ -15,7 +15,7 @@ This page shows how to use Calico for NetworkPolicy.
{% capture steps %}
## Deploying a cluster using Calico
-You can deploy a cluster using Calico for network policy in the default [GCE deployment](/docs/getting-started-guides/gce) using the following set of commands:
+You can deploy a cluster using Calico for network policy in the default [GCE deployment](/docs/getting-started-guides/gce/) using the following set of commands:
```shell
export NETWORK_POLICY_PROVIDER=calico
diff --git a/docs/tasks/administer-cluster/change-default-storage-class.md b/docs/tasks/administer-cluster/change-default-storage-class.md
index 8326d49f4f..625d599dfc 100644
--- a/docs/tasks/administer-cluster/change-default-storage-class.md
+++ b/docs/tasks/administer-cluster/change-default-storage-class.md
@@ -22,7 +22,7 @@ Depending on the installation method, your Kubernetes cluster may be deployed wi
an existing StorageClass that is marked as default. This default StorageClass
is then used to dynamically provision storage for PersistentVolumeClaims
that do not require any specific storage class. See
-[PersistentVolumeClaim documentation](/docs/user-guide/persistent-volumes/#class-1)
+[PersistentVolumeClaim documentation](/docs/concepts/storage/persistent-volumes/#class-1)
for details.
The pre-installed default StorageClass may not fit well with your expected workload;
diff --git a/docs/tasks/administer-cluster/change-pv-reclaim-policy.md b/docs/tasks/administer-cluster/change-pv-reclaim-policy.md
index 43080789ed..3cbb8a7642 100644
--- a/docs/tasks/administer-cluster/change-pv-reclaim-policy.md
+++ b/docs/tasks/administer-cluster/change-pv-reclaim-policy.md
@@ -68,7 +68,7 @@ the corresponding `PersistentVolume` is not be deleted. Instead, it is moved to
{% capture whatsnext %}
* Learn more about [PersistentVolumes](/docs/concepts/storage/persistent-volumes/).
-* Learn more about [PersistentVolumeClaims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims).
+* Learn more about [PersistentVolumeClaims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims).
### Reference
diff --git a/docs/tasks/administer-cluster/configure-upgrade-etcd.md b/docs/tasks/administer-cluster/configure-upgrade-etcd.md
index b672375a9e..c5b7037185 100644
--- a/docs/tasks/administer-cluster/configure-upgrade-etcd.md
+++ b/docs/tasks/administer-cluster/configure-upgrade-etcd.md
@@ -184,7 +184,7 @@ etcd supports restoring from snapshots that are taken from an etcd process of th
Before starting the restore operation, a snapshot file must be present. It can either be a snapshot file from a previous backup operation, or from a remaining [data directory](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/configuration.md#--data-dir). `datadir` is located at `$DATA_DIR/member/snap/db`. For more information and examples on restoring a cluster from a snapshot file, see [etcd disaster recovery documentation](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/recovery.md#restoring-a-cluster).
-If the access URLs of the restored cluster is changed from the previous cluster, the Kubernetes API server must be reconfigured accordingly. In this case, restart Kubernetes API server with the flag `--etcd-servers=$NEW_ETCD_CLUSTER` instead of the flag `--etcd-servers=$OLD__ETCD_CLUSTER`. Replace `$NEW_ETCD_CLUSTER` and `$OLD__ETCD_CLUSTER` with the respective IP addresses. If a load balancer is used in front of an etcd cluster, you might need to update the load balancer instead.
+If the access URLs of the restored cluster is changed from the previous cluster, the Kubernetes API server must be reconfigured accordingly. In this case, restart Kubernetes API server with the flag `--etcd-servers=$NEW_ETCD_CLUSTER` instead of the flag `--etcd-servers=$OLD_ETCD_CLUSTER`. Replace `$NEW_ETCD_CLUSTER` and `$OLD_ETCD_CLUSTER` with the respective IP addresses. If a load balancer is used in front of an etcd cluster, you might need to update the load balancer instead.
If the majority of etcd members have permanently failed, the etcd cluster is considered failed. In this scenario, Kubernetes cannot make any changes to its current state. Although the scheduled pods might continue to run, no new pods can be scheduled. In such cases, recover the etcd cluster and potentially reconfigure Kubernetes API server to fix the issue.
diff --git a/docs/tasks/administer-cluster/cpu-constraint-namespace.md b/docs/tasks/administer-cluster/cpu-constraint-namespace.md
index 89f771794e..25681d77d7 100644
--- a/docs/tasks/administer-cluster/cpu-constraint-namespace.md
+++ b/docs/tasks/administer-cluster/cpu-constraint-namespace.md
@@ -195,7 +195,7 @@ resources:
Because your Container did not specify its own CPU request and limit, it was given the
[default CPU request and limit](/docs/tasks/administer-cluster/cpu-default-namespace/)
from the LimitRange.
-* [Configure Memory and CPU Quotas for a Namespace](/docs/tasks/administer-cluster/quota-memory-cpu-namespace)
+
At this point, your Container might be running or it might not be running. Recall that a prerequisite
for this task is that your Nodes have at least 1 CPU. If each of your Nodes has only
1 CPU, then there might not be enough allocatable CPU on any Node to accommodate a request
@@ -219,12 +219,12 @@ Pods that were created previously.
As a cluster administrator, you might want to impose restrictions on the CPU resources that Pods can use.
For example:
-* Each Node in a cluster has 2 cpu. You do not want to accept any Pod that requests
-more than 2 cpu, because no Node in the cluster can support the request.
+* Each Node in a cluster has 2 CPU. You do not want to accept any Pod that requests
+more than 2 CPU, because no Node in the cluster can support the request.
* A cluster is shared by your production and development departments.
-You want to allow production workloads to consume up to 3 cpu, but you want development workloads to be limited
-to 1 cpu. You create separate namespaces for production and development, and you apply CPU constraints to
+You want to allow production workloads to consume up to 3 CPU, but you want development workloads to be limited
+to 1 CPU. You create separate namespaces for production and development, and you apply CPU constraints to
each namespace.
## Clean up
diff --git a/docs/tasks/administer-cluster/declare-network-policy.md b/docs/tasks/administer-cluster/declare-network-policy.md
index a1cffa197b..d1b141c607 100644
--- a/docs/tasks/administer-cluster/declare-network-policy.md
+++ b/docs/tasks/administer-cluster/declare-network-policy.md
@@ -15,7 +15,7 @@ You'll need to have a Kubernetes cluster in place, with network policy support.
* [Cilium](/docs/tasks/administer-cluster/cilium-network-policy/)
* [Kube-router](/docs/tasks/administer-cluster/kube-router-network-policy/)
* [Romana](/docs/tasks/configure-pod-container/romana-network-policy/)
-* [Weave Net](/docs/tasks/configure-pod-container/weave-network-policy/)
+* [Weave Net](/docs/tasks/administer-cluster/weave-network-policy/)
**Note**: The above list is sorted alphabetically by product name, not by recommendation or preference. This example is valid for a Kubernetes cluster using any of these providers.
{% endcapture %}
diff --git a/docs/tasks/administer-cluster/out-of-resource.md b/docs/tasks/administer-cluster/out-of-resource.md
index a86f70ddf2..02098595df 100644
--- a/docs/tasks/administer-cluster/out-of-resource.md
+++ b/docs/tasks/administer-cluster/out-of-resource.md
@@ -49,7 +49,7 @@ container, and if users use the [node
allocatable](/docs/tasks/administer-cluster/reserve-compute-resources/#node-allocatable) feature, out of resource decisions
are made local to the end user pod part of the cgroup hierarchy as well as the
root node. This
-[script](/docs/concepts/cluster-administration/out-of-resource/memory-available.sh)
+[script](/docs/tasks/administer-cluster/out-of-resource/memory-available.sh)
reproduces the same set of steps that the `kubelet` performs to calculate
`memory.available`. The `kubelet` excludes inactive_file (i.e. # of bytes of
file-backed memory on inactive LRU list) from its calculation as it assumes that
diff --git a/docs/tasks/administer-cluster/securing-a-cluster.md b/docs/tasks/administer-cluster/securing-a-cluster.md
index 2885a27da9..b967a01138 100644
--- a/docs/tasks/administer-cluster/securing-a-cluster.md
+++ b/docs/tasks/administer-cluster/securing-a-cluster.md
@@ -66,7 +66,7 @@ being terminated and recreated on other nodes. The out of the box roles represen
between flexibility and the common use cases, but more limited roles should be carefully reviewed
to prevent accidental escalation. You can make roles specific to your use case if the out-of-box ones don't meet your needs.
-Consult the [authorization reference section](/docs/admin/authorization) for more information.
+Consult the [authorization reference section](/docs/admin/authorization/) for more information.
## Controlling the capabilities of a workload or user at runtime
@@ -82,7 +82,7 @@ resources granted to a namespace. This is most often used to limit the amount of
or persistent disk a namespace can allocate, but can also control how many pods, services, or
volumes exist in each namespace.
-[Limit ranges](/docs/admin/limitrange) restrict the maximum or minimum size of some of the
+[Limit ranges](/docs/tasks/administer-cluster/memory-default-namespace/) restrict the maximum or minimum size of some of the
resources above, to prevent users from requesting unreasonably high or low values for commonly
reserved resources like memory, or to provide default limits when none are specified.
diff --git a/docs/tasks/configure-pod-container/assign-cpu-resource.md b/docs/tasks/configure-pod-container/assign-cpu-resource.md
index 083b43855b..81da766f98 100644
--- a/docs/tasks/configure-pod-container/assign-cpu-resource.md
+++ b/docs/tasks/configure-pod-container/assign-cpu-resource.md
@@ -219,7 +219,7 @@ could use all of the CPU resources available on the Node where it is running.
* The Container is running in a namespace that has a default CPU limit, and the
Container is automatically assigned the default limit. Cluster administrators can use a
-[LimitRange](https://kubernetes.io/docs/api-reference/v1.6/)
+[LimitRange](https://kubernetes.io/docs/api-reference/v1.7/#limitrange-v1-core/)
to specify a default value for the CPU limit.
## Motivation for CPU requests and limits
diff --git a/docs/tasks/configure-pod-container/assign-memory-resource.md b/docs/tasks/configure-pod-container/assign-memory-resource.md
index d717828345..bc3a4bf908 100644
--- a/docs/tasks/configure-pod-container/assign-memory-resource.md
+++ b/docs/tasks/configure-pod-container/assign-memory-resource.md
@@ -313,7 +313,7 @@ could use all of the memory available on the Node where it is running.
* The Container is running in a namespace that has a default memory limit, and the
Container is automatically assigned the default limit. Cluster administrators can use a
-[LimitRange](https://kubernetes.io/docs/api-reference/v1.6/)
+[LimitRange](https://kubernetes.io/docs/api-reference/v1.7/#limitrange-v1-core)
to specify a default value for the memory limit.
## Motivation for memory requests and limits
diff --git a/docs/tasks/configure-pod-container/assign-pods-nodes.md b/docs/tasks/configure-pod-container/assign-pods-nodes.md
index 06a29e575a..613c731a0e 100644
--- a/docs/tasks/configure-pod-container/assign-pods-nodes.md
+++ b/docs/tasks/configure-pod-container/assign-pods-nodes.md
@@ -75,7 +75,7 @@ a `disktype=ssd` label.
{% capture whatsnext %}
Learn more about
-[labels and selectors](/docs/user-guide/labels/).
+[labels and selectors](/docs/concepts/overview/working-with-objects/labels/).
{% endcapture %}
{% include templates/task.md %}
diff --git a/docs/tasks/configure-pod-container/configmap.md b/docs/tasks/configure-pod-container/configmap.md
index 352ea85c11..8236fd4ceb 100644
--- a/docs/tasks/configure-pod-container/configmap.md
+++ b/docs/tasks/configure-pod-container/configmap.md
@@ -23,7 +23,7 @@ This page shows you how to configure an application using a ConfigMap. ConfigMap
## Use kubectl to create a ConfigMap
-Use the `kubectl create configmap` command to create configmaps from [directories](#creating-configmaps-from-directories), [files](#creating-configmaps-from-files), or [literal values](#creating-configmaps-from-literal-values):
+Use the `kubectl create configmap` command to create configmaps from [directories](#create-configmaps-from-directories), [files](#create-configmaps-from-files), or [literal values](#create-configmaps-from-literal-values):
```shell
kubectl create configmap
diff --git a/docs/tasks/configure-pod-container/configure-pod-configmap.md b/docs/tasks/configure-pod-container/configure-pod-configmap.md
index 6349af7a40..7286accd9a 100644
--- a/docs/tasks/configure-pod-container/configure-pod-configmap.md
+++ b/docs/tasks/configure-pod-container/configure-pod-configmap.md
@@ -124,7 +124,7 @@ This page provides a series of usage examples demonstrating how to configure Pod
SPECIAL_TYPE: charm
```
-1. Use `env-from` to define all of the ConfigMap's data as Pod environment variables. The key from the ConfigMap becomes the environment variable name in the Pod.
+1. Use `envFrom` to define all of the ConfigMap's data as Pod environment variables. The key from the ConfigMap becomes the environment variable name in the Pod.
```yaml
apiVersion: v1
@@ -185,7 +185,7 @@ very charm
## Add ConfigMap data to a Volume
-As explained in [Configure Containers Using a ConfigMap](/docs/tasks/configure-pod-container/configmap.html), when you create a ConfigMap using ``--from-file``, the filename becomes a key stored in the `data` section of the ConfigMap. The file contents become the key's value.
+As explained in [Configure Containers Using a ConfigMap](/docs/tasks/configure-pod-container/configmap/), when you create a ConfigMap using ``--from-file``, the filename becomes a key stored in the `data` section of the ConfigMap. The file contents become the key's value.
The examples in this section refer to a ConfigMap named special-config, shown below.
diff --git a/docs/tasks/configure-pod-container/configure-pod-initialization.md b/docs/tasks/configure-pod-container/configure-pod-initialization.md
index be18f82e4d..4147b54854 100644
--- a/docs/tasks/configure-pod-container/configure-pod-initialization.md
+++ b/docs/tasks/configure-pod-container/configure-pod-initialization.md
@@ -81,7 +81,7 @@ The output shows that nginx is serving the web page that was written by the init
{% capture whatsnext %}
* Learn more about
-[communicating between Containers running in the same Pod](/docs/tasks/configure-pod-container/communicate-containers-same-pod/).
+[communicating between Containers running in the same Pod](/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/).
* Learn more about [Init Containers](/docs/concepts/workloads/pods/init-containers/).
* Learn more about [Volumes](/docs/concepts/storage/volumes/).
* Learn more about [Debugging Init Containers](/docs/tasks/debug-application-cluster/debug-init-containers/)
diff --git a/docs/tasks/configure-pod-container/configure-service-account.md b/docs/tasks/configure-pod-container/configure-service-account.md
index 55e115bd10..65a69ae8b4 100644
--- a/docs/tasks/configure-pod-container/configure-service-account.md
+++ b/docs/tasks/configure-pod-container/configure-service-account.md
@@ -9,7 +9,7 @@ title: Configure Service Accounts for Pods
A service account provides an identity for processes that run in a Pod.
*This is a user introduction to Service Accounts. See also the
-[Cluster Admin Guide to Service Accounts](/docs/admin/service-accounts-admin).*
+[Cluster Admin Guide to Service Accounts](/docs/admin/service-accounts-admin/).*
**Note:** This document describes how service accounts behave in a cluster set up
as recommended by the Kubernetes project. Your cluster administrator may have
@@ -146,18 +146,19 @@ Any tokens for non-existent service accounts will be cleaned up by the token con
```shell
$ kubectl describe secrets/build-robot-secret
-Name: build-robot-secret
-Namespace: default
-Labels:
-Annotations: kubernetes.io/service-account.name=build-robot,kubernetes.io/service-account.uid=870ef2a5-35cf-11e5-8d06-005056b45392
+Name: build-robot-secret
+Namespace: default
+Labels:
+Annotations: kubernetes.io/service-account.name=build-robot
+ kubernetes.io/service-account.uid=da68f9c6-9d26-11e7-b84e-002dc52800da
-Type: kubernetes.io/service-account-token
+Type: kubernetes.io/service-account-token
Data
====
-ca.crt: 1220 bytes
-token: ...
-namespace: 7 bytes
+ca.crt: 1338 bytes
+namespace: 7 bytes
+token: ...
```
**Note:** The content of `token` is elided here.
diff --git a/docs/tasks/debug-application-cluster/debug-application-introspection.md b/docs/tasks/debug-application-cluster/debug-application-introspection.md
index 55c4c24c7f..292e86a363 100644
--- a/docs/tasks/debug-application-cluster/debug-application-introspection.md
+++ b/docs/tasks/debug-application-cluster/debug-application-introspection.md
@@ -379,7 +379,7 @@ Learn about additional debugging tools, including:
* [Logging](/docs/user-guide/logging/overview)
* [Monitoring](/docs/user-guide/monitoring)
* [Getting into containers via `exec`](/docs/user-guide/getting-into-containers)
-* [Connecting to containers via proxies](/docs/user-guide/connecting-to-applications-proxy)
+* [Connecting to containers via proxies](/docs/tasks/access-kubernetes-api/http-proxy-access-api/)
* [Connecting to containers via port forwarding](/docs/user-guide/connecting-to-applications-port-forward)
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 c613f1e03d..8f6b970dde 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
@@ -289,17 +289,17 @@ Federation control plane stores its state in
[`etcd`](https://coreos.com/etcd/docs/latest/) data must be stored in
a persistent storage volume to ensure correct operation across
federation control plane restarts. On host clusters that support
-[dynamic provisioning of storage volumes](/docs/user-guide/persistent-volumes/#dynamic),
+[dynamic provisioning of storage volumes](/docs/concepts/storage/persistent-volumes/#dynamic),
`kubefed init` dynamically provisions a
-[`PersistentVolume`](/docs/user-guide/persistent-volumes/#persistent-volumes)
+[`PersistentVolume`](/docs/concepts/storage/persistent-volumes/#persistent-volumes)
and binds it to a
-[`PersistentVolumeClaim`](/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
+[`PersistentVolumeClaim`](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)
to store [`etcd`](https://coreos.com/etcd/docs/latest/) data. If your
host cluster doesn't support dynamic provisioning, you can also
statically provision a
-[`PersistentVolume`](/docs/user-guide/persistent-volumes/#persistent-volumes).
+[`PersistentVolume`](/docs/concepts/storage/persistent-volumes/#persistent-volumes).
`kubefed init` creates a
-[`PersistentVolumeClaim`](/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
+[`PersistentVolumeClaim`](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)
that has the following configuration:
```yaml
@@ -321,12 +321,12 @@ spec:
```
To statically provision a
-[`PersistentVolume`](/docs/user-guide/persistent-volumes/#persistent-volumes),
+[`PersistentVolume`](/docs/concepts/storage/persistent-volumes/#persistent-volumes),
you must ensure that the
-[`PersistentVolume`](/docs/user-guide/persistent-volumes/#persistent-volumes)
+[`PersistentVolume`](/docs/concepts/storage/persistent-volumes/#persistent-volumes)
that you create has the matching storage class, access mode and
at least as much capacity as the requested
-[`PersistentVolumeClaim`](/docs/user-guide/persistent-volumes/#persistentvolumeclaims).
+[`PersistentVolumeClaim`](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims).
Alternatively, you can disable persistent storage completely
by passing `--etcd-persistent-storage=false` to `kubefed init`.
@@ -342,7 +342,7 @@ kubefed init fellowship \
```
`kubefed init` still doesn't support attaching an existing
-[`PersistentVolumeClaim`](/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
+[`PersistentVolumeClaim`](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)
to the federation control plane that it bootstraps. We are planning to
support this in a future version of `kubefed`.
@@ -373,7 +373,7 @@ For more information see
Once you've deployed a federation control plane, you'll need to make
that control plane aware of the clusters it should manage. You can add
-a cluster to your federation by using the [`kubefed join`](/docs/admin/kubefed_join)
+a cluster to your federation by using the [`kubefed join`](/docs/admin/kubefed_join/)
command.
To use `kubefed join`, you'll need to provide the name of the cluster
@@ -468,7 +468,7 @@ as described in the
## Removing a cluster from a federation
-To remove a cluster from a federation, run the [`kubefed unjoin`](/docs/admin/kubefed_unjoin)
+To remove a cluster from a federation, run the [`kubefed unjoin`](/docs/admin/kubefed_unjoin/)
command with the cluster name and the federation's
`--host-cluster-context`:
diff --git a/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md b/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
index 391b58ee54..0b652dd52d 100644
--- a/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
+++ b/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
@@ -161,7 +161,7 @@ The output shows the values of selected environment variables:
{% capture whatsnext %}
-* [Defining Environment Variables for a Container](/docs/tasks/configure-pod-container/define-environment-variable-container/)
+* [Defining Environment Variables for a Container](/docs/tasks/inject-data-application/define-environment-variable-container/)
* [PodSpec](/docs/resources-reference/{{page.version}}/#podspec-v1-core)
* [Container](/docs/resources-reference/{{page.version}}/#container-v1-core)
* [EnvVar](/docs/resources-reference/{{page.version}}/#envvar-v1-core)
diff --git a/docs/tasks/inject-data-application/podpreset.md b/docs/tasks/inject-data-application/podpreset.md
index 5b6b3549c0..6e1026a5df 100644
--- a/docs/tasks/inject-data-application/podpreset.md
+++ b/docs/tasks/inject-data-application/podpreset.md
@@ -123,7 +123,7 @@ metadata:
app: website
role: frontend
annotations:
- podpreset.admission.kubernetes.io/allow-database: "resource version"
+ podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version"
spec:
containers:
- name: website
@@ -229,7 +229,7 @@ metadata:
app: website
role: frontend
annotations:
- podpreset.admission.kubernetes.io/allow-database: "resource version"
+ podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version"
spec:
containers:
- name: website
@@ -325,34 +325,35 @@ spec:
**Pod spec after admission controller:**
```yaml
+apiVersion: v1
kind: Pod
- metadata:
- labels:
- app: guestbook
- tier: frontend
- annotations:
- podpreset.admission.kubernetes.io/allow-database: "resource version"
- spec:
- containers:
- - name: php-redis
- image: gcr.io/google_samples/gb-frontend:v3
- resources:
- requests:
- cpu: 100m
- memory: 100Mi
- volumeMounts:
- - mountPath: /cache
- name: cache-volume
- env:
- - name: GET_HOSTS_FROM
- value: dns
- - name: DB_PORT
- value: "6379"
- ports:
- - containerPort: 80
- volumes:
- - name: cache-volume
- emptyDir: {}
+metadata:
+ labels:
+ app: guestbook
+ tier: frontend
+ annotations:
+ podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version"
+spec:
+ containers:
+ - name: php-redis
+ image: gcr.io/google_samples/gb-frontend:v3
+ resources:
+ requests:
+ cpu: 100m
+ memory: 100Mi
+ volumeMounts:
+ - mountPath: /cache
+ name: cache-volume
+ env:
+ - name: GET_HOSTS_FROM
+ value: dns
+ - name: DB_PORT
+ value: "6379"
+ ports:
+ - containerPort: 80
+ volumes:
+ - name: cache-volume
+ emptyDir: {}
```
### Multiple PodPreset Example
@@ -432,8 +433,8 @@ metadata:
app: website
role: frontend
annotations:
- podpreset.admission.kubernetes.io/allow-database: "resource version"
- podpreset.admission.kubernetes.io/proxy: "resource version"
+ podpreset.admission.kubernetes.io/podpreset-allow-database: "resource version"
+ podpreset.admission.kubernetes.io/podpreset-proxy: "resource version"
spec:
containers:
- name: website
@@ -538,7 +539,7 @@ $ kubectl describe ...
....
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
- Tue, 07 Feb 2017 16:56:12 -0700 Tue, 07 Feb 2017 16:56:12 -0700 1 {podpreset.admission.kubernetes.io/allow-database } conflict Conflict on pod preset. Duplicate mountPath /cache.
+ Tue, 07 Feb 2017 16:56:12 -0700 Tue, 07 Feb 2017 16:56:12 -0700 1 {podpreset.admission.kubernetes.io/podpreset-allow-database } conflict Conflict on pod preset. Duplicate mountPath /cache.
```
## Deleting a Pod Preset
diff --git a/docs/tasks/job/parallel-processing-expansion.md b/docs/tasks/job/parallel-processing-expansion.md
index f8fac8066e..7feb9c7602 100644
--- a/docs/tasks/job/parallel-processing-expansion.md
+++ b/docs/tasks/job/parallel-processing-expansion.md
@@ -109,7 +109,7 @@ Processing item cherry
In the first example, each instance of the template had one parameter, and that parameter was also
used as a label. However label keys are limited in [what characters they can
-contain](/docs/user-guide/labels/#syntax-and-character-set).
+contain](/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set).
This slightly more complex example uses the jinja2 template language to generate our objects.
We will use a one-line python script to convert the template to a file.
diff --git a/docs/tasks/manage-daemon/update-daemon-set.md b/docs/tasks/manage-daemon/update-daemon-set.md
index 653eec57a1..46a5823218 100644
--- a/docs/tasks/manage-daemon/update-daemon-set.md
+++ b/docs/tasks/manage-daemon/update-daemon-set.md
@@ -159,7 +159,7 @@ causes:
The rollout is stuck because new DaemonSet pods can't be scheduled on at least one
node. This is possible when the node is
-[running out of resources](/docs/concepts/cluster-administration/out-of-resource/).
+[running out of resources](/docs/tasks/administer-cluster/out-of-resource/).
When this happens, find the nodes that don't have the DaemonSet pods scheduled on
by comparing the output of `kubectl get nodes` and the output of:
diff --git a/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
index 4a7efc9d94..b13ea7a0ff 100644
--- a/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
+++ b/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
@@ -18,13 +18,13 @@ This document walks you through an example of enabling Horizontal Pod Autoscalin
This example requires a running Kubernetes cluster and kubectl, version 1.2 or later.
[Heapster](https://github.com/kubernetes/heapster) monitoring needs to be deployed in the cluster
as Horizontal Pod Autoscaler uses it to collect metrics
-(if you followed [getting started on GCE guide](/docs/getting-started-guides/gce),
+(if you followed [getting started on GCE guide](/docs/getting-started-guides/gce/),
heapster monitoring will be turned-on by default).
To specify multiple resource metrics for a Horizontal Pod Autoscaler, you must have a Kubernetes cluster
and kubectl at version 1.6 or later. Furthermore, in order to make use of custom metrics, your cluster
must be able to communicate with the API server providing the custom metrics API.
-See the [Horizontal Pod Autoscaling user guide](/docs/user-guide/horizontal-pod-autoscaling/#support-for-custom-metrics) for more details.
+See the [Horizontal Pod Autoscaling user guide](/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics) for more details.
## Step One: Run & expose php-apache server
diff --git a/docs/tasks/run-application/run-replicated-stateful-application.md b/docs/tasks/run-application/run-replicated-stateful-application.md
index 5241d555b0..73e6c1ce9f 100644
--- a/docs/tasks/run-application/run-replicated-stateful-application.md
+++ b/docs/tasks/run-application/run-replicated-stateful-application.md
@@ -148,7 +148,7 @@ properties to perform orderly startup of MySQL replication.
### Generating configuration
Before starting any of the containers in the Pod spec, the Pod first runs any
-[Init Containers](/docs/user-guide/production-pods/#handling-initialization)
+[Init Containers](/docs/concepts/workloads/pods/init-containers/)
in the order defined.
The first Init Container, named `init-mysql`, generates special MySQL config
@@ -168,7 +168,7 @@ Because the example topology consists of a single MySQL master and any number of
slaves, the script simply assigns ordinal `0` to be the master, and everyone
else to be slaves.
Combined with the StatefulSet controller's
-[deployment order guarantee](/docs/concepts/abstractions/controllers/statefulsets/#deployment-and-scaling-guarantee),
+[deployment order guarantee](/docs/concepts/workloads/controllers/statefulset/#deployment-and-scaling-guarantees/),
this ensures the MySQL master is Ready before creating slaves, so they can begin
replicating.
@@ -292,7 +292,7 @@ running while you force a Pod out of the Ready state.
### Break the Readiness Probe
-The [readiness probe](/docs/user-guide/production-pods/#liveness-and-readiness-probes-aka-health-checks)
+The [readiness probe](/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#define-readiness-probes)
for the `mysql` container runs the command `mysql -h 127.0.0.1 -e 'SELECT 1'`
to make sure the server is up and able to execute queries.
@@ -410,7 +410,7 @@ With MySQL replication, you can scale your read query capacity by adding slaves.
With StatefulSet, you can do this with a single command:
```shell
-kubectl scale --replicas=5 statefulset mysql
+kubectl scale statefulset mysql --replicas=5
```
Watch the new Pods come up by running:
@@ -443,7 +443,7 @@ pod "mysql-client" deleted
Scaling back down is also seamless:
```shell
-kubectl scale --replicas=3 statefulset mysql
+kubectl scale statefulset mysql --replicas=3
```
Note, however, that while scaling up creates new PersistentVolumeClaims
diff --git a/docs/tasks/run-application/run-single-instance-stateful-application.md b/docs/tasks/run-application/run-single-instance-stateful-application.md
index aa073b1586..3880efb568 100644
--- a/docs/tasks/run-application/run-single-instance-stateful-application.md
+++ b/docs/tasks/run-application/run-single-instance-stateful-application.md
@@ -149,7 +149,7 @@ specific to stateful apps:
* Don't scale the app. This setup is for single-instance apps
only. The underlying PersistentVolume can only be mounted to one
Pod. For clustered stateful apps, see the
- [StatefulSet documentation](/docs/concepts/workloads/controllers/statefulset.md).
+ [StatefulSet documentation](/docs/concepts/workloads/controllers/statefulset/).
* Use `strategy:` `type: Recreate` in the Deployment configuration
YAML file. This instructs Kubernetes to _not_ use rolling
updates. Rolling updates will not work, as you cannot have more than
diff --git a/docs/tools/kompose/user-guide.md b/docs/tools/kompose/user-guide.md
index 483ea22ea0..2aa6666bde 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
@@ -572,4 +572,4 @@ Please note that changing service name might break some `docker-compose` files.
Kompose supports Docker Compose versions: 1, 2 and 3. We have limited support on versions 2.1 and 3.2 due to their experimental nature.
-A full list on compatibility between all three versions is listed in our [conversion document](/docs/conversion.md) including a list of all incompatible Docker Compose keys.
+A full list on compatibility between all three versions is listed in our [conversion document](https://github.com/kubernetes/kompose/blob/master/docs/conversion.md) including a list of all incompatible Docker Compose keys.
diff --git a/docs/tutorials/clusters/apparmor.md b/docs/tutorials/clusters/apparmor.md
index b1c60fc596..81301a9b8a 100644
--- a/docs/tutorials/clusters/apparmor.md
+++ b/docs/tutorials/clusters/apparmor.md
@@ -192,20 +192,7 @@ Next, we'll run a simple "Hello AppArmor" pod with the deny-write profile:
{% include code.html language="yaml" file="hello-apparmor-pod.yaml" ghlink="/docs/tutorials/clusters/hello-apparmor-pod.yaml" %}
```shell
-$ kubectl create -f /dev/stdin <
Annotations: container.apparmor.security.beta.kubernetes.io/hello=localhost/k8s-apparmor-example-allow-write
-Status: Failed
+Status: Pending
Reason: AppArmor
Message: Pod Cannot enforce AppArmor: profile "k8s-apparmor-example-allow-write" is not loaded
IP:
diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md
index e0a9b24d95..09c9ad91ea 100644
--- a/docs/tutorials/index.md
+++ b/docs/tutorials/index.md
@@ -31,7 +31,7 @@ each of which has a sequence of steps.
* [Running a Single-Instance Stateful Application](/docs/tutorials/stateful-application/run-stateful-application/)
-* [Running a Replicated Stateful Application](/docs/tutorials/stateful-application/run-replicated-stateful-application/)
+* [Running a Replicated Stateful Application](/docs/tasks/run-application/run-replicated-stateful-application/)
* [Example: WordPress and MySQL with Persistent Volumes](/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/)
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 dc7cfca526..8612eb322f 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" %}
@@ -457,7 +457,7 @@ reverse ordinal order, while respecting the StatefulSet guarantees.
Patch the `web` StatefulSet to apply the `RollingUpdate` update strategy.
```shell
-kubectl patch statefulset web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}
+kubectl patch statefulset web -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}'
statefulset "web" patched
```
@@ -563,7 +563,7 @@ pod "web-2" deleted
Wait for the Pod to be Running and Ready.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 4m
web-1 1/1 Running 0 4m
@@ -598,7 +598,7 @@ statefulset "web" patched
Wait for `web-2` to be Running and Ready.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 4m
web-1 1/1 Running 0 4m
@@ -628,7 +628,7 @@ pod "web-1" deleted
Wait for the `web-1` Pod to be Running and Ready.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 6m
web-1 0/1 Terminating 0 6m
@@ -673,7 +673,7 @@ statefulset "web" patched
Wait for all of the Pods in the StatefulSet to become Running and Ready.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 3m
web-1 0/1 ContainerCreating 0 11s
@@ -935,7 +935,7 @@ of the `web` StatefulSet is set to `Parallel`.
In one terminal, watch the Pods in the StatefulSet.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
```
In another terminal, create the StatefulSet and Service in the manifest.
@@ -949,7 +949,7 @@ statefulset "web" created
Examine the output of the `kubectl get` command that you executed in the first terminal.
```shell
-kubectl get po -lapp=nginx -w
+kubectl get po -l app=nginx -w
NAME READY STATUS RESTARTS AGE
web-0 0/1 Pending 0 0s
web-0 0/1 Pending 0 0s
diff --git a/docs/tutorials/stateful-application/zookeeper.md b/docs/tutorials/stateful-application/zookeeper.md
index 732e5ac3dc..cbbd3a96c1 100644
--- a/docs/tutorials/stateful-application/zookeeper.md
+++ b/docs/tutorials/stateful-application/zookeeper.md
@@ -13,7 +13,7 @@ title: Running ZooKeeper, A CP Distributed System
{% capture overview %}
This tutorial demonstrates [Apache Zookeeper](https://zookeeper.apache.org) on
Kubernetes using [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/),
-[PodDisruptionBudgets](/docs/admin/disruptions/#specifying-a-poddisruptionbudget),
+[PodDisruptionBudgets](/docs/concepts/workloads/pods/disruptions/#specifying-a-poddisruptionbudget),
and [PodAntiAffinity](/docs/user-guide/node-selection/#inter-pod-affinity-and-anti-affinity-beta-feature).
{% endcapture %}
@@ -28,7 +28,7 @@ Kubernetes concepts.
* [PersistentVolumes](/docs/concepts/storage/volumes/)
* [PersistentVolume Provisioning](https://github.com/kubernetes/examples/tree/{{page.githubbranch}}/staging/persistent-volume-provisioning/)
* [StatefulSets](/docs/concepts/abstractions/controllers/statefulsets/)
-* [PodDisruptionBudgets](/docs/admin/disruptions/#specifying-a-poddisruptionbudget)
+* [PodDisruptionBudgets](/docs/concepts/workloads/pods/disruptions/#specifying-a-poddisruptionbudget)
* [PodAntiAffinity](/docs/user-guide/node-selection/#inter-pod-affinity-and-anti-affinity-beta-feature)
* [kubectl CLI](/docs/user-guide/kubectl)
@@ -88,9 +88,9 @@ 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 [Service](/docs/concepts/services-networking/service),
-a [PodDisruptionBudget](/docs/admin/disruptions/#specifying-a-poddisruptionbudget),
+a [PodDisruptionBudget](/docs/concepts/workloads/pods/disruptions//#specifying-a-poddisruptionbudget),
and a [StatefulSet](/docs/concepts/abstractions/controllers/statefulsets/).
{% include code.html language="yaml" file="zookeeper.yaml" ghlink="/docs/tutorials/stateful-application/zookeeper.yaml" %}
@@ -935,7 +935,7 @@ This is because the Pods in the `zk` StatefulSet have a PodAntiAffinity specifie
topologyKey: "kubernetes.io/hostname"
```
-The `requiredDuringSchedulingRequiredDuringExecution` field tells the
+The `requiredDuringSchedulingIgnoredDuringExecution` field tells the
Kubernetes Scheduler that it should never co-locate two Pods from the `zk-headless`
Service in the domain defined by the `topologyKey`. The `topologyKey`
`kubernetes.io/hostname` indicates that the domain is an individual node. Using
diff --git a/docs/user-guide/walkthrough/k8s201.md b/docs/user-guide/walkthrough/k8s201.md
index f5f42d7120..b9d659c05f 100644
--- a/docs/user-guide/walkthrough/k8s201.md
+++ b/docs/user-guide/walkthrough/k8s201.md
@@ -46,7 +46,7 @@ List all Pods with the label `app=nginx`:
kubectl get pods -l app=nginx
```
-For more information, see [Labels](/docs/user-guide/labels/).
+For more information, see [Labels](/docs/concepts/overview/working-with-objects/labels/).
They are a core concept used by two additional Kubernetes building blocks: Deployments and Services.
diff --git a/images/case_studies/Video-Clip-Box.png b/images/case_studies/Video-Clip-Box.png
new file mode 100644
index 0000000000..4c61e7440f
Binary files /dev/null and b/images/case_studies/Video-Clip-Box.png differ
diff --git a/images/case_studies/box-small.png b/images/case_studies/box-small.png
new file mode 100644
index 0000000000..105b66a583
Binary files /dev/null and b/images/case_studies/box-small.png differ
diff --git a/images/case_studies/golfnow_logo.png b/images/case_studies/golfnow_logo.png
new file mode 100644
index 0000000000..dbeb127b02
Binary files /dev/null and b/images/case_studies/golfnow_logo.png differ
diff --git a/images/case_studies/peardeck_logo.png b/images/case_studies/peardeck_logo.png
new file mode 100644
index 0000000000..c1b9772ec4
Binary files /dev/null and b/images/case_studies/peardeck_logo.png differ
diff --git a/images/case_studies/wink.png b/images/case_studies/wink.png
new file mode 100644
index 0000000000..ef2ee30bf3
Binary files /dev/null and b/images/case_studies/wink.png differ