Skip to content

Commit

Permalink
Merge pull request #14984 from kubernetes/dev-1.15
Browse files Browse the repository at this point in the history
Official 1.15 Release Docs
  • Loading branch information
makoscafee authored Jun 19, 2019
2 parents ce80e54 + 455f312 commit b7aa1ac
Show file tree
Hide file tree
Showing 283 changed files with 26,046 additions and 7,087 deletions.
40 changes: 20 additions & 20 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ time_format_blog = "Monday, January 02, 2006"
description = "Production-Grade Container Orchestration"
showedit = true

latest = "v1.14"
latest = "v1.15"

fullversion = "v1.14.0"
version = "v1.14"
fullversion = "v1.15.0"
version = "v1.15"
githubbranch = "master"
docsbranch = "master"
deprecated = false
Expand All @@ -77,10 +77,10 @@ githubWebsiteRepo = "github.com/kubernetes/website"
githubWebsiteRaw = "raw.githubusercontent.com/kubernetes/website"

[[params.versions]]
fullversion = "v1.14.0"
version = "v1.14"
githubbranch = "v1.14.0"
docsbranch = "release-1.14"
fullversion = "v1.15.0"
version = "v1.15"
githubbranch = "v1.15.0"
docsbranch = "release-1.15"
url = "https://kubernetes.io"

[params.pushAssets]
Expand All @@ -95,33 +95,33 @@ js = [
]

[[params.versions]]
fullversion = "v1.13.4"
fullversion = "v1.14.3"
version = "v1.14"
githubbranch = "v1.14.3"
docsbranch = "release-1.14"
url = "https://v1-14.docs.kubernetes.io"

[[params.versions]]
fullversion = "v1.13.7"
version = "v1.13"
githubbranch = "v1.13.4"
githubbranch = "v1.13.7"
docsbranch = "release-1.13"
url = "https://v1-13.docs.kubernetes.io"

[[params.versions]]
fullversion = "v1.12.6"
fullversion = "v1.12.9"
version = "v1.12"
githubbranch = "v1.12.6"
githubbranch = "v1.12.9"
docsbranch = "release-1.12"
url = "https://v1-12.docs.kubernetes.io"

[[params.versions]]
fullversion = "v1.11.8"
fullversion = "v1.11.10"
version = "v1.11"
githubbranch = "v1.11.8"
githubbranch = "v1.11.10"
docsbranch = "release-1.11"
url = "https://v1-11.docs.kubernetes.io"

[[params.versions]]
fullversion = "v1.10.13"
version = "v1.10"
githubbranch = "v1.10.13"
docsbranch = "release-1.10"
url = "https://v1-10.docs.kubernetes.io"

# Language definitions.

[languages]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ kubeadm has configuration options to specify configuration information for cloud
in-tree cloud provider can be configured using kubeadm as shown below:

