Commit Graph

2920 Commits (afa8da2f5b735fbe11ca2cd92ff24698a184679f)

Author SHA1 Message Date
k8s-merge-robot 98af443209 Merge pull request #26398 from euank/various-kubenet-fixes
Automatic merge from submit-queue

Various kubenet fixes (panics and bugs and cidrs, oh my)

This PR fixes the following issues:

1. Corrects an inverse error-check that prevented `shaper.Reset` from ever being called with a correct ip address
2. Fix an issue where `parseCIDR` would fail after a kubelet restart due to an IP being stored instead of a CIDR being stored in the cache.
3. Fix an issue where kubenet could panic in TearDownPod if it was called before SetUpPod (e.g. after a kubelet restart).. because of bug number 1, this didn't happen except in rare situations (see 2 for why such a rare situation might happen)

This adds a test, but more would definitely be useful.
The commits are also granular enough I could split this up more if desired.

I'm also not super-familiar with this code, so review and feedback would be welcome.

Testing done:
```
$ cat examples/egress/egress.yml
 apiVersion: v1
kind: Pod
metadata:
  labels:
    name: egress
  name: egress-output
  annotations: {"kubernetes.io/ingress-bandwidth": "300k"}
spec:
  restartPolicy: Never
  containers:
    - name: egress
      image: busybox
      command: ["sh", "-c", "sleep 60"]
$ cat kubelet.log
...
Running: tc filter add dev cbr0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.5/32 flowid 1:1
# setup
...
Running: tc filter del dev cbr0 parent 1:proto ip prio 1 handle 800::800 u32
# teardown
```

I also did various other bits of manual testing and logging to hunt down the panic and other issues, but don't have anything to paste for that 

cc @dcbw @kubernetes/sig-network
2016-05-29 04:04:22 -07:00
k8s-merge-robot 577cdf937d Merge pull request #26415 from wojtek-t/network_not_ready
Automatic merge from submit-queue

Add a NodeCondition "NetworkUnavaiable" to prevent scheduling onto a node until the routes have been created 

This is new version of #26267 (based on top of that one).

The new workflow is:
- we have an "NetworkNotReady" condition
- Kubelet when it creates a node, it sets it to "true"
- RouteController will set it to "false" when the route is created
- Scheduler is scheduling only on nodes that doesn't have "NetworkNotReady ==true" condition

@gmarek @bgrant0607 @zmerlynn @cjcullen @derekwaynecarr @danwinship @dcbw @lavalamp @vishh
2016-05-29 03:06:59 -07:00
k8s-merge-robot d00dec7825 Merge pull request #26397 from euank/fixReadOnlyRootfsPanic
Automatic merge from submit-queue

rkt: Fix panic in setting ReadOnlyRootFS

What the title says. I wish this method were broken out in a reasonably unit testable way. fixing this panic is more important for the second though, testing will come in a later commit.

I observed the panic in a `./hack/local-up-cluster.sh` run with rkt as the container runtime.

This is also the panic that's failing our jenkins against master ([recent run](https://console.cloud.google.com/m/cloudstorage/b/rktnetes-jenkins/o/logs/kubernetes-e2e-gce/1946/artifacts/jenkins-e2e-minion-group-qjh3/kubelet.log for the log output of a recent run))

cc @tmrts @yifan-gu
2016-05-29 02:17:09 -07:00
k8s-merge-robot 344f26ae69 Merge pull request #26145 from Random-Liu/image-pulling-progress
Automatic merge from submit-queue

Kubelet: Periodically reporting image pulling progress in log

Addresses https://github.com/kubernetes/kubernetes/issues/26075#issuecomment-221129896 and https://github.com/kubernetes/kubernetes/pull/26122#issuecomment-221128397.

This PR changes kube_docker_client to log pulling progress every *10* seconds. We can't print all progress messages into the log, because there are too many. So I make it report newest progress every 10 seconds to reduce log spam.
If the image pulling is too slow or stuck, we'll see image pulling progress unchanged or changed little overtime.

