Commit Graph

8604 Commits

Author SHA1 Message Date
Paul Morie
c0e3efb4db Improve style of kubelet node status test 2016-09-06 09:59:44 -04:00
Kubernetes Submit Queue
c4e2ade371 Merge pull request #31761 from ZTE-PaaS/zhangke-patch-032
Automatic merge from submit-queue

change sourcesSeenLock to sync.RWMutex

seenSources can be accessed concurrently
2016-09-05 23:58:27 -07:00
Ke Zhang
eca14886ac Redundant code process for container_mananger start 2016-09-06 12:56:54 +08:00
Ke Zhang
fb5ec438c4 wrong word of comment in cache.go 2016-09-06 09:57:21 +08:00
Kubernetes Submit Queue
06b6fb5729 Merge pull request #31489 from ZTE-PaaS/zhangke-patch-030
Automatic merge from submit-queue

optimize if-else of setupNode of container_manager_linix

make the code more readable
2016-09-05 17:35:09 -07:00
Kubernetes Submit Queue
b9481c18b4 Merge pull request #31227 from pigmej/typos_englishify_pkg_kubelet
Automatic merge from submit-queue

Fix various typos in pkg/kubelet

Just fixed some typos + "englishify" pkg/kubelet.
2016-09-05 16:11:35 -07:00
Dr. Stefan Schimanski
9a34eeed0f Remove net.ipv4.tcp_max_syn_backlog from sysctl whitelist
This is not namespaced in today's kernels.
2016-09-05 13:04:19 +02:00
Kubernetes Submit Queue
768e83657d Merge pull request #31922 from yujuhong/test_asserts
Automatic merge from submit-queue

kubelet_test.go: use assertions

Switch most of the tests in this file to using  the assert library
(`github.com/stretchr/testify/assert`) in the tests for better readability and
less code in general.
2016-09-03 09:51:36 -07:00
Kubernetes Submit Queue
d22f04186c Merge pull request #32002 from mikedanese/spammy
Automatic merge from submit-queue

lower loglevel of spammy warning

this get's hit all the time on non containervm systems (e.g. anything with new udev where default ethernet device got renamed to enp0s01247uo83249 because that's more user friendly.)

