Commit Graph

438 Commits

Author SHA1 Message Date
Tamer Tas
2b055eb475 pkg/kubelet/container: deprecate outdated CRI API 2016-08-12 23:06:36 +03:00
Tamer Tas
14cc9919d0 pkg/kubelet/container: amend cgroup type documentation 2016-08-12 16:52:48 +03:00
Jess Frazelle
7e9d82129e
fix go vet errors
Signed-off-by: Jess Frazelle <jessfraz@google.com>

fix composites

Signed-off-by: Jess Frazelle <me@jessfraz.com>
2016-08-10 16:45:41 -07:00
Andrey Kurilin
9f1c3a4c56 Fix various typos in kubelet 2016-08-03 01:14:44 +03:00
Yu-Ju Hong
97e30e134e kubelet: move kuberuntime.go to api/services.go
Also add a testing package and add placeholders for fake services.
2016-08-01 15:31:55 -07:00
k8s-merge-robot
7aa592bfa3 Merge pull request #29553 from yujuhong/docker-shim
Automatic merge from submit-queue

Add a docker-shim package

Add a new docker integration with kubelet using the new runtime API.
This change adds the package with the skeleton and implements some of the basic operations.


This PR only implements a small sets of functions. The rest of the functions will be implemented
in the followup PRs to keep the changes readable, and the reviewers sane.

Note: The first commit is from #28396, only the second commit is for review. 

/cc @kubernetes/sig-node @feiskyer @Random-Liu
2016-07-28 17:58:56 -07:00
Yu-Ju Hong
03d11bcf4e Add a dockershim package
Add a new docker integration with kubelet using the new runtime API.
This change adds the package with some skeletons, and implements some
of the basic operations.
2016-07-27 18:30:25 -07:00
k8s-merge-robot
ab7d039c81 Merge pull request #29388 from ronnielai/image-gc-check
Automatic merge from submit-queue

Avoiding trying to gc images with no tags which are still in use

#29325
2016-07-27 16:44:50 -07:00
Yu-Ju Hong
0ac247c6a7 Add kuberuntime.go 2016-07-27 14:34:30 -07:00
Ron Lai
64981aaf46 Avoiding trying to gc images with no tags which are still in use 2016-07-27 10:31:47 -07:00
k8s-merge-robot
c186afd46e Merge pull request #29122 from ronnielai/image-gc-1-1
Automatic merge from submit-queue

Syncing imaging pulling backoff logic

- Syncing the backoff logic in the parallel image puller and the sequential image puller to prepare for merging the two pullers into one.
- Moving image error definitions under kubelet/images
2016-07-25 11:43:22 -07:00
k8s-merge-robot
d525d5345e Merge pull request #29119 from wongma7/pv-gid-squash2
Automatic merge from submit-queue

Allow PVs to specify supplemental GIDs

Retry of https://github.com/kubernetes/kubernetes/pull/28691 . Adds a Kubelet helper function for getting extra supplemental groups
2016-07-22 22:36:51 -07:00
Matthew Wong
cbdd121d2d Remove pod mutation for PVs with supplemental GIDs 2016-07-22 17:41:44 -04:00
Ron Lai
ee4822e476 Moving image pulling errors under kubelet/images 2016-07-20 14:20:53 -07:00
Ron Lai
56b9daf50f Moving image pullers to images directory 2016-07-20 09:47:11 -07:00
k8s-merge-robot
3786701280 Merge pull request #28865 from ronnielai/image-gc-0
Automatic merge from submit-queue

Moving event.go from kubelet/container to kubelet/events
2016-07-18 22:54:03 -07:00
k8s-merge-robot
50172148e4 Merge pull request #25273 from ncdc/exec-sigwinch
Automatic merge from submit-queue

Support terminal resizing for exec/attach/run

```release-note
Add support for terminal resizing for exec, attach, and run. Note that for Docker, exec sessions
inherit the environment from the primary process, so if the container was created with tty=false,
that means the exec session's TERM variable will default to "dumb". Users can override this by
setting TERM=xterm (or whatever is appropriate) to get the correct "smart" terminal behavior.
```

Fixes #13585
2016-07-14 07:26:49 -07:00
Andy Goldstein
3b21a9901b Support terminal resizing for exec/attach/run
Add support for terminal resizing for exec, attach, and run. Note that for Docker, exec sessions
inherit the environment from the primary process, so if the container was created with tty=false,
that means the exec session's TERM variable will default to "dumb". Users can override this by
setting TERM=xterm (or whatever is appropriate) to get the correct "smart" terminal behavior.
2016-07-13 17:06:16 -04:00
joe2far
5ead89b5bb Fixed several typos 2016-07-13 15:06:24 +01:00
Ron Lai
e6b745122d Moving event.go from kubelet/container to kubelet/events 2016-07-12 17:42:29 -07:00
Ron Lai
0a651402f2 - Added a DeleteContainer method in Runtime interface
- Implemented DeleteContainer for docker
2016-07-08 10:40:30 -07:00
k8s-merge-robot
4da14c8a64 Merge pull request #28204 from thockin/cleanup-third_party
Automatic merge from submit-queue

Cleanup third party (pt 2)

Move forked-and-hacked golang code to the forked/ directory.  Remove ast/build/parse code that is now in stdlib.  Remove unused shell2junit
2016-07-07 12:13:14 -07:00
Yu-Ju Hong
08dc661133 Container runtime interface
This commit includes a proposal and a Go file to re-define the container
runtime interface.