The following is the result if I set the reporting interval to *1* second.
```
I0524 00:53:26.189086  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "17b6a9e179d7: Pulling fs layer "
I0524 00:53:27.189082  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "202e40f8bb3a: Download complete "
I0524 00:53:28.189160  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Downloading [=>                                                 ] 1.474 MB/48.35 MB"
I0524 00:53:29.189156  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Downloading [====>                                              ] 3.931 MB/48.35 MB"
I0524 00:53:30.189089  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Downloading [=========>                                         ] 8.847 MB/48.35 MB"
I0524 00:53:31.189089  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Downloading [==================>                                ] 18.19 MB/48.35 MB"
I0524 00:53:32.189076  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Downloading [=======================================>           ] 38.34 MB/48.35 MB"
I0524 00:53:33.189106  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Extracting [=============>                                     ] 12.78 MB/48.35 MB"
I0524 00:53:34.189067  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Extracting [==================================>                ] 33.42 MB/48.35 MB"
I0524 00:53:35.189083  145099 kube_docker_client.go:252] Pulling image "ubuntu:latest": "487bffc61de6: Extracting [==================================================>] 48.35 MB/48.35 MB"
I0524 00:53:35.376667  145099 kube_docker_client.go:254] Finish pulling image "ubuntu:latest": "Status: Downloaded newer image for ubuntu:latest"
```

Ref image pulling related issue #19077.

[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/.github/PULL_REQUEST_TEMPLATE.md?pixel)]()

@yujuhong @dchen1107 
/cc @kubernetes/sig-node
2016-05-28 13:34:28 -07:00
k8s-merge-robot 350efaf13d Merge pull request #26096 from euank/set-pod-ip
Automatic merge from submit-queue

rkt: Pass through podIP

This is needed for the /etc/hosts mount and the downward API to work.
Furthermore, this is required for the reported `PodStatus` to be
correct.

The `Status` bit mostly worked prior to #25062, and this restores that
functionality in addition to the new functionality.

In retrospect, the regression in status is large enough the prior PR should have included at least some of this; my bad for not realizing the full implications there.

#25902 is needed for downwards api stuff, but either merge order is fine as neither will break badly by itself.

cc @yifan-gu @dcbw
2016-05-28 12:40:39 -07:00
k8s-merge-robot 03fc51f74f Merge pull request #26046 from timoreimann/stabilize-map-order-in-kubectl-describe
Automatic merge from submit-queue

Stabilize map order in kubectl describe

Refs #25251.

Add `SortedResourceNames()` methods to map type aliases in order to achieve stable output order for `kubectl` descriptors.

This affects QoS classes, resource limits, and resource requests.

A few remarks:

1. I couldn't find map usages for described fields other than the ones mentioned above. Then again, I failed to identify those programmatically/systematically. Pointers given, I'd be happy to cover any gaps within this PR or along additional ones.
1. It's somewhat difficult to deterministically test a function that brings reliable ordering to Go maps due to its randomizing nature. None of the possibilities I came up with (rely a "probabilistic testing" against repeatedly created maps, add complexity through additional interfaces) seemed very appealing to me, so I went with testing my `sort.Interface` implementation and the changed logic in `kubectl.describeContainers()`.
1. It's apparently not possible to implement a single function that sorts any map's keys generically in Go without producing lots of boilerplate: a `map[<key type>]interface{}` is different from any other map type and thus requires explicit iteration on the caller site to convert back and forth. Unfortunately, this makes it hard to completely avoid code/test duplication.

Please let me know what you think.
2016-05-28 10:49:57 -07:00
Wojciech Tyczynski fcfaf1a3bd Revert "Fix system container detection in kubelet on systemd" 2016-05-28 16:11:53 +02:00
k8s-merge-robot c730198aad Merge pull request #25982 from derekwaynecarr/fix_stats
Automatic merge from submit-queue

Fix system container detection in kubelet on systemd

```release-note
Fix system container detection in kubelet on systemd.

This fixed environments where CPU and Memory Accounting were not enabled on the unit 
that launched the kubelet or docker from reporting the root cgroup when 
monitoring usage stats for those components.
```

Fixes https://github.com/kubernetes/kubernetes/issues/25909