```yaml
apiVersion: kubeadm.k8s.io/v1beta1
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
cloud-provider: "openstack"
cloud-config: "/etc/kubernetes/cloud.conf"
---
apiVersion: kubeadm.k8s.io/v1beta1
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.13.0
apiServer:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,70 @@ The scheduler ensures that the sum of the resource requests of the scheduled Con
For container-level isolation, if a Container's writable layer and logs usage exceeds its storage limit, the Pod will be evicted. For pod-level isolation, if the sum of the local ephemeral storage usage from all containers and also the Pod's emptyDir volumes exceeds the limit, the Pod will be evicted.
### Monitoring ephemeral-storage consumption
When local ephemeral storage is used, it is monitored on an ongoing
basis by the kubelet. The monitoring is performed by scanning each
emptyDir volume, log directories, and writable layers on a periodic
basis. Starting with Kubernetes 1.15, emptyDir volumes (but not log
directories or writable layers) may, at the cluster operator's option,
be managed by use of [project
quotas](http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html).
Project quotas were originally implemented in XFS, and have more
recently been ported to ext4fs. Project quotas can be used for both
monitoring and enforcement; as of Kubernetes 1.15, they are available
as alpha functionality for monitoring only.
Quotas are faster and more accurate than directory scanning. When a
directory is assigned to a project, all files created under a
directory are created in that project, and the kernel merely has to
keep track of how many blocks are in use by files in that project. If
a file is created and deleted, but with an open file descriptor, it
continues to consume space. This space will be tracked by the quota,
but will not be seen by a directory scan.
Kubernetes uses project IDs starting from 1048576. The IDs in use are
registered in `/etc/projects` and `/etc/projid`. If project IDs in
this range are used for other purposes on the system, those project
IDs must be registered in `/etc/projects` and `/etc/projid` to prevent
Kubernetes from using them.

To enable use of project quotas, the cluster operator must do the
following:

* Enable the `LocalStorageCapacityIsolationFSQuotaMonitoring=true`
feature gate in the kubelet configuration. This defaults to `false`
in Kubernetes 1.15, so must be explicitly set to `true`.

* Ensure that the root partition (or optional runtime partition) is
built with project quotas enabled. All XFS filesystems support
project quotas, but ext4 filesystems must be built specially.

* Ensure that the root partition (or optional runtime partition) is
mounted with project quotas enabled.

#### Building and mounting filesystems with project quotas enabled

XFS filesystems require no special action when building; they are
automatically built with project quotas enabled.

Ext4fs filesystems must be built with quotas enabled, then they must
be enabled in the filesystem:

```
% sudo mkfs.ext4 other_ext4fs_args... -E quotatype=prjquota /dev/block_device
% sudo tune2fs -O project -Q prjquota /dev/block_device
```

To mount the filesystem, both ext4fs and XFS require the `prjquota`
option set in `/etc/fstab`:

```
/dev/block_device /var/kubernetes_data defaults,prjquota 0 0
```


## Extended resources

Extended resources are fully-qualified resource names outside the
Expand Down
56 changes: 56 additions & 0 deletions content/en/docs/concepts/configuration/pod-priority-preemption.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ when a cluster is under resource pressure. For this reason, it is not
recommended to disable preemption.
{{< /note >}}

{{< note >}}
In Kubernetes 1.15 and later,
if the feature `NonPreemptingPriority` is enabled,
PriorityClasses have the option to set `preemptionPolicy: Never`.
This will prevent pods of that PriorityClass from preempting other pods.
{{< /note >}}

In Kubernetes 1.11 and later, preemption is controlled by a kube-scheduler flag
`disablePreemption`, which is set to `false` by default.
If you want to disable preemption despite the above note, you can set
Expand Down Expand Up @@ -145,6 +152,55 @@ globalDefault: false
description: "This priority class should be used for XYZ service pods only."
```

### Non-preempting PriorityClasses (alpha) {#non-preempting-priority-class}

1.15 adds the `PreemptionPolicy` field as an alpha feature.
It is disabled by default in 1.15,
and requires the `NonPreemptingPriority`[feature gate](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/
) to be enabled.

Pods with `PreemptionPolicy: Never` will be placed in the scheduling queue
ahead of lower-priority pods,
but they cannot preempt other pods.
A non-preempting pod waiting to be scheduled will stay in the scheduling queue,
until sufficient resources are free,
and it can be scheduled.
Non-preempting pods,
like other pods,
are subject to scheduler back-off.
This means that if the scheduler tries these pods and they cannot be scheduled,
they will be retried with lower frequency,
allowing other pods with lower priority to be scheduled before them.

Non-preempting pods may still be preempted by other,
high-priority pods.

`PreemptionPolicy` defaults to `PreemptLowerPriority`,
which will allow pods of that PriorityClass to preempt lower-priority pods
(as is existing default behavior).
If `PreemptionPolicy` is set to `Never`,
pods in that PriorityClass will be non-preempting.

An example use case is for data science workloads.
A user may submit a job that they want to be prioritized above other workloads,
but do not wish to discard existing work by preempting running pods.
The high priority job with `PreemptionPolicy: Never` will be scheduled
ahead of other queued pods,
as soon as sufficient cluster resources "naturally" become free.

#### Example Non-preempting PriorityClass

```yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority-nonpreempting
value: 1000000
preemptionPolicy: Never
globalDefault: false
description: "This priority class will not cause other pods to be preempted."
```

## Pod priority

After you have one or more PriorityClasses, you can create Pods that specify one
Expand Down
Loading

0 comments on commit b7aa1ac

Please sign in to comment.