Skip to content

Commit

Permalink
promote PodNodeSelector to stable; document detailed behavior (#7134)
Browse files Browse the repository at this point in the history
* promote PodNodeSelector to stable; document detailed behavior

* respond to feedback
  • Loading branch information
colemickens authored and k8s-ci-robot committed Feb 27, 2018
1 parent e458078 commit eb562c0
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions docs/admin/admission-controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ This admission controller defaults and limits what node selectors may be used wi

#### Configuration File Format

PodNodeSelector uses a configuration file to set options for the behavior of the backend.
`PodNodeSelector` uses a configuration file to set options for the behavior of the backend.
Note that the configuration file format will move to a versioned file in a future release.
This file may be json or yaml and has the following format:

Expand All @@ -445,7 +445,7 @@ podNodeSelectorPluginConfig:
namespace2: <node-selectors-labels>
```

Reference the PodNodeSelector configuration file from the file provided to the API server's command line flag `--admission-control-config-file`:
Reference the `PodNodeSelector` configuration file from the file provided to the API server's command line flag `--admission-control-config-file`:

```yaml
kind: AdmissionConfiguration
Expand All @@ -457,7 +457,7 @@ plugins:
```

#### Configuration Annotation Format
PodNodeSelector uses the annotation key `scheduler.alpha.kubernetes.io/node-selector` to assign node selectors to namespaces.
`PodNodeSelector` uses the annotation key `scheduler.kubernetes.io/node-selector` to assign node selectors to namespaces.

```yaml
apiVersion: v1
Expand All @@ -468,6 +468,19 @@ metadata:
name: namespace3
```

#### Internal Behavior
This admission controller has the following behavior:
1. If the `Namespace` has an annotation with a key `scheduler.kubernetes.io/nodeSelector`, use its value as the
node selector.
1. If the namespace lacks such an annotation, use the `clusterDefaultNodeSelector` defined in the `PodNodeSelector`
plugin configuration file as the node selector.
1. Evaluate the pod's node selector against the namespace node selector for conflicts. Conflicts result in rejection.
1. Evaluate the pod's node selector against the namespace-specific whitelist defined the plugin configuration file.
Conflicts result in rejection.

**Note:** `PodTolerationRestriction` is more versatile and powerful than `PodNodeSelector` and can encompass the scenarios supported by `PodNodeSelector`.
{: .note}

### PersistentVolumeClaimResize

This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests.
Expand Down

0 comments on commit eb562c0

Please sign in to comment.