/cc @kubernetes/sig-node @kubernetes/rh-cluster-infra @vishh @dchen1107
2016-05-28 05:38:15 -07:00
k8s-merge-robot e7a13ac2ad Merge pull request #25902 from euank/changeVolumeMounts
Automatic merge from submit-queue

rkt: Use volumes from RunContainerOptions

This replaces the previous creation of mounts from the `volumeGetter`
with mounts provided via RunContainerOptions.

This is motivated by the fact that the latter has a more complete set of
mounts (e.g. the `/etc/hosts` one created in kubelet.go in the case an IP is available).

This does not induce further e2e failures as far as I can tell.

cc @yifan-gu
2016-05-28 03:58:14 -07:00
k8s-merge-robot 74b20cccc6 Merge pull request #25813 from rrati/kubelet-pods-per-core
Automatic merge from submit-queue

Added pods-per-core to kubelet. #25762

Added --pods-per-core to kubelet

#25762
2016-05-28 03:08:28 -07:00
k8s-merge-robot f32b2582df Merge pull request #26391 from timstclair/containerd
Automatic merge from submit-queue

Move containerd process into docker cgroup for versions >= v1.11

Addresses https://github.com/kubernetes/kubernetes/issues/23397#issuecomment-209583923

/cc @vishh @kubernetes/sig-node
2016-05-27 19:42:48 -07:00
Euan Kemp c83ad19ae9 kubenet: Fix ipv4 validity check
The length of an IP can be 4 or 16, and even if 16 it can be a valid
ipv4 address. This check is the more-correct way to handle this, and it
also provides more granular error messages.
2016-05-27 16:25:14 -07:00
Alex Robinson 91f8c784a0 Merge pull request #21373 from enoodle/read_cadvisor_cloudinfo_in_kubelet
kubelet: reading cloudinfo from cadvisor
2016-05-27 16:14:24 -07:00
Alex Robinson cddf564f3c Merge pull request #24771 from timstclair/event-store
Disable cAdvisor event storage by default
2016-05-27 15:56:13 -07:00
Random-Liu 52a3d8a19d Add unit test for image history cache 2016-05-27 14:49:48 -07:00
Random-Liu 56bde2df9f Cache image history 2016-05-27 14:49:48 -07:00
Alex Robinson 1cca499e92 Merge pull request #26225 from yujuhong/less_noise
Reduce noise in kubelet.log
2016-05-27 14:28:53 -07:00
Euan Kemp abbd0321b2 rkt: Use volumes from RunContainerOptions
This replaces the previous creation of mounts from the `volumeGetter`
with mounts provided via RunContainerOptions.

This is motivated by the fact that the latter has a more complete set of
mounts (e.g. the `/etc/hosts` one created in kubelet.go).
2016-05-27 13:11:47 -07:00
Timothy St. Clair 199e15ab64 Update client connections to try to use http2, except attach, exec, and
port-forward which are customized
2016-05-27 15:08:42 -05:00
Alex Robinson bd0b94efe2 Merge pull request #26029 from luxas/mkdir_all
kubelet: Use MkdirAll instead of Mkdir
2016-05-27 11:40:01 -07:00
Alex Robinson 789b69758e Merge pull request #25688 from sjpotter/rkt_annotations
kubelet: Move common labels out of dockertools package
2016-05-27 11:26:31 -07:00
Euan Kemp 93487867ac kubenet: Update empty ip check
The previous check was incorrect because the `IP.String` method returns
`<nil>` and other non-empty-strings on error conditions.
2016-05-27 10:47:13 -07:00
Euan Kemp c4b8959a75 kubenet: Reduce loglevel of spammy message
When no shaping is enabled, that warning would always be printed.
2016-05-27 10:47:12 -07:00
Euan Kemp 7e0b9bfa66 kubenet: Fix panic when teardown run before setup
Teardown can run before Setup when the kubelet is restarted... in that
case, the shaper was nil and thus calling the shaper resulted in a panic

This fixes that by ensuring the shaper is always set... +1 level of
indirection and all that.
2016-05-27 10:47:12 -07:00
Euan Kemp 2f5e738dc1 kubenet: Fix inconsistent cidr usage/parsing
Before this change, the podCIDRs map contained both cidrs and ips
depending on which code path entered a container into it.