I'm seeing my logs filed with this.
```
Sep 02 20:31:40 instance-1 kubelet-wrapper[7152]: W0902 20:31:40.234051    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:31:50 instance-1 kubelet-wrapper[7152]: W0902 20:31:50.269382    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:00 instance-1 kubelet-wrapper[7152]: W0902 20:32:00.304785    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:10 instance-1 kubelet-wrapper[7152]: W0902 20:32:10.329420    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:20 instance-1 kubelet-wrapper[7152]: W0902 20:32:20.363680    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:30 instance-1 kubelet-wrapper[7152]: W0902 20:32:30.402619    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:40 instance-1 kubelet-wrapper[7152]: W0902 20:32:40.429717    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:32:50 instance-1 kubelet-wrapper[7152]: W0902 20:32:50.459636    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:00 instance-1 kubelet-wrapper[7152]: W0902 20:33:00.484305    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:10 instance-1 kubelet-wrapper[7152]: W0902 20:33:10.528655    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:20 instance-1 kubelet-wrapper[7152]: W0902 20:33:20.564380    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:30 instance-1 kubelet-wrapper[7152]: W0902 20:33:30.589506    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:40 instance-1 kubelet-wrapper[7152]: W0902 20:33:40.618750    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:33:50 instance-1 kubelet-wrapper[7152]: W0902 20:33:50.643367    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:00 instance-1 kubelet-wrapper[7152]: W0902 20:34:00.678746    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:10 instance-1 kubelet-wrapper[7152]: W0902 20:34:10.712398    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:20 instance-1 kubelet-wrapper[7152]: W0902 20:34:20.738242    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:30 instance-1 kubelet-wrapper[7152]: W0902 20:34:30.764254    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:40 instance-1 kubelet-wrapper[7152]: W0902 20:34:40.789706    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:34:50 instance-1 kubelet-wrapper[7152]: W0902 20:34:50.822828    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:00 instance-1 kubelet-wrapper[7152]: W0902 20:35:00.857558    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:10 instance-1 kubelet-wrapper[7152]: W0902 20:35:10.893635    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:20 instance-1 kubelet-wrapper[7152]: W0902 20:35:20.920920    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:30 instance-1 kubelet-wrapper[7152]: W0902 20:35:30.955334    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:40 instance-1 kubelet-wrapper[7152]: W0902 20:35:40.988821    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:35:51 instance-1 kubelet-wrapper[7152]: W0902 20:35:51.027433    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:01 instance-1 kubelet-wrapper[7152]: W0902 20:36:01.065433    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:11 instance-1 kubelet-wrapper[7152]: W0902 20:36:11.104807    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:21 instance-1 kubelet-wrapper[7152]: W0902 20:36:21.137300    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:31 instance-1 kubelet-wrapper[7152]: W0902 20:36:31.170241    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:41 instance-1 kubelet-wrapper[7152]: W0902 20:36:41.205549    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:36:51 instance-1 kubelet-wrapper[7152]: W0902 20:36:51.246228    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:37:01 instance-1 kubelet-wrapper[7152]: W0902 20:37:01.283743    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:37:11 instance-1 kubelet-wrapper[7152]: W0902 20:37:11.322205    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
Sep 02 20:37:21 instance-1 kubelet-wrapper[7152]: W0902 20:37:21.358846    7155 summary.go:352] Missing default interface "eth0" for node:instance-1
```
2016-09-02 18:51:10 -07:00
Kubernetes Submit Queue
1e21eda604 Merge pull request #31197 from freehan/kubenethairpin
Automatic merge from submit-queue

Deprecate the old cbr0 and flannel networking modes

fixes: #19766
2016-09-02 18:51:05 -07:00
Kubernetes Submit Queue
ffc12b349f Merge pull request #32000 from pmorie/node-update-status
Automatic merge from submit-queue

Update node status instead of node in kubelet

#31730 added code for the Kubelet to reconcile the existing and new nodes in order to annotate existing nodes with the annotation for controller-managed attach-detach.  However, it used `Update` instead of `UpdateStatus`, which changes the operations the node's token needs to be permitted to use.  Using `UpdateStatus` is functionally equivalent and maintains the same set of permissions nodes need to have today.

I'm adding this with the 1.4 milestone because it is a follow-on to a 1.4 PR and fixes a downstream bug (which won't surface to Kube).
2016-09-02 16:56:14 -07:00
Euan Kemp
807d7ba8ec rkt: Remove recommended rkt version
This has been unhelpful logspam forever basically. We always want newer
versions of rkt to be viable options, and often they have bugfixes as
well.
2016-09-02 15:52:37 -07:00
Minhan Xia
fd4c947de9 correct typo in kubenet config 2016-09-02 14:33:34 -07:00
Kubernetes Submit Queue
be290b5904 Merge pull request #31931 from freehan/kubenetcheck
Automatic merge from submit-queue

kubenet checks required cni plugins are present

related to #31215
2016-09-02 14:32:08 -07:00
Mike Danese
39d190e983 lower loglevel of spammy warning 2016-09-02 13:34:29 -07:00
Paul Morie
67387632dc Update node status instead of node in kubelet 2016-09-02 16:24:39 -04:00
Paul Morie
bd83f8b273 Add positive logging for GC events 2016-09-02 14:09:02 -04:00
Kubernetes Submit Queue
88c7e25f72 Merge pull request #31923 from bprashanth/logging
Automatic merge from submit-queue

Adding logging and fix test race

Fixes https://github.com/kubernetes/kubernetes/issues/31552, adds clarity for https://github.com/kubernetes/kubernetes/issues/29449

