Skip to content

Commit a601ca7

Browse files
committed
Merge branch 'master' into release-1.8
2 parents 2d96ffb + 7b2ed94 commit a601ca7

File tree

7 files changed

+151
-41
lines changed

7 files changed

+151
-41
lines changed

_data/tasks.yml

+1
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ toc:
147147
section:
148148
- docs/tasks/administer-cluster/calico-network-policy.md
149149
- docs/tasks/administer-cluster/cilium-network-policy.md
150+
- docs/tasks/administer-cluster/kube-router-network-policy.md
150151
- docs/tasks/administer-cluster/romana-network-policy.md
151152
- docs/tasks/administer-cluster/weave-network-policy.md
152153
- docs/tasks/administer-cluster/change-pv-reclaim-policy.md

docs/admin/admission-controllers.md

+120-39
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ API server prior to persistence of the object, but after the request is authenti
1919
and authorized. The plug-in code is in the API server process
2020
and must be compiled into the binary in order to be used at this time.
2121

22-
Each admission control plug-in runs in sequence before a request is accepted into the cluster. If
22+
Each admission control plug-in is run in sequence before a request is accepted into the cluster. If
2323
any of the plug-ins in the sequence reject the request, the entire request is rejected immediately
2424
and an error is returned to the end-user.
2525

@@ -59,6 +59,28 @@ required.
5959

6060
Rejects all requests. Used for testing.
6161

62+
### DefaultStorageClass
63+
64+
This plug-in observes creation of `PersistentVolumeClaim` objects that do not request any specific storage class
65+
and automatically adds a default storage class to them.
66+
This way, users that do not request any special storage class do not need to care about them at all and they
67+
will get the default one.
68+
69+
This plug-in does not do anything when no default storage class is configured. When more than one storage
70+
class is marked as default, it rejects any creation of `PersistentVolumeClaim` with an error and administrator
71+
must revisit `StorageClass` objects and mark only one as default.
72+
This plugin ignores any `PersistentVolumeClaim` updates; it acts only on creation.
73+
74+
See [persistent volume](/docs/user-guide/persistent-volumes) documentation about persistent volume claims and
75+
storage classes and how to mark a storage class as default.
76+
77+
### DefaultTolerationSeconds
78+
79+
This plug-in sets the default forgiveness toleration for pods to tolerate
80+
the taints `notready:NoExecute` and `unreachable:NoExecute` for 5 minutes,
81+
if the pods don't already have toleration for taints `notready:NoExecute` or
82+
`unreachable:NoExecute`.
83+
6284
### DenyExecOnPrivileged (deprecated)
6385

6486
This plug-in will intercept all requests to exec a command in a pod if that pod has a privileged container.
@@ -78,6 +100,15 @@ If your cluster supports containers that run with escalated privileges, and you
78100
restrict the ability of end-users to exec commands in those containers, we strongly encourage
79101
enabling this plug-in.
80102

103+
### GenericAdmissionWebhook (alpha)
104+
105+
This plug-in is related to the [Dynamic Admission Control](/docs/admin/extensible-admission-controllers)
106+
introduced in v1.7.
107+
The plug-in calls the webhooks configured via `ExternalAdmissionHookConfiguration`,
108+
and only admits the operation if all the webhooks admit it.
109+
Currently, the plug-in always fails open.
110+
In other words, it ignores the failed calls to a webhook.
111+
81112
### ImagePolicyWebhook
82113

83114
The ImagePolicyWebhook plug-in allows a backend webhook to make admission decisions. You enable this plug-in by setting the admission-control option as follows:
@@ -190,25 +221,29 @@ Examples of information you might put here are:
190221

191222
In any case, the annotations are provided by the user and are not validated by Kubernetes in any way. In the future, if an annotation is determined to be widely useful, it may be promoted to a named field of ImageReviewSpec.
192223

193-
### ServiceAccount
194-
195-
This plug-in implements automation for [serviceAccounts](/docs/user-guide/service-accounts).
196-
We strongly recommend using this plug-in if you intend to make use of Kubernetes `ServiceAccount` objects.
224+
### Initializers (alpha)
197225