Specifically, SetUpPod would enter a CIDR while GetPodNetworkStatus
would enter an IP.

This normalizes both of them to always enter just IP addresses.

This also removes the now-redundant cidr parsing that was used to get
the ip before
2016-05-27 10:47:12 -07:00
Wojciech Tyczynski be1b57100d Change to NotReadyNetworking and use in scheduler 2016-05-27 19:32:49 +02:00
gmarek 7bdf480340 Node is NotReady until the Route is created 2016-05-27 19:29:51 +02:00
Euan Kemp 766eb6f0f7 kubenet: Fix bug where shaper.Reset wasn't called
The error check was inverse what it should have been, causing
shaper.Reset to only get called with invalid cidrs.
2016-05-27 10:20:43 -07:00
Alex Robinson 07d9dff83c Merge pull request #26208 from freehan/kubenetteardownfix
do not return error if TearDownPod is called twice
2016-05-27 09:59:03 -07:00
Robert Rati 2d487f7c06 Added pods-per-core to kubelet. #25762 2016-05-27 07:10:13 -04:00
Euan Kemp ecfd8f723f rkt: Fix panic in setting ReadOnlyRootFS 2016-05-26 20:43:26 -07:00
Tim St. Clair e4d8dea0d7 Move containerd process into docker cgroup for versions >= v1.11 2016-05-26 17:27:00 -07:00
Alex Mohr aab6c43a33 Merge pull request #25604 from freehan/kubenethostport
Kubenet host-port support through iptables
2016-05-26 15:49:12 -07:00
Alex Mohr 5b1653ec39 Merge pull request #25681 from vishh/lifecycle-probe-logs
Log output of lifecycle hooks on failure
2016-05-26 12:37:02 -07:00
Minhan Xia 0834dc489a do not return error if TearDownPod is called twice 2016-05-26 11:57:22 -07:00
Alex Mohr 4357b8a0a6 Merge pull request #25324 from jfrazelle/add-seccomp
Add Seccomp to Annotations
2016-05-26 10:50:06 -07:00
k8s-merge-robot 98766f4548 Merge pull request #26301 from zmerlynn/wait_proper
Automatic merge from submit-queue

routecontroller: Add wait.NonSlidingUntil, use it

[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/.github/PULL_REQUEST_TEMPLATE.md?pixel)]() Make sure the reconciliation loop kicks in again immediately if it
takes a loooooong time.
2016-05-26 03:29:21 -07:00
Shaya Potter 9dd9f2ad65 move common lables used outside of containr runtime out of dockertools
moved labels and their Get functions to types

aliases kubernetes/types import to kubetypes to use kubelet/types as types
2016-05-25 23:10:19 -07:00
k8s-merge-robot e7022106ff Merge pull request #25719 from tmrts/rk8s/read-only-rootfs
Automatic merge from submit-queue

Use read-only root filesystem capabilities of rkt

Propagates `api.Container.SecurityContext.ReadOnlyRootFileSystem` flag to rkt container runtime.

cc @yifan-gu 

Fixes #23837
2016-05-25 17:58:03 -07:00
k8s-merge-robot f4122477c2 Merge pull request #25712 from asalkeld/docker-logpath
Automatic merge from submit-queue

Use docker containerInfo.LogPath and not manually constructed path

## Pull Request Guidelines

Since the containerInfo has the LogPath in it, let's use that and
not manually construct the path ourselves. This also makes the code
less prone to breaking if docker change this path.

Fixes #23695
2016-05-25 17:57:59 -07:00
k8s-merge-robot 69b90028cf Merge pull request #26086 from smarterclayton/init_ordering
Automatic merge from submit-queue

Ensure that init containers are preserved during pruning

Pods with multiple init containers were getting the wrong containers
pruned. Fix an error message and add a test.