Janet for the job e2e and girish for services. P1 for flake.
2016-09-01 19:50:58 -07:00
bprashanth
a0c0dcd8bd Log pod ip at V(2) 2016-09-01 17:33:24 -07:00
Yu-Ju Hong
013f7e3c46 kubelet_test.go: use assertions
Switch most of the tests in this file to using  the assert/require library
(in `github.com/stretchr/testify`) in the tests for better readability and
less code in general.
2016-09-01 17:21:48 -07:00
Minhan Xia
20ed879faa kubenet checks required cni plugins are present 2016-09-01 17:16:05 -07:00
Kubernetes Submit Queue
4e1ff53bb2 Merge pull request #31730 from pmorie/kubelet-attach-detach-update
Automatic merge from submit-queue

Make it possible to enable controller-managed attach-detach on existing nodes

Fixes #31673.  Now, if a node already exists with the given name on Kubelet startup, the Kubelet will reconcile the value of the controller-managed-attach-detach annotation so that existing nodes can have this feature turned on and off by changing the Kubelet configuration.

cc @kubernetes/sig-storage @kubernetes/rh-cluster-infra
2016-09-01 07:31:18 -07:00
Paul Morie
1805d30b67 Reconcile value of controller-managed attach-detach annotation on existing nodes in Kubelet startup 2016-08-31 17:04:54 -04:00
Tim St. Clair
3808243b9e Append "AppArmor enabled" to the Node ready condition message 2016-08-31 09:27:47 -07:00
Ke Zhang
29edf62778 change sourcesSeenLock to sync.RWMutex 2016-08-31 09:10:14 +08:00
Jedrzej Nowak
9e51eea6a3 Fix various typos in pkg/kubelet 2016-08-30 22:57:47 +02:00
Kubernetes Submit Queue
ec061b81d0 Merge pull request #31660 from mtaufen/un-ref-KubeletConfiguration-on-kubelet
Automatic merge from submit-queue

Make kubeletConfiguration field on Kubelet struct a value type
2016-08-30 10:46:48 -07:00
Yu-Ju Hong
a49d28710a Extend PLEG to handle pod sandboxes
PLEG will treat them as if they are regular containers and detect changes the
same manner. Note that this makes an assumption that container IDs will not
collide with the podsandbox IDs.
2016-08-30 09:54:24 -07:00
Maciej Kwiek
a2472c2a4e Pod creation moved outside of docker manager tests
Also one deprecated TODO deleted
2016-08-30 13:30:26 +03:00
Kubernetes Submit Queue
17787eb6f2 Merge pull request #31557 from timstclair/aa-event
Automatic merge from submit-queue

Include security options in the container created event

New container creation events look like:
```
Created container with docker id /k8s_bar2.a4; Security:[seccomp=sub/subtest(md5:07c9bcb4db631f7ca191d6e0bca49f76)]

Created container with docker id /k8s_bar2.a4; Security:[seccomp=unconfined apparmor=foo-profile]
```

The goal is to provide enough information to confirm that the requseted security constraints were honored.

For https://github.com/kubernetes/kubernetes/issues/31284

/cc @dchen1107 @thockin @jfrazelle @pweil- @pmorie

---

Justification for v1.4:

- Risk: low. This appends some additional information to a human readable message. A bug here would probably not break any functionality
- Roll-back: I don't anticipate any more changes to this area of the code. No functionality depends on this change.
- Cost of not including: Users don't get any (positive) confirmation that the AppArmor or Seccomp profile they requested were actually enabled.
2016-08-30 01:35:33 -07:00
Kubernetes Submit Queue
64f25e1f46 Merge pull request #31531 from pmorie/kubelet-attach-detach-log
Automatic merge from submit-queue

Add log message in Kubelet when controller attach/detach is enabled

Adds a message to the Kubelet log indicating whether controller attach/detach is enabled for a node.