Note that this is an experimental interface and is expected to go through
multiple revisions once developers start implementing against it. As stated in
the proposal, there are also individual issues to carry discussions of
specific features.
2016-07-01 15:42:11 -07:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
Tim Hockin
8c42c08363 move forked golang code to a common dir with LICENSE 2016-06-28 22:57:45 -07:00
Tim Hockin
37bda2dbf2 Move hacked golang os code to forked/ dir 2016-06-28 22:16:59 -07:00
Dan Williams
a657d0587b kubelet/kubenet: Fix getRunningPods() to support rkt pods
Don't assume there's an infra container.
2016-06-22 13:45:13 -05:00
Dan Williams
9865ac325c kubelet/cni: make cni plugin runtime agnostic
Use the generic runtime method to get the netns path.  Also
move reading the container IP address into cni (based off kubenet)
instead of having it in the Docker manager code.  Both old and new
methods use nsenter and /sbin/ip and should be functionally
equivalent.
2016-06-22 11:36:10 -05:00
Yu-Ju Hong
f279e36292 Don't remove all containers of deleted pods until sources are ready
Without this fix, kubelet may assume a pod from a not-ready source has already
been deleted, and GC all its dead containers.
2016-06-16 10:47:12 -07: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
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
Lucas Käldström
2022c44409 kubelet: Use MkdirAll instead of Mkdir 2016-05-22 00:23:18 +03: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
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
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
9b85d20c73 kubelet/runtime: add method to return pod network namespace path
Some runtimes (eg, Hypernetes) don't create network namespaces for pods,
so network plugins must correctly handle any error returned from the
runtime.
2016-05-18 09:26:01 -05:00
Clayton Coleman
205a8b4574
Add init container loading to the kubelet 2016-05-17 00:29:53 -04:00
k8s-merge-robot
59b7b1c550 Merge pull request #24921 from feiskyer/merge-exec
Automatic merge from submit-queue

Remove RunInContainer interface in Kubelet Runtime interface

According to #24689, we should merge RunInContainer and ExecInContainer in the container runtime interface. 

@yujuhong  @kubernetes/sig-node
2016-05-15 02:58:15 -07:00
Yifan Gu
9d5bcf4251 rkt: Add tests for GarbageCollect(). 2016-05-13 15:13:52 -07:00
k8s-merge-robot
08440b5dcc Merge pull request #24836 from Clarifai/gpu-impl
Automatic merge from submit-queue

WIP v0 NVIDIA GPU support

```release-note
* Alpha support for scheduling pods on machines with NVIDIA GPUs whose kubelets use the `--experimental-nvidia-gpus` flag, using the alpha.kubernetes.io/nvidia-gpu resource 
```

Implements part of #24071 for  #23587

I am not familiar with the scheduler enough to know what to do with the scores. Mostly punting for now.

Missing items from the implementation plan: limitranger, rkt support, kubectl
support and docs

cc @erictune @davidopp @dchen1107 @vishh @Hui-Zhi @gopinatht
2016-05-12 14:04:15 -07:00
Rudi Chiarito
362c763fca WIP v0 NVIDIA GPU support
Implements part of #24071

I am not familiar with the scheduler enough to know what to do with the scores. Punting for now.

Missing items from the implementation plan: limitranger, rkt support, kubectl
support and user docs
2016-05-09 19:20:05 -04:00
k8s-merge-robot
fe135fc251 Merge pull request #24630 from euank/redundant-created
Automatic merge from submit-queue

kubelet: Remove redundant `Container.Created`

As far as I can tell, this has been supplanted by a) the `DockerJSON.CreatedAt` field and b) the
`ContainerStatus.CreatedAt`, where the first is used for creating the
second.

The `.Created` field was only written to as far as I can see.

cc @yifan-gu & @Random-Liu 

Is there any reason we might want to keep this around?
2016-05-08 16:21:05 -07:00
k8s-merge-robot
8217172cd4 Merge pull request #19025 from aveshagarwal/master-imagepull-messages
Automatic merge from submit-queue

Fix parallel image pullers event messages with reasons constants.
2016-05-08 07:31:49 -07:00
Andy Goldstein
f091ea5eda Handle image digests in node status and image GC
Start including Docker image digests in the node status and consider image digests during image
garbage collection.
2016-05-07 06:50:51 -04:00
derekwaynecarr
7bab6999d4 Allow KillPod to take a gracePeriodOverride 2016-05-06 12:14:43 -04:00
feisky
831203c19b Remove RunInContainer interface in Kuberlete Runtime interface 2016-05-01 20:21:15 +08:00
Abhishek Shah
8a3ed48808 Added Hostname and Subdomain field to Pod.Spec 2016-04-28 10:56:56 -07:00
Vishnu kannan
e566948a75 Track image storage usage for docker containers
add image fs info to summary stats API.
Adding node e2e test for image stats.

Signed-off-by: Vishnu kannan <vishnuk@google.com>
2016-04-25 16:00:34 -07:00
Euan Kemp
7d34b0b09d kubelet: Remove redundant Container.Created
This has been supplanted by a) the DockerJSON.CreatedAt field and b) the
ContainerStatus.CreatedAt, where the first is used for creating the
second.

The `.Created` field was only written to as far as I can see.
2016-04-25 12:19:24 -07:00
Euan Kemp
a6718f5969 rkt: Implement pod FinishedAt
This is implemented via touching a file on stop as a hook in the systemd
unit. The ctime of this file is then used to get the `finishedAt` time
in the future.
In addition, this changes the `startedAt` and `createdAt` to use the api
server's results rather than the annotations it previously used.

It's possible we might want to move this into the api in the future.

Fixes #23887
2016-04-22 15:34:55 -07:00
Yifan Gu
dfb6dd010f rkt: Fix hostnetwork.
Mount hosts' /etc/hosts, /etc/resolv.conf, set host's hostname
when running the pod in the host's network.

Besides, do not set the DNS flags when running in host's network.
2016-04-14 18:44:09 -07:00
harry
f9e2f522b4 Add cache for api version
Expose runtime interface
2016-04-12 22:34:59 -04:00
k8s-merge-robot
6a87dba0b8 Merge pull request #22733 from resouer/flow-control
Automatic merge from submit-queue

Add flow control pkg

minor fix ref #15634
Refactor pkg names in back off related files
2016-04-11 06:18:51 -07:00
k8s-merge-robot
a2145d7b1c Merge pull request #23613 from Random-Liu/remove-out-of-date-code
Automatic merge from submit-queue

Kubelet: Remove nsinit related code and bump up minimum docker apiversion