Fixes #26131
2016-05-25 15:38:39 -07:00
Timo Reimann 32aa740fd3 Show resources in pod descriptions by sorted names.
Includes container and QoS resources.
2016-05-25 23:51:37 +02:00
Zach Loafman 3ec25c5425 routecontroller: Add wait.NonSlidingUntil, use it
Make sure the reconciliation loop kicks in again immediately if it
takes a loooooong time.
2016-05-25 13:58:35 -07:00
Euan Kemp 8a2895d88f rkt: Pass through podIP
This is needed for the /etc/hosts mount and the downward API to work.
Furthermore, this is required for the reported `PodStatus` to be
correct.

The `Status` bit mostly worked prior to #25062, and this restores that
functionality in addition to the new functionality.
2016-05-25 11:16:39 -07:00
Euan Kemp be0ccab5c5 networkplugins: Add mock network plugin 2016-05-25 10:07:54 -07:00
k8s-merge-robot 025b017277 Merge pull request #25177 from euank/rkt-alternate-stage1
Automatic merge from submit-queue

rkt: Support alternate stage1's via annotation

This provides a basic implementation for setting a stage1 on a per-pod
basis via an annotation.

This provides a basic implementation for setting a stage1 on a per-pod
basis via an annotation. See discussion here for how this approach was arrived at: https://github.com/kubernetes/kubernetes/issues/23944#issuecomment-212653776

It's possible this feature should be gated behind additional knobs, such
as a kubelet flag to filter allowed stage1s, or a check akin to what
priviliged gets in the apiserver.
Currently, it checks `AllowPrivileged`, as a means to let people disable
this feature, though overloading it as stage1 and privileged isn't
ideal.

Fixes #23944

Testing done (note, unfortunately done with some additional ./cluster changes merged in):

```
$ cat examples/stage1-fly/fly-me-to-the-moon.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: exit
  name: exit-fast
  annotations: {"rkt.alpha.kubernetes.io/stage1-name-override": "coreos.com/rkt/stage1-fly:1.3.0"}
spec:
  restartPolicy: Never
  containers:
    - name: exit
      image: busybox
      command: ["sh", "-c", "ps aux"]
$ kubectl create -f examples/stage1-fly
$ ssh core@minion systemctl status -l --no-pager k8s_2f169b2e-c32a-49e9-a5fb-29ae1f6b4783.service
...
failed
...
May 04 23:33:03 minion rkt[2525]: stage0: error writing /etc/rkt-resolv.conf: open /var/lib/rkt/pods/run/2f169b2e-c32a-49e9-a5fb-29ae1f6b4783/stage1/rootfs/etc/rkt-resolv.conf: no such file or directory
...
# Restart kubelet with allow-privileged=false
$ kubectl create -f examples/stage1-fly
$ kubectl describe exit-fast
...
  1m		19s		5	{kubelet euank-e2e-test-minion-dv3u}	spec.containers{exit}	Warning		Failed		Failed to create rkt container with error: cannot make "exit-fast_default(17050ce9-1252-11e6-a52a-42010af00002)": running a custom stage1 requires a privileged security context
....
```