198-
### SecurityContextDeny
226+
This plug-in is introduced in v1.7.
227+
The plug-in determines the initializers of a resource based on the existing
228+
`InitializerConfiguration`s. It sets the pending initializers by modifying the
229+
metadata of the resource to be created.
230+
For more information, please check [Dynamic Admission Control](/docs/admin/extensible-admission-controllers).
199231

200-
This plug-in will deny any pod that attempts to set certain escalating [SecurityContext](/docs/user-guide/security-context) fields. This should be enabled if a cluster doesn't utilize [pod security policies](/docs/user-guide/pod-security-policy) to restrict the set of values a security context can take.
232+
### InitialResources (experimental)
201233

202-
### ResourceQuota
234+
This plug-in observes pod creation requests. If a container omits compute resource requests and limits,
235+
then the plug-in auto-populates a compute resource request based on historical usage of containers running the same image.
236+
If there is not enough data to make a decision the Request is left unchanged.
237+
When the plug-in sets a compute resource request, it does this by *annotating* the
238+
the pod spec rather than mutating the `container.resources` fields.
239+
The annotations added contain the information on what compute resources were auto-populated.
203240

204-
This plug-in will observe the incoming request and ensure that it does not violate any of the constraints
205-
enumerated in the `ResourceQuota` object in a `Namespace`. If you are using `ResourceQuota`
206-
objects in your Kubernetes deployment, you MUST use this plug-in to enforce quota constraints.
241+
See the [InitialResouces proposal](https://git.k8s.io/community/contributors/design-proposals/initial-resources.md) for more details.
207242

208-
See the [resourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md) and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for more details.
243+
### LimitPodHardAntiAffinity
209244

210-
It is strongly encouraged that this plug-in is configured last in the sequence of admission control plug-ins. This is
211-
so that quota is not prematurely incremented only for the request to be rejected later in admission control.
245+
This plug-in denies any pod that defines `AntiAffinity` topology key other than
246+
`kubernetes.io/hostname` in `requiredDuringSchedulingRequiredDuringExecution`.
212247

213248
### LimitRanger
214249

@@ -220,14 +255,18 @@ applies a 0.1 CPU requirement to all Pods in the `default` namespace.
220255

221256
See the [limitRange design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md) and the [example of Limit Range](/docs/tasks/configure-pod-container/limit-range/) for more details.
222257

223-
### InitialResources (experimental)
258+
### NamespaceAutoProvision
224259

225-
This plug-in observes pod creation requests. If a container omits compute resource requests and limits,
226-
then the plug-in auto-populates a compute resource request based on historical usage of containers running the same image.
227-
If there is not enough data to make a decision the Request is left unchanged.
228-
When the plug-in sets a compute resource request, it annotates the pod with information on what compute resources it auto-populated.
260+
This plug-in examines all incoming requests on namespaced resources and checks
261+
if the referenced namespace does exist.
262+
It creates a namespace if it cannot be found.
263+
This plug-in is useful in deployments that do not want to restrict creation of
264+
a namespace prior to its usage.
229265

230-
See the [InitialResouces proposal](https://git.k8s.io/community/contributors/design-proposals/initial-resources.md) for more details.
266+
### NamespaceExists
267+
268+
This plug-in checks all requests on namespaced resources other than `Namespace` itself.
269+
If the namespace referenced from a request doesn't exist, the request is rejected.
231270

232271
### NamespaceLifecycle
233272

@@ -238,25 +277,30 @@ three system reserved namespaces `default`, `kube-system`, `kube-public`.
238277
A `Namespace` deletion kicks off a sequence of operations that remove all objects (pods, services, etc.) in that
239278
namespace. In order to enforce integrity of that process, we strongly recommend running this plug-in.
240279

241-
### DefaultStorageClass
280+
### NodeRestriction
242281

243-
This plug-in observes creation of `PersistentVolumeClaim` objects that do not request any specific storage class
244-
and automatically adds a default storage class to them.
245-
This way, users that do not request any special storage class do no need to care about them at all and they
246-
will get the default one.
282+
This plug-in limits the `Node` and `Pod` objects a kubelet can modify. In order to be limited by this admission plugin,
283+
kubelets must use credentials in the `system:nodes` group, with a username in the form `system:node:<nodeName>`.
284+
Such kubelets will only be allowed to modify their own `Node` API object, and only modify `Pod` API objects that are bound to their node.
285+
Future versions may add additional restrictions to ensure kubelets have the minimal set of permissions required to operate correctly.
247286

248-
This plug-in does not do anything when no default storage class is configured. When more than one storage
249-
class is marked as default, it rejects any creation of `PersistentVolumeClaim` with an error and administrator
250-
must revisit `StorageClass` objects and mark only one as default.
251-
This plugin ignores any `PersistentVolumeClaim` updates, it acts only on creation.
287+
### OwnerReferencesPermissionEnforcement
252288

253-
See [persistent volume](/docs/user-guide/persistent-volumes) documentation about persistent volume claims and
254-
storage classes and how to mark a storage class as default.
289+
This plug-in protects the access to the `metadata.ownerReferences` of an object
290+
so that only users with "delete" permission to the object can change it.
291+
This plug-in also protects the access to `metadata.ownerReferences[x].blockOwnerDeletion`
292+
of an object, so that only users with "update" permission to the `finalizers`
293+
subresource of the referenced *owner* can change it.
255294

256-
### DefaultTolerationSeconds
295+
### PersistentVolumeLabel
257296

258-
This plug-in sets the default forgiveness toleration for pods, which have no forgiveness tolerations, to tolerate
259-
the taints `notready:NoExecute` and `unreachable:NoExecute` for 5 minutes.
297+
This plug-in automatically attaches region or zone labels to PersistentVolumes
298+
as defined by the cloud provider, e.g. GCE and AWS.
299+
It helps ensure the Pods and the PersistentVolumes mounted are in the same
300+
region and/or zone.
301+
If the plug-in doesn't support automatic labelling your PersistentVolumes, you
302+
may need to add the labels manually to prevent pods from mounting volumes from
303+
a different zone.
260304

261305
### PodNodeSelector
262306

@@ -288,6 +332,12 @@ metadata:
288332
name: namespace3
289333
```
290334

335+
### PodPreset
336+
337+
This plug-in injects a pod with the fields specified in a matching PodPreset.
338+
See also [Inject Information into Pods Using a PodPreset](/docs/tasks/inject-data-application/podpreset)
339+
for more information.
340+
291341
### PodSecurityPolicy
292342

293343
This plug-in acts on creation and modification of the pod and determines if it should be admitted
@@ -299,12 +349,43 @@ extensions group (`--runtime-config=extensions/v1beta1/podsecuritypolicy=true`).
299349
See also [Pod Security Policy documentation](/docs/concepts/policy/pod-security-policy/)
300350
for more information.
301351

302-
### NodeRestriction
352+
### PodTolerationRestriction
303353

304-
This plug-in limits the `Node` and `Pod` objects a kubelet can modify. In order to be limited by this admission plugin,
305-
kubelets must use credentials in the `system:nodes` group, with a username in the form `system:node:<nodeName>`.
306-
Such kubelets will only be allowed to modify their own `Node` API object, and only modify `Pod` API objects that are bound to their node.
307-
Future versions may add additional restrictions to ensure kubelets have the minimal set of permissions required to operate correctly.
354+
This plug-in first verifies any conflict between a pod's tolerations and its
355+
namespace's tolerations, and rejects the pod request if there is a conflict.
356+
It then merges the namespace's tolerations into the pod's tolerations.
357+
The resulting tolerations are checked against the namespace's whitelist of
358+
tolerations. If the check succeeds, the pod request is admitted otherwise
359+
rejected.
360+
361+
If the pod's namespace does not have any associated default or whitelist of
362+
tolerations, then the cluster-level default or whitelist of tolerations are used
363+
instead if specified.
364+
365+
Tolerations to a namespace are assigned via the
366+
`scheduler.alpha.kubernetes.io/defaultTolerations` and
367+
`scheduler.alpha.kubernetes.io/tolerationsWhitelist`
368+
annotation keys.
369+
370+
### ResourceQuota
371+
372+
This plug-in will observe the incoming request and ensure that it does not violate any of the constraints
373+
enumerated in the `ResourceQuota` object in a `Namespace`. If you are using `ResourceQuota`
374+
objects in your Kubernetes deployment, you MUST use this plug-in to enforce quota constraints.
375+
376+
See the [resourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md) and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for more details.
377+
378+
It is strongly encouraged that this plug-in is configured last in the sequence of admission control plug-ins. This is
379+
so that quota is not prematurely incremented only for the request to be rejected later in admission control.
380+
381+
### SecurityContextDeny
382+
383+
This plug-in will deny any pod that attempts to set certain escalating [SecurityContext](/docs/user-guide/security-context) fields. This should be enabled if a cluster doesn't utilize [pod security policies](/docs/user-guide/pod-security-policy) to restrict the set of values a security context can take.
384+
385+
### ServiceAccount
386+
387+
This plug-in implements automation for [serviceAccounts](/docs/user-guide/service-accounts).
388+
We strongly recommend using this plug-in if you intend to make use of Kubernetes `ServiceAccount` objects.
308389

309390
## Is there a recommended set of plug-ins to use?
310391

docs/getting-started-guides/fedora/fedora_ansible_config.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ cd contrib/ansible
4949

5050
**Tell ansible about each machine and its role in your cluster**
5151

52-
Get the IP addresses from the master and nodes. Add those to the `~/contrib/ansible/inventory` file on the host running Ansible.
52+
Get the IP addresses from the master and nodes. Add those to the `~/contrib/ansible/inventory/localhost.ini` file on the host running Ansible.
5353

5454
```shell
5555
[masters]

docs/getting-started-guides/rkt/index.md

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ This document describes how to run Kubernetes using [rkt](https://github.com/cor
1919

2020
* The [rkt API service](https://coreos.com/rkt/docs/latest/subcommands/api-service.html) must be running on the node.
2121

22+
* You will need [kubelet](/docs/getting-started-guides/scratch/#kubelet) installed on the node, and it's recommended that you run [kube-proxy](/docs/getting-started-guides/scratch/#kube-proxy) on all nodes. This document describes how to set the parameters for kubelet so that it uses rkt as the runtime.
23+
2224
## Pod networking in rktnetes
2325

2426
### Kubernetes CNI networking

docs/tasks/administer-cluster/declare-network-policy.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ You'll need to have a Kubernetes cluster in place, with network policy support.
1313

1414
* [Calico](/docs/tasks/configure-pod-container/calico-network-policy/)
1515
* [Cilium](/docs/tasks/administer-cluster/cilium-network-policy/)
16+
* [Kube-router](/docs/tasks/administer-cluster/kube-router-network-policy/)
1617
* [Romana](/docs/tasks/configure-pod-container/romana-network-policy/)
1718
* [Weave Net](/docs/tasks/configure-pod-container/weave-network-policy/)
1819

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
approvers:
3+
- murali-reddy
4+
title: Use Kube-router for NetworkPolicy
5+
---
6+
7+
{% capture overview %}
8+
This page shows how to use [Kube-router](https://github.com/cloudnativelabs/kube-router) for NetworkPolicy.
9+
{% endcapture %}
10+
11+
{% capture prerequisites %}
12+
You need to have a Kubernetes cluster running. If you do not already have a cluster, you can create one by using any of the cluster installers like Kops, Bootkube, Kubeadm etc.
13+
{% endcapture %}
14+
15+
{% capture steps %}
16+
## Installing Kube-router addon
17+
The Kube-router Addon comes with a Network Policy Controller that watches Kubernetes API server for any NetworkPolicy and pods updated and configures iptables rules and ipsets to allow or block traffic as directed by the policies. Please follow the [trying Kube-router with cluster installers](https://github.com/cloudnativelabs/kube-router/tree/master/Documentation#try-kube-router-with-cluster-installers) guide to install Kube-router addon.
18+
{% endcapture %}
19+
20+
{% capture whatsnext %}
21+
Once you have installed the Kube-router addon, you can follow the [NetworkPolicy getting started guide](/docs/getting-started-guides/network-policy/walkthrough) to try out Kubernetes NetworkPolicy.
22+
{% endcapture %}
23+
24+
{% include templates/task.md %}
25+

docs/tutorials/stateful-application/basic-stateful-set.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ web-1 gcr.io/google_containers/nginx-slim:0.8
499499
web-2 gcr.io/google_containers/nginx-slim:0.8
500500
{% endraw %}```
501501
502-
`web-0` has had its image updated, but `web-0` and `web-1` still have the original
502+
`web-0` has had its image updated, but `web-1` and `web-2` still have the original
503503
image. Complete the update by deleting the remaining Pods.
504504
505505
```shell

0 commit comments

Comments
 (0)