Docker has native exec support after 1.3.x. We never need this code now.

As for the apiversion, because Kubernetes supports 1.8.x - 1.10.x now, we should bump up the minimum docker apiversion.
@yujuhong I checked the [changes](https://github.com/docker/engine-api/blob/master/types/versions/v1p20/types.go), we are not relying on any of those changes. So #23506 should work with docker 1.8.x+
2016-04-03 07:34:26 -07:00
harry
5fe773d37c Add flow control pkg
Refactor pkg names in flow control related files
2016-04-03 11:28:03 +08:00
derekwaynecarr
eeeccd0a67 A pod never terminated if a container image registry was unavailable 2016-04-01 13:42:23 -04:00
Random-Liu
1459a17dbe Remove nsinit related code and bump up minimum docker apiversion 2016-03-29 18:21:50 -07:00
Yifan Gu
d4dc037bf7 rkt: Add '--hostname' support for rkt.
Add GeneratePodHostNameAndDomain() to RuntimeHelper to
get the hostname of the pod from kubelet.

Also update the logging flag to change the journal match from
_HOSTNAME to _MACHINE_ID.
2016-03-28 17:06:14 -07:00
saadali
79012f6d53 Rename volume.Builder to Mounter and volume.Cleaner to Unmounter 2016-03-25 11:29:58 -07:00
k8s-merge-robot
566d23e880 Merge pull request #23205 from yifan-gu/append_image_tag
Auto commit by PR queue bot
2016-03-22 07:30:52 -07:00
Jordan Liggitt
1d4c56c2f6 Move TestRuntimeCache into non-test file 2016-03-21 16:21:55 -04:00
Yifan Gu
89feb6fc53 rkt: Append tag to the returned image name. 2016-03-18 16:40:44 -07:00
Avesh Agarwal
40e5d292c1 Fix parallel image pullers event messages with reasons constants. 2016-03-12 00:41:02 -05:00
Brian Grant
c6b4518aed Merge pull request #22666 from pmorie/pod-ip-flake-redux
Fix flake in pod IP as env var e2e
2016-03-11 09:42:40 -08:00
Paul Morie
5194c12d9e Fix flake in pod IP as env var e2e 2016-03-10 16:32:03 -05:00
k8s-merge-robot
8b186991e2 Merge pull request #22607 from Random-Liu/restart-unknown-state-container
Auto commit by PR queue bot
2016-03-08 05:02:35 -08:00
k8s-merge-robot
fa0bf812d6 Merge pull request #22467 from Random-Liu/push-down-runtime-version-check
Auto commit by PR queue bot
2016-03-05 22:34:19 -08:00
k8s-merge-robot
357a9d1fdf Merge pull request #22033 from yifan-gu/rkt_get_status
Auto commit by PR queue bot
2016-03-05 10:46:47 -08:00
Lantao Liu
45064d7a1e Always restart container in unknown state. 2016-03-05 10:42:26 +00:00
Random-Liu
07b21c50fa Add Status in runtime interface and use it for runtime health check. 2016-03-04 21:26:41 -08:00
Abhishek Shah
a3c00aadd5 Specify hostname, subdomain via annotation on podspec.
The hostname is a DNS A record, if the subdomain maps to a service name
in the same namespace
2016-03-04 13:28:33 -08:00
Tim St. Clair
7b6d843309 Move test-only files to test-only packages 2016-03-01 09:11:32 -08:00
k8s-merge-robot
6b8e0d45f0 Merge pull request #21349 from Random-Liu/cleanup-should-container-be-restarted
Auto commit by PR queue bot
2016-02-27 09:50:26 -08:00
Yifan Gu
168ec8b80f kubelet: Sort the container statuses in convertStatusToAPIStatus(). 2016-02-26 11:27:03 -08:00
Random-Liu
33280abf42 Cleanup and add unit test for ShouldContainerBeRestarted 2016-02-23 00:42:52 -08:00
Minhan Xia
973b01ee29 fix cascading backoff 2016-02-22 18:25:42 -08:00
laushinka
7ef585be22 Spelling fixes inspired by github.com/client9/misspell 2016-02-18 06:58:05 +07:00
Nick Schuch
5d511aeb54 Adds ReadOnlyRootFilesystem support for containers 2016-02-14 15:39:51 +10:00
Yifan Gu
8964469e4a rkt: Remove ShouldContainerBeRestartedOldVersion(). 2016-02-09 00:15:58 +08:00
James DeFelice
1aec798aa0 support optional envvars for pod-infra-container 2016-02-08 13:48:25 +00:00
Jan Chaloupka
4389b3f0d6 Rewritte util.* -> wait.* wherever reasonable 2016-02-07 12:02:20 +01:00
Random-Liu
2b7d0182ca Remove ConvertPodStatusToAPIPodStatus from runtime interface 2016-02-05 19:19:46 +00:00
k8s-merge-robot
bd67b8a5db Merge pull request #20192 from Random-Liu/remove-get-api-podstatus
Auto commit by PR queue bot
2016-02-05 11:00:42 -08:00
Yifan Gu
e9139bb0e5 kubelet: Rename RunContainerOptionsGenerator to RuntimeHelper.
Also add GetClusterDNS() to the interface to let rkt get the
DNS servers, DNS names.
2016-02-03 14:54:08 +01:00
Jeff Lowdermilk
ae2aece9af Merge pull request #20202 from caesarxuchao/skip-update
skip update when deleting with grace-period=0
2016-02-02 18:24:57 -08:00
Jeff Lowdermilk
caa9433234 Merge pull request #20433 from lavalamp/fix-bad-rv
Add timeout, fix potential startup hang
2016-02-02 17:27:23 -08:00
Random-Liu
7b4cdb6f8f Remove GetAPIPodStatus from runtime interface 2016-02-02 23:41:55 +00:00
Chao Xu
a6d96a04d0 make kubelet.HandlePodsDeletion aware of api.Pod 2016-02-02 13:01:17 -08:00
Yu-Ju Hong
ff04de4fc0 Remove RuntimeCache from sync path
This change removes RuntimeCache in the pod workers and the syncPod() function.
Note that it doesn't deprecate RuntimeCache completely as other components
still rely on the cache.
2016-02-01 21:32:41 -08:00
Daniel Smith
4a7d70aef1 extend fake clock 2016-02-01 15:36:15 -08:00
k8s-merge-robot
9fef5f2938 Merge pull request #19785 from Random-Liu/remove-get-podstatus-and-apipodstatus
Auto commit by PR queue bot
2016-01-30 11:35:26 -08:00
Random-Liu
f116a5eb8f Remove temporary function GetPodStatusAndAPIPodStatus() 2016-01-30 00:39:26 -08:00
Random-Liu
e93febfd61 Start returning PodSyncResult in SyncPod 2016-01-30 00:25:50 -08:00
Alex Mohr
c52122cab5 Merge pull request #19675 from apcera/kubelet-report-runtime-version
Update container runtime to properly report the engine and version
2016-01-21 10:31:19 -08:00
k8s-merge-robot
d0f59e2126 Merge pull request #18172 from Random-Liu/generate-sync-event
Auto commit by PR queue bot
2016-01-20 22:48:35 -08:00
Ken Robertson
a7b07c01df Update container runtime to properly report the engine and version
This address a TODO when collecting the node version information so it
will properly report the configured runtime and its version. Previously,
this was hardcoded to "docker://" and the docker version, and would show
"docker://1.9.1" even when the kubelet was configured to use rkt.

With this change, it will use the runtime's Type() and Version() data.

This also changes the container.Runtime interface to add an APIVersion()
method. This can be used when the runtime has separate versions for the
engine and the API, such as with Docker. The Docker minimum version
validation has been updated to use APIVersion(), and
DockerManager.Version() now returns the engine version.
2016-01-20 16:42:25 -08:00
Random-Liu
f2176643e7 Add unit test for PodSyncResult 2016-01-17 00:42:45 -08:00
Random-Liu
2d31d8ed4c Add PodSyncResult 2016-01-17 00:42:44 -08:00
Yu-Ju Hong
032c0a4074 Add container.Cache for storing container.PodStatus
This cache will be used to stores the PodStatus of all pods/containers
visible on the node. This will elimiate the need for pod workers to query the
container runtime directly.
2016-01-13 10:19:47 -08:00
Yu-Ju Hong
73a4f8225c PLEG should report events if a container is removed
Currently, pleg would report a event if a container transitions from running to
exited between relisting. However, if would not report any event if a container
gets stopped and removed between relisting. This event will eventually be
handled when the pod syncs periodically, but this is undesirable. This change
ensures that we detect all such events.
2016-01-12 16:25:19 -08:00
k8s-merge-robot
c255181509 Merge pull request #18248 from resouer/images-dev
Auto commit by PR queue bot
2016-01-11 23:53:43 -08:00
Saad Ali
f5ea4f4671 Merge pull request #19392 from yujuhong/runtime_mock
Add a container runtime mock for testing
2016-01-11 13:03:37 -08:00
k8s-merge-robot
609cdfd267 Merge pull request #19331 from resouer/hash-util
Auto commit by PR queue bot
2016-01-09 13:08:01 -08:00
harry zhang
27ca7dc71e Expose image list in node status
Change image manager to use repotag
2016-01-08 17:01:31 +08:00
Yu-Ju Hong
c997fb3715 Add a container runtime mock for testing 2016-01-07 18:02:49 -08:00
Clayton Coleman
791d160b42 Split the Kubelet flag options and struct
Reduces the size of the app/server.go file and ensures that the flags
and their defaults are clearly separated.
2016-01-06 21:23:06 -05:00
harry
2a52976983 Use hashutil to hold hash tools 2016-01-06 22:28:58 +08:00
Random-Liu
2ea11690b8 Remove running pod from SyncPod() of container runtime 2016-01-04 10:18:46 -08:00
Random-Liu
b2a72ca384 Change my TODO to be the same with others 2015-12-31 00:41:05 -08:00
Tim St. Clair
89bc7992f9 Refactor kubelet server into its own package
Refactor Kubelet's server functionality into a server package. Most
notably, move pkg/kubelet/server.go into
pkg/kubelet/server/server.go. This will lead to better separation of
concerns and a more readable code hierarchy.
2015-12-15 10:20:38 -08:00
Jeff Lowdermilk
9f3d28c788 Merge pull request #18305 from yujuhong/podfullname
Replace podFullName with format.Pod() in logging messages
2015-12-11 14:31:47 -08:00
Yu-Ju Hong
c646255579 Replace podFullName with format.Pod() in logging messages 2015-12-07 13:41:52 -08:00
deads2k
2ee3dfe415 update testapi to eliminate redundant fields 2015-12-07 15:54:26 -05:00
Random-Liu
3cbdf79f8c Change original PodStatus to APIPodStatus, and start using kubelet internal PodStatus in dockertools 2015-12-04 17:37:39 -08:00
k8s-merge-robot
5e53e281e5 Merge pull request #17545 from yujuhong/no_auto_updates
Auto commit by PR queue bot
2015-12-02 02:03:08 -08:00
Avesh Agarwal
3d5207fd73 This commit adds type information to events.
This addresses issue #15624.
2015-11-24 09:59:54 -05:00
Daniel Smith
874b4f85d9 Merge pull request #17259 from yujuhong/raw_pod_status
kubelet: add RawPodStatus and related functions
2015-11-20 14:23:19 -08:00
Yu-Ju Hong
dc42d25f4a kubelet: remove background updating thread in RuntimeCache
This feature is no longer useful pods don't sync as often. For batch
creation/deletions/syncs, the cache will be up-to-date for most pods since it
will be updated frequently. For other cases, continue updating for two more
seconds don't usually help, as temporal locality doesn't hold across pod syncs.
2015-11-19 17:25:51 -08:00
Dawn Chen
16fe4a8ada Fix a typo of NodeNotReady event. 2015-11-19 15:35:14 -08:00
Yu-Ju Hong
760309f349 kubelet: add RawPodStatus and related functions
RawPodStatus will be the internal status of the pod that kubelet relies on for
syncing.
2015-11-17 17:04:05 -08:00
Yu-Ju Hong
bc6414a873 kubelet: add a generic pod lifecycle event generator
This change introduces pod lifecycle event generator (PLEG), and adds a generic
PLEG. The generic PLEG relies on relisting to discover container events, and is
container-runtime-agnostic. Both docker and rkt are changed to use generic
PLEG.
2015-11-13 09:55:36 -08:00
Yu-Ju Hong
3beae6b70b Add Status in the runtime Container type
This is necessary for the generic PLEG to distinguish container events.
2015-11-13 09:55:36 -08:00
jiangyaoguo
b0f0c294d9 make reasons constants with clarity 2015-11-09 23:42:14 +08:00
jiangyaoguo
3ce5a51007 remove implicitly required container event 2015-11-04 16:47:17 +08:00
Dawn Chen
a39e1e96dc Mark NodeNotReady for docker version below 1.6.2 2015-10-30 13:48:51 -07:00
mqliang
5b03cfc92b replace fmt.Sptintf() with + operator 2015-10-29 16:27:42 +08:00
Sami Wagiaalla
1d352a16b8 Support volume relabling for pods which specify an SELinux label 2015-10-28 09:26:58 -04:00
Vishnu kannan
0df4b46d4c Adding a kubelet flag to optionally enable parallel image pulls. 2015-10-22 17:19:51 -07:00
Vishnu kannan
94b45830c3 make kubelet image pulls serialized by default. 2015-10-20 14:50:44 -07:00
k8s-merge-robot
916ddbca65 Merge pull request #14182 from jiangyaoguo/distinguish-registry-unavailable-and-pull-failure
Auto commit by PR queue bot
2015-10-16 16:22:22 -07:00
feisky
d624c7de51 Pass the ContainerGCPolicy in Runtime.GarbageCollect 2015-10-09 06:57:10 +08:00
feisky
4c8a836260 Move original container gc to docker runtime 2015-10-09 06:57:09 +08:00
feisky
35cf8ab7d4 Use runtime instread of dockerclient in container gc 2015-10-09 06:54:38 +08:00
jiangyaoguo
af46c69553 Distinguish image registry unavailable and pull failure 2015-10-09 01:16:31 +08:00
Piotr Szczesniak
95b293c615 Merge pull request #13516 from samsabed/backoff-image-reason
backoff image pulling on failure
2015-10-08 13:05:32 +02:00
Tim St. Clair
551eff63b8 Use strong type for container ID
Change all references to the container ID in pkg/kubelet/... to the
strong type defined in pkg/kubelet/container: ContainerID

The motivation for this change is to make the format of the ID
unambiguous, specifically whether or not it includes the runtime
prefix (e.g. "docker://").
2015-10-07 10:58:05 -07:00
Sam Abed
fdf712cd84 back-off image pull on failure
Signed-off-by: Sam Abed <samabed@gmail.com>
2015-10-07 21:12:42 +11:00
Tim St. Clair
52ece0c34e Refactor readiness probing
Each container with a readiness has an individual go-routine which
handles periodic probing for that container. The results are cached, and
written to the status.Manager in the pod sync path.
2015-10-02 15:37:10 -07:00
Yu-Ju Hong
d6aea667ba Remove ContainerList from fakeRuntime
Container runtime interface currently doesn't support GetContainers and no
test should be using fakeRuntime.ContainerList. Remove it to prevent accidental
use.
2015-09-25 16:36:51 -07:00
Clayton Coleman
c2e90cd154 Support extended pod logging options
Increase the supported controls on pod logging. Add validaiton to pod
log options. Ensure the Kubelet is using a consistent, structured way to
process pod log arguments.

Add ?sinceSeconds=<durationInSeconds>, &sinceTime=<RFC3339>, ?timestamps=<bool>,
?tailLines=<number>, and ?limitBytes=<number>
2015-09-21 15:39:32 -04:00
Kris
f4ad00d9ae Moving Status object to a common package 2015-09-17 14:09:53 -07:00
Clayton Coleman
bf2decce81 Add NotReadyAddresses to Endpoints
In many cases clients may wish to view not ready addresses for endpoints
in order to do set membership prior to a pod being ready. For instance,
a pod that uses the service endpoints to connect to other pods under
the same service, but does not want to signal ready before it has
contacted at least a minimal number of other pods.

This is backwards compatible with old servers and clients. There is
an additional cost in size of endpoints before services ramp up, which
will add minor CPU and memory use for services that have a significant
number of pods which have not become ready.
2015-09-17 09:41:56 -04:00
k8s-merge-robot
6f01200188 Merge pull request #13727 from jiangyaoguo/fix-reason-reporting-in-kubelet
Auto commit by PR queue bot
2015-09-11 12:32:20 -07:00
jiangyaoguo
62c0c35307 Fix reporting reason in kubelet
1. Make reason field of StatusReport objects in kubelet in CamelCase format.
2. Add Message field for ContainerStateWaiting to describe detail about Reason.
3. Make reason field of Events in kubelet in CamelCase format.
4. Update swagger,deep-copy and so on.
2015-09-11 10:01:08 +08:00
Daniel Smith
15b30b8b09 Move version agnostic parts of client
pkg/client/unversioned/cache -> pkg/client/cache
pkg/client/unversioned/record -> pkg/client/record
2015-09-10 17:17:59 -07:00
Chao Xu
9fc79e9d99 refactor testapi and test scripts to prepare for multiple API groups. 2015-09-04 18:01:32 -07:00
Yifan Gu
6ced66249d kubelet/dockertools: clear container reference when killing a container. 2015-08-25 18:22:08 -07:00
Sam Abed
995cb15bb6 back off restarts of crashlooping containers
Signed-off-by: Sam Abed <samabed@gmail.com>
2015-08-24 21:43:17 +10:00
Clayton Coleman
f5c4a3e7a6 Handle graceful termination in the Kubelet
Supports pods that are gracefully deleted on the server being
handled in the Kubelet

preStop is limited to the grace period of the pod in execution.
2015-08-21 10:18:21 -04:00
Saad Ali
a90b67f276 Merge pull request #12880 from yifan-gu/pod_status
kubelet: refactor kubecontainer.Pod, remove PodStatus from it.
2015-08-20 17:25:29 -07:00
Robert Bailey
08e6a43c1d Revert "Merge pull request #9165 from smarterclayton/graceful"
This reverts commit 4f856b595d, reversing
changes made to d78525a83b.

Conflicts:
	pkg/kubelet/status_manager.go
2015-08-18 17:34:49 -07:00
Yifan Gu
69f796f234 kubelet: refactor kubecontainer.Pod, remove PodStatus from it. 2015-08-18 16:27:22 -07:00
Kris Rousey
ae6c64d9bb Moving everyone to unversioned client 2015-08-18 10:23:03 -07:00
Clayton Coleman
b842a7dd15 Revert "Revert "Gracefully delete pods from the Kubelet""
This reverts commit 98115facfd.
2015-08-18 08:57:02 -04:00
Yifan Gu
d70a30c069 kubelet: refactor kubelet.Runtimehooks to container.ImagePuller. 2015-08-12 16:28:25 -07:00
Kris Rousey
565189f5b8 Correcting all go vet errors 2015-08-11 13:55:37 -07:00
Yifan Gu
eb0fb43453 kubelet: Add image pulling event.
Since it takes a while (1-2mins) for kubelet to pulling a big image
(>500MB). Just showing "Pending" for pod status is not very helpful.

This commit introduces a "pulling" event, and inserts it before the
kubelet starts to pull an image.
2015-08-07 10:50:39 -07:00
Mike Danese
8e33cbfa28 rewrite go imports 2015-08-05 17:30:03 -07:00
Brendan Burns
64be76c14d Add support for Attach to the kubelet.
This is a pre-cursor to supporting 'kubectl attach ...' and 'kubectl run -it ...'
2015-07-27 21:48:55 -07:00
Yu-Ju Hong
de75a42cb2 Add a kubelet /runningpods endpoint
/runningpods returns a list of pods currently running on the kubelet. The list
is composed by examining the container runtime, and may be different from the
desired pods to run known by kubelet.

This is useful for tests to verify that pods are indeed deleted on nodes.
2015-06-29 11:29:23 -07:00
Prashanth Balasubramanian
af175cc00b Add a pod status equality method to the status manager. 2015-06-22 13:49:49 -07:00
Yifan Gu
6ddffdd736 kubelet: Move TestPortForwardNoSuchContainer() to dockertools package.
Also refactor TestPortForward() to be neutral to container runtime.
2015-06-19 10:28:27 -07:00
Yifan Gu
f197a9db4e kubelet: Minor refactors.
Remove some TODOs.
Unexport DockerManager.Puller and DockerManager.PodInfraContainerImage.
Add "docker" for all "go-dockerclient" imports.
2015-06-04 16:08:45 -07:00
Filip Grzadkowski
98115facfd Revert "Gracefully delete pods from the Kubelet" 2015-06-02 23:40:05 +02:00
Clayton Coleman
72ee028cab Gracefully delete pods from the Kubelet
This commit wires together the graceful delete option for pods
on the Kubelet.  When a pod is deleted on the API server, a
grace period is calculated that is based on the
Pod.Spec.TerminationGracePeriodInSeconds, the user's provided grace
period, or a default.  The grace period can only shrink once set.
The value provided by the user (or the default) is set onto metadata
as DeletionGracePeriod.

When the Kubelet sees a pod with DeletionTimestamp set, it uses the
value of ObjectMeta.GracePeriodSeconds as the grace period
sent to Docker.  When updating status, if the pod has DeletionTimestamp
set and all containers are terminated, the Kubelet will update the
status one last time and then invoke Delete(pod, grace: 0) to
clean up the pod immediately.
2015-06-01 19:23:59 -04:00
Chao Xu
2f6e5e2e08 Update ContainerState.Termination to ContainerState.Terminated in pkg/api/types.go and pkg/api/v1/types.go 2015-05-28 17:18:24 -07:00
Paul Morie
8b338860aa Make kubelet expand var refs in cmd, args, env 2015-05-27 00:13:57 -04:00
Yu-Ju Hong
9a71fb9373 Kubelet: clean up kubelet_test.go
* Start using FakeRuntime to replace FakeDockerClient in unit tests.
 * Move and adapt docker-specific tests (e.g. creating/deleting infra
   containers) to manager_test.go in dockertools.
2015-05-26 17:11:24 -07:00
Yu-Ju Hong
8ea88d58d4 Kubelet: make FakeRuntime implement Runtime
We should start using FakeRuntime in kubelet_test.go. First, make it implement
Runtime correctly.
2015-05-26 16:49:46 -07:00
Yifan Gu
6a5681e0fe kubelet: Move HashContainer to kubelet/container package. 2015-05-20 12:08:32 -07:00
deads2k
0c14e0cbdb add pull secret references to pods 2015-05-18 16:18:16 -04:00
Yifan Gu
d164ac0ba0 kubelet/container: Refactor RunContainerOptions.
Make Envs, Mounts, PortMappings more generic.
Also add default name for PortMapping if it's not specified.
2015-05-13 10:01:00 -07:00
Yifan Gu
a2dac158c2 kubelet/container: Remove ipcMode and netMode from RunContainerOptions.
Since createPodInfraContainer() is moved into dockertools. There is no
need to pass the ipcMode or netMode via RunContainerOptions.
2015-05-12 14:18:00 -07:00
Yifan Gu
7831b7da72 kubelet/container: Move prober.ContainerCommandRunner to container.
Also include the ContainerCommandRunner in Runtime interface, but
still keep the ContainerCommandRunner interface for testability.
2015-05-11 15:32:51 -07:00
Yifan Gu
8b1174a3a7 kubelet/container: Move pty*.go to container runtime package.
This makes the labeld pty wrapper available for both container runtime.
2015-05-07 23:36:47 -07:00
Yifan Gu
8715c54bd3 kubelet/container: Move kubelet.volumeMap to container.VolumeMap.
This is a quick fix to solve circular dependency problem when
rkt references volume maps.
2015-05-06 16:50:57 -07:00
Paul Morie
df08b15121 Change signature of container runtime PullImage to allow pull w/ secret 2015-05-06 17:42:03 -04:00
Prashanth B
da42f13941 Merge pull request #7749 from yujuhong/stale_cache
Kubelet: record the timestamp correctly in the runtime cache
2015-05-06 09:20:30 -07:00
Yu-Ju Hong
c075719f05 Kubelet: fix the runtime cache to not cache the stale pods
If a pod worker sees stale pods from the runtime cache which were retrieved
before their last sync finished, it may think that the pod were not started
correctly, and attemp to fix that by killing/restarting containers.
There are two issues that may cause runtime cache to store stale pods:
  1. The timstamp is recorded *after* getting the pods from the container
     runtime. This may lead the consumer to think the pods are newer than they
     actually are.
  2. The cache updates are triggered by many goroutines (pod workers, and the
     updating thread). There is no mechanism to enforece that the cache would
     only be updated to newer pods.

This change fixes the above two issues by making sure one always record the
timestamp before getting pods from the container runtime, and updates the
cached pods only if the timestamp is newer.
2015-05-05 18:28:38 -07:00
Robert Bailey
5fe07e69b7 Merge pull request #7725 from pmorie/typo
Fix typo in runtime_cache.go
2015-05-04 17:03:42 -07:00
Paul Morie
d90689bb71 Fix typo in runtime_cache.go 2015-05-04 16:33:48 -04:00
Victor Marmol
ba7e940a57 Make rkt implement the container Runtime 2015-05-04 11:16:33 -07:00
Victor Marmol
79fc8bee34 Change GetContainerLogs() signature.
This works for both runtimes. We need to eventually unify the ID scheme
for this method.
2015-05-04 11:16:32 -07:00
Daniel Smith
4a6ab7fd36 Merge pull request #7597 from eparis/copyright
Use generic copyright holder name in license boilerplate
2015-05-01 17:01:39 -07:00
Eric Paris
6b3a6e6b98 Make copyright ownership statement generic
Instead of saying "Google Inc." (which is not always correct) say "The
Kubernetes Authors", which is generic.
2015-05-01 17:49:56 -04:00
Yu-Ju Hong
4fe3366b04 Removes RunPod in the Runtime interface
SyncPod subsumes RunPod, so the latter is no longer needed.
After this change, DockerManager implements the Runtime interface.
2015-05-01 14:47:04 -07:00
Vish Kannan
cadfde0bd1 Merge pull request #7277 from guenter/cgroup-parent
Add --cgroup_parent flag to Kubelet to set the parent cgroup for pods
2015-05-01 10:24:58 -07:00
Yu-Ju Hong
f74fab4e56 Merge pull request #7603 from vmarmol/runtime-syncpod-api
Add SyncPod() and remove Kill/Run InContainer().
2015-05-01 09:41:50 -07:00
Victor Marmol
6316b485ad Add SyncPod() and remove Kill/Run InContainer().
SyncPod allows us to abstract away how a pod is started and updated. It
also simplifies what the runtime has to implement.
2015-05-01 00:32:29 -07:00
Yifan Gu
3751ecc766 kubelet/container: Move ShouldContainerBeRestarted() to runtime. 2015-04-30 22:55:25 -07:00
Victor Marmol
441a4e6f30 Merge pull request #7578 from yujuhong/docker_manager
Add image-related methods to DockerManager
2015-04-30 16:16:39 -07:00
Victor Marmol
a94aeb27fa Merge pull request #7586 from yujuhong/container_info
Remove more docker references in kubelet
2015-04-30 16:16:23 -07:00
Yu-Ju Hong
83c599e4d4 Add image-related methods to DockerManager
This change is part of the efforts to make DockerManager implement the Runtime
interface.

The change also modifies the interface slightly to work with existing
code, and aggregates the type converting functions to convert.go.
2015-04-30 13:27:52 -07:00
Yu-Ju Hong
2f7b951140 Remove more docker references in kubelet
This change also renames TrimRuntimePrefixFromImage to TrimRuntimePrefix to
better reflect that the usage is not limited to images (e.g. ID).
2015-04-30 13:16:11 -07:00
Tobi Knaup
b96c4046a8 Add --cgroup_root flag to Kubelet to set the parent cgroup for all pods.
Implements #6991.
2015-04-30 10:32:27 -07:00
Yu-Ju Hong
176fc9b9c6 Remove GetContainers from Runtime interface
This function is no longer considered needed.
2015-04-30 09:33:23 -07:00
Yu-Ju Hong
de32785e2e Merge pull request #7532 from vmarmol/runtime-images
Add image-related methods to Runtime interface.
2015-04-30 09:30:59 -07:00
Victor Marmol
090d0c95fa Remove ImagePull metric in Kubelet.
There is an equivalent metric from our Docker metrics and this one is
harder to maintain with the RuntimeHooks.
2015-04-29 17:12:03 -07:00
Victor Marmol
61d51243c5 Add RuntimeHooks interface and Kubelet implementation.
This interface will be used to inject functionality and logic into the
runtimes that should be shared accross runtimes.
2015-04-29 17:06:49 -07:00
Victor Marmol
4d09b79529 Add image-related methods to Runtime interface.
This includes RemoveImage() and ListImages().
2015-04-29 16:00:36 -07:00
Victor Marmol
f38c607285 Move Prober to its own subpackage.
This will allow it to be reused by the runtimes.
2015-04-29 10:11:28 -07:00
Victor Marmol
dfadc10fcb Merge pull request #7488 from yifan-gu/get_container_logs
kubelet/container: Add GetContainerLogs to runtime interface.
2015-04-29 08:24:20 -07:00
Yifan Gu
fb1c55aa11 kubelet/container: Add GetContainerLogs to runtime interface. 2015-04-28 20:26:16 -07:00
Yifan Gu
ba1389de3c kubelet/container: Update the runtime interface.
Make some of them (RunInContainer, ExecInContainer, etc) to have
same function signatures as current docker and rkt implementation.
2015-04-28 17:55:41 -07:00
Dawn Chen
1de4c45115 Merge pull request #7401 from vmarmol/rkt-kill-pod
Kubelet: Move killPod() logic to DockerManager's KillPod()
2015-04-28 09:25:12 -07:00
Dawn Chen
4b79e5a3db Merge pull request #7403 from vmarmol/rkt-deps
Remove DockerPrefix references in Kubelet.
2015-04-27 19:05:43 -07:00
Dawn Chen
5ea5fff586 Merge pull request #7391 from vmarmol/rkt-portforward
Add PortForward to runtime API.
2015-04-27 17:10:37 -07:00
Victor Marmol
42a2059a5d Remove DockerPrefix references in Kubelet.
Makes this usage generic and usable by other runtimes.
2015-04-27 15:55:13 -07:00
Victor Marmol
1d6913779b Use kubecontainer.Pod instead of api.Pod in KillPod.
We don't need the full api.Pod and the uses today use kubecontainer.Pod.
2015-04-27 15:36:06 -07:00
Victor Marmol
3a61421711 Add PortForward to runtime API. 2015-04-27 14:56:32 -07:00
Victor Marmol
7404b7019c Move Docker-specific log handling to DockerManager.
Eases the separation of Docker-specific code into the Docker-specific
runtime.
2015-04-27 13:10:10 -07:00
Brian Grant
60d7bad147 Merge pull request #7128 from nikhiljindal/fixbeta1tests
Removing more references to v1beta1 from pkg/
2015-04-24 11:07:53 -07:00
nikhiljindal
dcc368c781 Removing more references to v1beta1 from pkg/ 2015-04-24 00:45:17 -07:00
Yifan Gu
b5a1b32aa4 kubelet/dockertools: Move RunContainer into container runtime.
Also removed ContainerRunner interface.
2015-04-23 16:40:37 -07:00
David Oppenheimer
8667ebddff Merge pull request #7249 from yifan-gu/generator
kubelet/container: Introduce RunContainerOptionsGenerator.
2015-04-23 14:59:23 -07:00
Yifan Gu
bd7132bc07 kubelet/container: Introduce RunContainerOptionsGenerator.
This interface wraps the kubelet to provide the options for
container runtime to run a container.
2015-04-23 13:55:50 -07:00
Yifan Gu
de6e81fb4a kubelet/container: Add Pull() and IsImagePresent() to runtime interface. 2015-04-23 11:58:51 -07:00
Victor Marmol
15e2a7fe38 Merge pull request #7200 from yifan-gu/containerID
Introduce container ID type.
2015-04-23 11:33:32 -07:00
Yifan Gu
afb9a896cb Introduce container ID type. 2015-04-23 10:43:27 -07:00
Victor Marmol
de6d5cc165 Add RunInContainer/ExecInContainer to container Runtime API. 2015-04-22 18:09:24 -07:00
Yifan Gu
f59013410a kubelet/container: Move Prober/HandlerRunner interface to container/helpers.go
This enables us to pass them to container runtime as parameters.
2015-04-22 11:56:15 -07:00
Dawn Chen
a666c1e731 Merge pull request #7134 from yifan-gu/version
kubelet: Refactor GetDockerVersion().
2015-04-21 16:49:45 -07:00
Yifan Gu
611fb25926 kubelet: Refactor GetDockerVersion().
Remove GetDockerServerVersion() from DockerContainerCommandRunner interface,
replaced with runtime.Version(). Also added Version type in runtime for version
comparision.
2015-04-21 14:52:08 -07:00
derekwaynecarr
3445bd5806 Fixup event object reference generation to allow downstream objects to have an event 2015-04-21 15:31:38 -04:00
Yifan Gu
e1feed9a8b kubelet/container: Replace DockerCache with RuntimeCache. 2015-04-13 18:16:05 -07:00
Yifan Gu
a5e6bea9b5 kubelet/container: Update the cache interface. 2015-04-13 17:38:18 -07:00
Yifan Gu
ba1ad9fad2 kubelet: Refactor RunInContainer/ExecInContainer/PortForward.
Replace GetKubeletDockerContainers() with findContainer().
2015-04-06 17:14:46 -07:00
Paul Morie
7628b37d78 Add control over container entrypoint 2015-03-31 12:32:03 -04:00
Yifan Gu
6fecda710c kubelet: Add container readiness manager.
Move the readiness managing logic into pkg/kubelet/container package
to facilitate the pluggable container runtime.
2015-03-26 18:45:23 -07:00
Yifan Gu
5f08555f45 kubelet: Refactor kubelet.runContainer.
Push the run container logic into container runtime.
2015-03-26 13:43:45 -07:00
Yifan Gu
9f62b929b8 kubelet: Move container reference manager to pkg/kubelet/container.
This enables other package to use it, such as docktools.
2015-03-26 11:53:44 -07:00
Yifan Gu
e02c6994dc kubelet.container: Fix volume map type. 2015-03-24 16:08:04 -07:00
Yifan Gu
31bb11ac2a kubelet: Move pod name helpers to pkg/kubelet/container/runtime.go 2015-03-24 16:08:04 -07:00
Yifan Gu
eec6456f51 kubelet.container: Add helpers in container runtime to filter pod/containers. 2015-03-24 16:01:38 -07:00
Yu-Ju Hong
f3f3c8f151 Fix volume imports 2015-03-20 16:22:35 -07:00
Yifan Gu
3b4685ef6c kubelet.runtime: update the import path for volume. 2015-03-20 16:16:27 -07:00
Yifan Gu
487d34e409 kubelet: add container runtime cache and fake runtime. 2015-03-20 13:15:20 -07:00
Yifan Gu
319d537cf9 kubelet: add container runtime interface. 2015-03-20 13:15:20 -07:00