Note as well that the "success" here is rkt spitting out an [error message](https://github.com/coreos/rkt/issues/2141) which indicates that the right stage1 was being used at least.

cc @yifan-gu @aaronlevy
2016-05-25 07:52:17 -07:00
Lucas Käldström fdff659ced Do not call NewFlannelServer() unless flannel overlay is enabled 2016-05-25 16:09:39 +03:00
k8s-merge-robot 83c78fdcaa Merge pull request #24179 from aveshagarwal/master-downward-api-resources-limits-requests-implementation
Automatic merge from submit-queue

Downward API implementation for resources limits and requests

This is an implementation of Downward API for resources limits and requests, and it works with environment variables and volume plugin.

This is based on proposal https://github.com/kubernetes/kubernetes/pull/24051. This implementation follows API with magic keys approach as discussed in the proposal.

@kubernetes/rh-cluster-infra

<!-- Reviewable:start -->
---
This change is [<img src="http://reviewable.k8s.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](http://reviewable.k8s.io/reviews/kubernetes/kubernetes/24179)
<!-- Reviewable:end -->
2016-05-25 03:38:49 -07:00
Yu-Ju Hong bc69cca778 Reduce noise in kubelet.log 2016-05-24 16:03:01 -07:00
Jess Frazelle aa8c72adaa
seccomp: add annotations and test for docker runtime
Signed-off-by: Jess Frazelle <me@jessfraz.com>
2016-05-24 12:25:21 -07:00
Vishnu kannan e7721ea8cf Expose errors from libecycle hooks as events for the pod.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2016-05-24 11:12:53 -07:00
Clayton Coleman 223542690a
Ensure that init containers are preserved during pruning
Pods with multiple init containers were getting the wrong containers
pruned. Fix an error message and add a test.
2016-05-24 14:05:55 -04:00
Random-Liu 151d0ab0c1 Periodically reporing image pulling progress in log 2016-05-24 09:58:36 -07:00
Avesh Agarwal 1931931494 Downward API implementation for resources limits and requests 2016-05-24 12:22:35 -04:00
xiangpengzhao 3caebba6d8 Add assert.NotNil for test case 2016-05-24 10:04:36 -04:00
Yu-Ju Hong 77dba962db docker: don't set timeout for image pulling requests 2016-05-23 16:17:49 -07:00
Euan Kemp 136da158c5 rkt: Support alternate stage1's via annotation
This provides a basic implementation for setting a stage1 on a per-pod
basis via an annotation.

It's possible this feature should be gated behind additional knobs, such
as a kubelet flag to filter allowed stage1s, or a check akin to what
priviliged gets in the apiserver.
Currently, it checks `AllowPrivileged`, as a means to let people disable
this feature, though overloading it as stage1 and privileged isn't
ideal.
2016-05-23 13:47:16 -07:00
Euan Kemp dc236d926d rkt: Add VolumeGetter mock 2016-05-23 13:43:55 -07:00
derekwaynecarr 5a8851d436 Fix container detection on systemd in kubelet 2016-05-23 14:22:32 -04:00
Vishnu kannan 3905179fd7 Log output of lifecycle probes on failure
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2016-05-23 09:53:21 -07:00
Minhan Xia 6a3ad1d66d add hostport support for kubenet 2016-05-22 22:18:58 -07:00
Angus Salkeld 2970f2220f Use docker containerInfo.LogPath and not manually constructed path
Since the containerInfo has the LogPath in it, let's use that and
not manually construct the path ourselves. This also makes the code
less prone to breaking if docker change this path.

Fixes #23695
2016-05-23 10:25:37 +10:00
Erez Freiberger 7fb82d543f kubelet: reading cloudinfo from cadvisor
When no --cloud-provider flag is given, try to use data from cadvisor to
determine the current cloud provider.
2016-05-22 18:41:39 +03:00
Sami Wagiaalla 4858d0ab6f Detangle Attach/Detach from GCE PD 2016-05-22 08:28:29 -04:00
k8s-merge-robot f1e528eab6 Merge pull request #25933 from timstclair/subcontainers
Automatic merge from submit-queue

Handle cAdvisor partial failures

Kubernetes side of https://github.com/google/cadvisor/issues/1286

Partially fixes https://github.com/kubernetes/kubernetes/issues/25131

(Depends on cAdvisor Godeps bump https://github.com/kubernetes/kubernetes/pull/25914)

/cc @kubernetes/sig-node
2016-05-22 04:50:01 -07:00
k8s-merge-robot 6224f44717 Merge pull request #25771 from sjpotter/fs-info
Automatic merge from submit-queue

kubelet/cadvisor: Refactor cadvisor disk stat/usage interfaces.

basically

1) cadvisor struct will know what runtime the kubelet is, passed in via additional argument to New()

2) rename cadvisor wrapper function to DockerImagesFsInfo() to ImagesFsInfo() and have linux implementation choose a label based on the runtime inside the cadvisor struct

2a) mock/fake/unsupported modified to take the same additional argument in New()

3) kubelet's wrapper for the cadvisor wrapper is renamed in parallel

4) make all tests use new interface
2016-05-22 03:08:59 -07:00
k8s-merge-robot 5d8e797a14 Merge pull request #25907 from ncdc/check-docker-pidfile
Automatic merge from submit-queue