cc @kubernetes/sig-storage
2016-08-29 23:22:11 -07:00
Michael Taufen
ceb00add97 Make kubeletConfiguration field on Kubelet struct a value type 2016-08-29 18:03:34 -07:00
Angus Salkeld
f785f3d3ef Clean up IPTables caps i.e.: sed -i "s/Iptables/IPTables/g" 2016-08-29 10:34:42 +10:00
Kubernetes Submit Queue
cdbc3b56eb Merge pull request #31523 from derekwaynecarr/imagefs-observations
Automatic merge from submit-queue

Set imagefs rank and reclaim functions when nodefs+imagefs share comm…

Fixes #31192 

I decided that the behavior should match the current output of the kubelet summary API.  With no dedicated imagefs, the ranking and reclaim functions will match the nodefs ranking and reclaim functions.

/cc @ronnielai @vishh
2016-08-27 02:58:42 -07:00
Kubernetes Submit Queue
087d431409 Merge pull request #31401 from yujuhong/resource_name
Automatic merge from submit-queue

Print out resource name when evicting pods

This fixes #31397


/cc @derekwaynecarr
2016-08-26 18:55:21 -07:00
Tim St. Clair
785c83cc2d Include security options in the container created event 2016-08-26 15:32:48 -07:00
Michael Taufen
b9ad337bbd Rename ConnectToDockerOrDie to CreateDockerClientOrDie
This function does not actually attempt to connect to the docker daemon,
it just creates a client object that can be used to do so later. The old
name was confusing, as it implied that a failure to touch the docker daemon
could cause program termination (rather than just a failure to create the
client).
2016-08-26 11:21:07 -07:00
Paul Morie
3b23b9ba9f Add log message in Kubelet when controller attach/detach is enabled 2016-08-26 12:28:37 -04:00
derekwaynecarr
6a7eb7b420 Set imagefs rank and reclaim functions when nodefs+imagefs share common device 2016-08-26 11:08:43 -04:00
Kubernetes Submit Queue
eeac23282d Merge pull request #31446 from liggitt/log-streaming
Automatic merge from submit-queue

Fix hang/websocket timeout when streaming container log with no content

When streaming and following a container log, no response headers are sent from the kubelet `containerLogs` endpoint until the first byte of content is written to the log. This propagates back to the API server, which also will not send response headers until it gets response headers from the kubelet. That includes upgrade headers, which means a websocket connection upgrade is not performed and can time out.

To recreate, create a busybox pod that runs `/bin/sh -c 'sleep 30 && echo foo && sleep 10'`

As soon as the pod starts, query the kubelet API:
```
curl -N -k -v 'https://<node>:10250/containerLogs/<ns>/<pod>/<container>?follow=true&limitBytes=100'
```

or the master API:
```
curl -N -k -v 'http://<master>:8080/api/v1/<ns>/pods/<pod>/log?follow=true&limitBytes=100'
```

In both cases, notice that the response headers are not sent until the first byte of log content is available.

This PR:
* does a 0-byte write prior to handing off to the container runtime stream copy. That commits the response header, even if the subsequent copy blocks waiting for the first byte of content from the log.
* fixes a bug with the "ping" frame sent to websocket streams, which was not respecting the requested protocol (it was sending a binary frame to a websocket that requested a base64 text protocol)
* fixes a bug in the limitwriter, which was not propagating 0-length writes, even before the writer's limit was reached
2016-08-26 06:09:43 -07:00
Kubernetes Submit Queue
9deb18b989 Merge pull request #31378 from yifan-gu/rkt_fetch_no_store
Automatic merge from submit-queue

rkt: Force `rkt fetch` to fetch from remote to conform the image pull policy.

Fix https://github.com/kubernetes/kubernetes/issues/27646

Use `--no-store` option for `rkt fetch` to force it to fetch from remote.
However, `--no-store` will fetch the remote image regardless of whether the content of the image has changed or not. 
This causes performance downgrade when the image tag is ':latest' and the image pull policy is 'always'. 
The issue is tracked in https://github.com/coreos/rkt/issues/2937.
2016-08-26 01:53:20 -07:00
Kubernetes Submit Queue
feb4d2004a Merge pull request #31064 from soundcloud/grobie/filter-internal-labels
Automatic merge from submit-queue

