diff --git a/OWNERS b/OWNERS
index 247d39ea5e..055a328273 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,5 +1,4 @@
assignees:
-- lavalamp
- smarterclayton
- janetkuo
- pwittrock
diff --git a/_data/support.yml b/_data/support.yml
index efb049ccb1..8647d1456d 100644
--- a/_data/support.yml
+++ b/_data/support.yml
@@ -39,3 +39,6 @@ toc:
path: https://github.com/kubernetes/kubernetes/releases/
- title: Release Roadmap
path: https://github.com/kubernetes/kubernetes/milestones/
+
+- title: Deprecation Policy
+ path: /docs/deprecation-policy.md
diff --git a/_includes/tree.html b/_includes/tree.html
index 4aeaeb0176..78505504f1 100644
--- a/_includes/tree.html
+++ b/_includes/tree.html
@@ -12,9 +12,9 @@
{% assign path = item.path %}
{% assign title = item.title %}
{% else %}
- {% assign page = site.pages | where: "path", item | first %}
- {% assign title = page.title %}
- {% assign path = page.url %}
+ {% assign found_page = site.pages | where: "path", item | first %}
+ {% assign title = found_page.title %}
+ {% assign path = found_page.url %}
{% endif %}
{% endcapture %}
diff --git a/docs/admin/dns.md b/docs/admin/dns.md
index 01f54d9167..0ee1fca395 100644
--- a/docs/admin/dns.md
+++ b/docs/admin/dns.md
@@ -384,7 +384,7 @@ for more information.
## References
-- [Docs for the DNS cluster addon](http://releases.k8s.io/{{page.githubbranch}}/build-tools/kube-dns/README.md)
+- [Docs for the DNS cluster addon](http://releases.k8s.io/{{page.githubbranch}}/build/kube-dns/README.md)
## What's next
- [Autoscaling the DNS Service in a Cluster](/docs/tasks/administer-cluster/dns-horizontal-autoscaling/).
diff --git a/docs/admin/kubeadm.md b/docs/admin/kubeadm.md
index 71095d0577..1014ee1ab6 100644
--- a/docs/admin/kubeadm.md
+++ b/docs/admin/kubeadm.md
@@ -84,6 +84,9 @@ Valid values are the ones supported by `controller-manager`, namely `"aws"`,
the cloud provider, you should create a `/etc/kubernetes/cloud-config`
file manually, before running `kubeadm init`. `kubeadm` automatically
picks those settings up and ensures other nodes are configured correctly.
+The exact format and content of the file `/etc/kubernetes/cloud-config` depends
+on the type you specified for `--cloud-provider`; see the appropriate documentation
+for your cloud provider for details.
You must also set the `--cloud-provider` and `--cloud-config` parameters
yourself by editing the `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf`
file appropriately.
diff --git a/docs/deprecation-policy.md b/docs/deprecation-policy.md
index 14db737d13..d349e6c0b9 100644
--- a/docs/deprecation-policy.md
+++ b/docs/deprecation-policy.md
@@ -3,11 +3,9 @@ assignees:
- bgrant0607
- lavalamp
- thockin
-
+title: Kubernetes Deprecation Policy
---
-# Kubernetes Deprecation Policy
-
Kubernetes is a large system with many components and many contributors. As
with any such software, the feature set naturally evolves over time, and
sometimes a feature may need to be removed. This could include an API, a flag,
@@ -75,6 +73,7 @@ version. Beta API versions *may not* replace GA API versions.
**Rule #4: Other than the most recent API version in each track, older API
versions must be supported after their announced deprecation for a duration of
no less than:**
+
* **GA: 1 year or 2 releases (whichever is longer)**
* **Beta: 3 months or 1 release (whichever is longer)**
* **Alpha: 0 releases**
@@ -84,18 +83,93 @@ which supports a particular API group. A new Kubernetes release is made every
approximately 3 months (4 per year). The following table describes which API
versions are supported in a series of subsequent releases.
-| Release | API versions | Notes |
-|---------|--------------|-------|
-| X | v1 | |
-| X+1 | v1, v2alpha1 | |
-| X+2 | v1, v2alpha2 | * v2alpha1 is removed, "action required" relnote |
-| X+3 | v1, v2beta1 | * v2alpha2 is removed, "action required" relnote |
-| X+4 | v1, v2beta1, v2beta2 | * v2beta1 is deprecated, "action required" relnote |
-| X+5 | v1, v2, v2beta2 | * v2beta1 is removed, "action required" relnote
* v2beta2 is deprecated, "action required" relnote
* v1 is deprecated, "action required" relnote |
-| X+6 | v1, v2 | * v2beta2 is removed, "action required" relnote |
-| X+7 | v1, v2 | |
-| X+8 | v1, v2 | |
-| X+9 | v2 | * v1 is removed, "action required" relnote |
+
+
+
+ | Release |
+ API Versions |
+ Notes |
+
+
+
+
+ | X |
+ v1 |
+ |
+
+
+ | X+1 |
+ v1, v2alpha1 |
+ |
+
+
+ | X+2 |
+ v1, v2alpha2 |
+
+
+ - v2alpha1 is removed, "action required" relnote
+
+ |
+
+
+ | X+3 |
+ v1, v2beta1 |
+
+
+ - v2alpha2 is removed, "action required" relnote
+
+ |
+
+
+ | X+4 |
+ v1, v2beta1, v2beta2 |
+
+
+ - v2beta1 is deprecated, "action required" relnote
+
+ |
+
+
+ | X+5 |
+ v1, v2, v2beta2 |
+
+
+ - v2beta1 is removed, "action required" relnote
+ - v2beta2 is deprecated, "action required" relnote
+ - v1 is deprecated, "action required" relnote
+
+ |
+
+
+ | X+6 |
+ v1, v2 |
+
+
+ - v2beta2 is removed, "action required" relnote
+
+ |
+
+
+ | X+7 |
+ v1, v2 |
+ |
+
+
+ | X+8 |
+ v1, v2 |
+ |
+
+
+ | X+9 |
+ v1, v2 |
+
+
+ - v1 is removed, "action required" relnote
+
+ |
+
+
+
### REST resources (aka API objects)
@@ -147,12 +221,14 @@ follows:
**Rule #5a: CLI elements of user-facing components (e.g. kubectl) must function
after their announced deprecation for no less than:**
+
* **GA: 1 year or 2 releases (whichever is longer)**
* **Beta: 3 months or 1 release (whichever is longer)**
* **Alpha: 0 releases**
**Rule #5b: CLI elements of admin-facing components (e.g. kubelet) must function
after their announced deprecation for no less than:**
+
* **GA: 6 months or 1 release (whichever is longer)**
* **Beta: 3 months or 1 release (whichever is longer)**
* **Alpha: 0 releases**
diff --git a/docs/getting-started-guides/kubeadm.md b/docs/getting-started-guides/kubeadm.md
index d3ae5a2cad..74d2f18906 100644
--- a/docs/getting-started-guides/kubeadm.md
+++ b/docs/getting-started-guides/kubeadm.md
@@ -319,8 +319,9 @@ edit the `kubeadm` dropin for the `kubelet` service (`/etc/systemd/system/kubele
If your cloud provider requires any extra packages installed on host, for example for volume mounting/unmounting, install those packages.
Specify the `--cloud-provider` flag to kubelet and set it to the cloud of your choice. If your cloudprovider requires a configuration
-file, create the file `/etc/kubernetes/cloud-config` on every node and set the values your cloud requires. Also append
-`--cloud-config=/etc/kubernetes/cloud-config` to the kubelet arguments.
+file, create the file `/etc/kubernetes/cloud-config` on every node. The exact format and content of that file depends on the requirements imposed by your cloud provider.
+If you use the `/etc/kubernetes/cloud-config` file, you must append it to the `kubelet` arguments as follows:
+`--cloud-config=/etc/kubernetes/cloud-config`
Lastly, run `kubeadm init --cloud-provider=xxx` to bootstrap your cluster with cloud provider features.
diff --git a/docs/user-guide/kubectl-overview.md b/docs/user-guide/kubectl-overview.md
index 2fa249c5f6..987e154703 100644
--- a/docs/user-guide/kubectl-overview.md
+++ b/docs/user-guide/kubectl-overview.md
@@ -84,6 +84,8 @@ The following table includes a list of all the supported resource types and thei
Resource type | Abbreviated alias
-------------------- | --------------------
`clusters` |
+`clusterrolebindings` |
+`clusterroles` |
`componentstatuses` |`cs`
`configmaps` |`cm`
`daemonsets` |`ds`
@@ -106,6 +108,8 @@ Resource type | Abbreviated alias
`replicasets` |`rs`
`replicationcontrollers` |`rc`
`resourcequotas` |`quota`
+`rolebindings` |
+`roles` |
`secrets` |
`serviceaccounts` |`sa`
`services` |`svc`
diff --git a/docs/user-guide/kubectl/kubectl_config.md b/docs/user-guide/kubectl/kubectl_config.md
index 441db2334a..c19e98d381 100644
--- a/docs/user-guide/kubectl/kubectl_config.md
+++ b/docs/user-guide/kubectl/kubectl_config.md
@@ -14,7 +14,7 @@ Modify kubeconfig files using subcommands like "kubectl config set current-conte
The loading order follows these rules:
1. If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place.
- 2. If $KUBECONFIG environment variable is set, then it is used a list of paths (normal path delimitting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list.
+ 2. If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimitting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list.
3. Otherwise, ${HOME}/.kube/config is used and no merging takes place.
```
diff --git a/docs/user-guide/replicasets.md b/docs/user-guide/replicasets.md
index 769ea58c02..ea3e7bde14 100644
--- a/docs/user-guide/replicasets.md
+++ b/docs/user-guide/replicasets.md
@@ -37,7 +37,6 @@ their ReplicaSets.
A ReplicaSet ensures that a specified number of pod “replicas” are running at any given
time. However, a Deployment is a higher-level concept that manages ReplicaSets and
-
provides declarative updates to pods along with a lot of other useful features.
Therefore, we recommend using Deployments instead of directly using ReplicaSets, unless
you require custom update orchestration or don't require updates at all.
diff --git a/docs/user-guide/volumes.md b/docs/user-guide/volumes.md
index f2b5ff88a0..762518fc8f 100644
--- a/docs/user-guide/volumes.md
+++ b/docs/user-guide/volumes.md
@@ -531,6 +531,39 @@ before you can use it__
See the [Quobyte example](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/examples/volumes/quobyte) for more details.
+## Using subPath
+
+Sometimes, it is useful to share one volume for multiple uses in a single pod. The `volumeMounts.subPath`
+property can be used to specify a sub-path inside the referenced volume instead of its root.
+
+Here is an example of a pod with a LAMP stack (Linux Apache Mysql PHP) using a single, shared volume.
+The HTML contents are mapped to its `html` folder, and the databases will be stored in its `mysql` folder:
+
+```yaml
+apiVersion: v1
+kind: Pod
+metadata:
+ name: my-lamp-site
+spec:
+ containers:
+ - name: mysql
+ image: mysql
+ volumeMounts:
+ - mountPath: /var/lib/mysql
+ name: site-data
+ subPath: mysql
+ - name: php
+ image: php
+ volumeMounts:
+ - mountPath: /var/www/html
+ name: site-data
+ subPath: html
+ volumes:
+ - name: site-data
+ persistentVolumeClaim:
+ claimName: my-lamp-site-data
+```
+
## Resources
The storage media (Disk, SSD, etc.) of an `emptyDir` volume is determined by the