Fix detection of docker cgroup on RHEL

Check docker's pid file, then fallback to pidof when trying to determine the pid for docker. The
latest docker RPM for RHEL changes /usr/bin/docker from an executable to a shell script (to support
/usr/bin/docker-current and /usr/bin/docker-latest). The pidof check for docker fails in this case,
so we check /var/run/docker.pid first (the default location), and fallback to pidof if that fails.

@kubernetes/sig-node @kubernetes/rh-cluster-infra
2016-05-21 16:50:00 -07:00
Lucas Käldström 2022c44409 kubelet: Use MkdirAll instead of Mkdir 2016-05-22 00:23:18 +03:00
k8s-merge-robot 4bb085c927 Merge pull request #25772 from derekwaynecarr/eviction-max-grace
Automatic merge from submit-queue

Add support for limiting grace period during soft eviction

Adds eviction manager support in kubelet for max pod graceful termination period when a soft eviction is met.

```release-note
Kubelet evicts pods when available memory falls below configured eviction thresholds
```

/cc @vishh
2016-05-21 12:43:45 -07:00
Tamer Tas 239c04d60d Use read-only root filesystem capabilities of appc & rkt 2016-05-21 20:01:00 +03:00
k8s-merge-robot d6d0a6eb83 Merge pull request #25656 from tmrts/godep-update/rkt-1.6.0
Automatic merge from submit-queue

Update rkt API version to 1.6.0

Updates coreos/rkt container runtime dependency to `1.6.0`

Fixes #25430
2016-05-21 09:56:52 -07:00
k8s-merge-robot 9c9bdb2494 Merge pull request #25502 from swagiaal/attach-interface-pvc
Automatic merge from submit-queue

Add support for PersistentVolumeClaim in Attacher/Detacher interface

The attach detach interface does not support volumes which are referenced through PVCs. This PR adds that support
2016-05-21 06:25:34 -07:00
k8s-merge-robot 68ab865e75 Merge pull request #25328 from resouer/sort-images
Automatic merge from submit-queue

Only expose top N images in `NodeStatus`

Fix #25209

Sorted the image and only pick set top 50 sized images in node status.

cc @vishh
2016-05-21 04:43:30 -07:00
k8s-merge-robot 423a4154be Merge pull request #25062 from dcbw/kubenet-rkt
Automatic merge from submit-queue

Hook rkt kubelet runtime up to network plugins
2016-05-21 00:45:19 -07:00
k8s-merge-robot 46504c2042 Merge pull request #14943 from vishh/qos
Automatic merge from submit-queue

Updaing QoS policy to be at the pod level

Quality of Service will be derived from an entire Pod Spec, instead of being derived from resource specifications of individual resources per-container.
A Pod is `Guaranteed` iff all its containers have limits == requests for all the first-class resources (cpu, memory as of now).
A Pod is `BestEffort` iff requests & limits are not specified for any resource across all containers.
A Pod is `Burstable` otherwise. 

Note: Existing pods might be more susceptible to OOM Kills on the node due to this PR! To protect pods from being OOM killed on the node, set `limits` for all resources across all containers in a pod.