Filter internal Kubernetes labels from Prometheus metrics

**What this PR does / why we need it**:

Kubernetes uses Docker labels as storage for some internal labels. The
majority of these labels are not meaningful metric labels and a few of
them are even harmful as they're not static and cause wrong aggregation
results.

This change provides a custom labels func to only attach meaningful
labels to cAdvisor exported metrics.

**Which issue this PR fixes**

google/cadvisor#1312

**Special notes for your reviewer**:

Depends on google/cadvisor#1429. Once that is merged, I'll update the vendor update commit.

**Release note**:

```release-note
Remove environment variables and internal Kubernetes Docker labels from cAdvisor Prometheus metric labels.

Old behavior:

- environment variables explicitly whitelisted via --docker-env-metadata-whitelist were exported as `container_env_*=*`. Default is zero so by default non were exported
- all docker labels were exported as `container_label_*=*`

New behavior:

- Only `container_name`, `pod_name`, `namespace`, `id`, `image`, and `name` labels are exposed
- no environment variables will be exposed ever via /metrics, even if whitelisted
```

---

Given that we have full control over the exported label set, I shortened the pod_name, pod_namespace and container_name label names. Below an example of the change (reformatted for readability).

```
# BEFORE
container_cpu_cfs_periods_total{
  container_label_io_kubernetes_container_hash="5af8c3b4",
  container_label_io_kubernetes_container_name="sync",
  container_label_io_kubernetes_container_restartCount="1",
  container_label_io_kubernetes_container_terminationMessagePath="/dev/termination-log",
  container_label_io_kubernetes_pod_name="popularsearches-web-3165456836-2bfey",
  container_label_io_kubernetes_pod_namespace="popularsearches",
  container_label_io_kubernetes_pod_terminationGracePeriod="30",
  container_label_io_kubernetes_pod_uid="6a291e48-47c4-11e6-84a4-c81f66bdf8bd",
  id="/docker/68e1f15353921f4d6d4d998fa7293306c4ac828d04d1284e410ddaa75cf8cf25",
  image="redacted.com/popularsearches:42-16-ba6bd88",
  name="k8s_sync.5af8c3b4_popularsearches-web-3165456836-2bfey_popularsearches_6a291e48-47c4-11e6-84a4-c81f66bdf8bd_c02d3775"
} 72819

# AFTER
container_cpu_cfs_periods_total{
  container_name="sync",
  pod_name="popularsearches-web-3165456836-2bfey",
  namespace="popularsearches",
  id="/docker/68e1f15353921f4d6d4d998fa7293306c4ac828d04d1284e410ddaa75cf8cf25",
  image="redacted.com/popularsearches:42-16-ba6bd88",
  name="k8s_sync.5af8c3b4_popularsearches-web-3165456836-2bfey_popularsearches_6a291e48-47c4-11e6-84a4-c81f66bdf8bd_c02d3775"
} 72819
```

Feedback requested on:
* Label names. Other suggestions? Should we keep these very long ones?
* Do we need to export io.kubernetes.pod.uid? It makes working with the metrics a bit more complicated and the pod name is already unique at any time (but not over time). The UID is aslo part of `name`.

As discussed with @timstclair, this should be added to v1.4 as the current labels are harmful.

PTAL @jimmidyson @fabxc @vishh
2016-08-25 21:11:10 -07:00
Ke Zhang
86163979f4 optimize if-else of setupNode of container_manager_linix 2016-08-26 10:30:39 +08:00
Kubernetes Submit Queue
d3ecad111e Merge pull request #28717 from freehan/ebtable
Automatic merge from submit-queue

Filter duplicate network packets in promiscuous bridge mode (with ebtables)