<!-- Reviewable:start -->
---
This change is [<img src="http://reviewable.k8s.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](http://reviewable.k8s.io/reviews/kubernetes/kubernetes/14943)
<!-- Reviewable:end -->
2016-05-20 22:58:04 -07:00
Mike Danese fbf6bbc49a Merge pull request #25596 from derekparker/inotify
kubelet: Optionally, have kubelet exit if lock file contention is observed, using --exit-on-lock-contention flag
2016-05-20 16:40:10 -07:00
Mike Danese 63b7c05bc4 Merge pull request #24743 from pmorie/kill-pod-errs
Clearly identify errors killing pods in events and logs
2016-05-20 16:38:51 -07:00
Mike Danese ae7809d71a Merge pull request #25698 from euank/update-log-stuff
rkt: Don't warn on empty pod logs
2016-05-20 15:03:20 -07:00
Vishnu kannan f884180deb Update kubelet to use per-pod QoS policy.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2016-05-20 11:52:17 -07:00
Vishnu kannan f48c83600c Updating QoS policy to be per-pod instead of per-resource.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2016-05-20 11:52:16 -07:00
derekwaynecarr 2a1d3faf08 kubelet support for max grace period during soft eviction 2016-05-20 11:30:08 -04:00
k8s-merge-robot 4ea034c284 Merge pull request #25896 from yujuhong/inspect_error
Automatic merge from submit-queue

kubelet: Don't attempt to apply the oom score if container exited already

Containers could terminate before kubelet applies the oom score. This is normal
and the function should not error out.

This addresses #25844 partially.

/cc @smarterclayton @Random-Liu
2016-05-20 06:22:57 -07:00
Tim St. Clair b05b419c25 Handle cAdvisor partial failures 2016-05-19 19:29:31 -07:00
Random-Liu f9203e6813 Add unit test for generateAPIPodStatus for normal containers and init containers 2016-05-19 17:12:29 -07:00
Random-Liu 38b188aa94 Properly handle init containers in convertToAPIContainerStatuses 2016-05-19 17:03:25 -07:00
Daniel Smith 5448400b1c Merge pull request #25243 from smarterclayton/explore_quantity
Provide an int64 version of Quantity that is much faster
2016-05-19 16:56:48 -07:00
Andy Goldstein 6744a7417a Fix detection of docker cgroup on RHEL
Check docker's pid file, then fallback to pidof when trying to determine the pid for docker. The
latest docker RPM for RHEL changes /usr/bin/docker from an executable to a shell script (to support
/usr/bin/docker-current and /usr/bin/docker-latest). The pidof check for docker fails in this case,
so we check /var/run/docker.pid first (the default location), and fallback to pidof if that fails.
2016-05-19 16:42:52 -04:00
Yu-Ju Hong b57fbee557 check pid in oomscoreadj 2016-05-19 12:21:27 -07:00
Yu-Ju Hong e3e1c7a6a1 kubelet: Don't attempt to apply the oom score if the container is not running
Containers could terminate before kubelet applies the oom score. This is normal
and the function should not error out.
2016-05-19 11:32:36 -07:00
Shaya Potter ae08ef38d7 kubelet/cadvisor: Refactor cadvisor disk stat/usage interfaces 2016-05-19 11:13:47 -07:00
Tim Hockin 77eff06a53 Make IsDNS1123Label return error strings 2016-05-19 08:57:49 -07:00
Clayton Coleman e3c8c4c22b
Handle resource.Quantity changes in eviction thresholds 2016-05-19 08:41:43 -04:00
Clayton Coleman 5e4308f91d
Update use of Quantity in other classes 2016-05-19 08:41:43 -04:00
k8s-merge-robot 4f09f51486 Merge pull request #24800 from thockin/validation_pt8-3
Automatic merge from submit-queue

Make name validators return string slices

Part of the larger validation PR, broken out for easier review and merge.  Builds on previous PRs in the series.
2016-05-19 02:15:27 -07:00
Paul Morie 451c7f28b2 Clearly identify errors killing pods in events and logs 2016-05-19 03:21:39 -04:00
Derek Parker f307e97f87 kubelet: Add --exit-on-lock-contention flag
This patch adds the --exit-on-lock-contention flag, which must be used
in conjunction with the --lock-file flag. When provided, it causes the
kubelet to wait for inotify events for that lock file. When an 'open'
event is received, the kubelet will exit.
2016-05-18 16:21:47 -07:00
Dan Williams 552b648caf kubenet: implement fake execer for testcases
When the IP isn't in the internal map, GetPodNetworkStatus() needs
to call the execer for the 'nsenter' program.  That  means the execer
needs to be !nil, which it wasn't before.
2016-05-18 11:28:05 -05:00
Dan Williams 3dbbe26316 kubenet: fix log message text 2016-05-18 11:28:05 -05:00
Dan Williams 5de7b561e3 kubenet: ensure loopback interface is up and consolidate CNI setup 2016-05-18 11:28:05 -05:00
Dan Williams 62e4635cfb rkt: set up network namespace with plugins 2016-05-18 11:28:05 -05:00