also fixes: #30783
2016-08-25 19:12:09 -07:00
Yifan Gu
de402ac2c5 rkt: Force rkt fetch to fetch from remote to conform the fetch policy. 2016-08-25 14:44:44 -07:00
Yu-Ju Hong
a072bda6fd Print out resource name when evicting pods 2016-08-25 14:11:21 -07:00
Jordan Liggitt
0deddb1a62 Do initial 0-byte write to stdout when streaming container logs 2016-08-25 14:29:22 -04:00
Michael Taufen
f277205f4f Kubelet Refactoring
This refactor removes the legacy KubeletConfig object and adds a new
KubeletDeps object, which contains injected runtime objects and
separates them from static config. It also reduces NewMainKubelet to two
arguments: a KubeletConfiguration and a KubeletDeps.

Some mesos and kubemark code was affected by this change, and has been
modified accordingly.

And a few final notes:

KubeletDeps:
KubeletDeps will be a temporary bin for things we might consider
"injected dependencies", until we have a better dependency injection
story for the Kubelet. We will have to discuss this eventually.

RunOnce:
We will likely not pull new KubeletConfiguration from the API server
when in runonce mode, so it doesn't make sense to make this something
that can be configured centrally. We will leave it as a flag-only option
for now. Additionally, it is increasingly looking like nobody actually uses the
Kubelet's runonce mode anymore, so it may be a candidate for deprecation
and removal.
2016-08-25 10:57:31 -07:00
Kubernetes Submit Queue
6901a00078 Merge pull request #31286 from yifan-gu/rkt_privileged
Automatic merge from submit-queue

rkt: Improve support for privileged pod (pod whose all containers are privileged) 

Fix https://github.com/kubernetes/kubernetes/issues/31100

This takes advantage of https://github.com/coreos/rkt/pull/2983 . By appending the new `--all-run` insecure-options to `rkt run-prepared` command when all the containers are privileged. The pod now gets more privileged power.
2016-08-25 06:58:43 -07:00
Kubernetes Submit Queue
4ddfc4849a Merge pull request #27180 from sttts/sysctl-implementation
Automatic merge from submit-queue

Add sysctl support

Implementation of proposal https://github.com/kubernetes/kubernetes/pull/26057, feature  https://github.com/kubernetes/features/issues/34

TODO:
- [x] change types.go
- [x] implement docker and rkt support
- [x] add e2e tests
- [x] decide whether we want apiserver validation
- ~~[ ] add documentation~~: api docs exist. Existing PodSecurityContext docs is very light and links back to the api docs anyway: 6684555ed9/docs/user-guide/security-context.md
- [x] change PodSecurityPolicy in types.go
- [x] write admission controller support for PodSecurityPolicy
- [x] write e2e test for PodSecurityPolicy
- [x] make sure we are compatible in the sense of https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api_changes.md
- [x] test e2e with rkt: it only works with kubenet, not with no-op network plugin. The later has no sysctl support.
- ~~[ ] add RunC implementation~~ (~~if that is already in kube,~~ it isn't)
- [x] update whitelist
- [x] switch PSC fields to annotations
- [x] switch PSP fields to annotations
- [x] decide about `--experimental-whitelist-sysctl` flag to be additive or absolute
- [x] decide whether to add a sysctl node whitelist annotation

### Release notes:

```release-note
The pod annotation `security.alpha.kubernetes.io/sysctls` now allows customization of namespaced and well isolated kernel parameters (sysctls), starting with `kernel.shm_rmid_forced`, `net.ipv4.ip_local_port_range`, `net.ipv4.tcp_max_syn_backlog` and `net.ipv4.tcp_syncookies` for Kubernetes 1.4.

The pod annotation  `security.alpha.kubernetes.io/unsafeSysctls` allows customization of namespaced sysctls where isolation is unclear. Unsafe sysctls must be enabled at-your-own-risk on the kubelet with the `--experimental-allowed-unsafe-sysctls` flag. Future versions will improve on resource isolation and more sysctls will be considered safe.
```
2016-08-25 06:21:24 -07:00