Commit Graph

64 Commits (064b7dec4249dea9a1466c960eb0f90f23517914)

Author SHA1 Message Date
Filip Grzadkowski 632ca506ce * Update pod status only when it changes.
* Refactor syncing logic into a separate struct
2015-03-24 16:41:00 +01:00
Yu-Ju Hong 15e9760bd4 Kubelet: support retrieving stats using UID of mirror pod
Kubelet supports retrieving stats for pods/containers with and without UID.
This does not always work for the static pods because users may get the UIDs of
the mirror pods from the API server, and use them to query Kubelet. In this
case, Kubelet would fail to locate the containers due to mismatched UIDs.

This change adds a intenral mirror to static pod UID mapping and teaches all
public-facing functions to perform UID lookup before proceeding. This allows
users to use either mirror or static pod's UID to retrieve stats.
2015-03-20 15:40:49 -07:00
Jerzy Szczepkowski 5845f6ad48 Running resource predicate on kubelet.
Added checking on kubelet if scheduled pods do not exceed resources. Related to #5207.
2015-03-19 10:40:10 +01:00
Filip Grzadkowski 1a352b74ba Periodically update pod status from kubelet. 2015-03-18 12:11:39 +01:00
Yu-Ju Hong 929fb63b33 Sync static pods from Kubelet to the API server
Currently, API server is not aware of the static pods (manifests from
sources other than the API server, e.g. file and http) at all. This is
inconvenient since users cannot check the static pods through kubectl.
It is also sub-optimal because scheduler is unaware of the resource
consumption by these static pods on the node.

This change syncs the information back to the API server by creating a
mirror pod via API server for each static pod.

 - Kubelet creates containers for the static pod, as it would do
   normally.

 - If a mirror pod gets deleted, Kubelet will re-create one. The
   containers are sync'd to the static pods, so they will not be
   affected.

 - If a static pod gets removed from the source (e.g. manifest file
   removed from the directory), the orphaned mirror pod will be deleted.

Note that because events are associated with UID, and the mirror pod has
a different UID than the original static pod, the events will not be
shown for the mirror pod when running `kubectl describe pod
<mirror_pod>`.
2015-03-17 08:45:56 -07:00
Wojciech Tyczynski 5d95e9e671 Remove BoundPods from Kubelet 2015-03-16 19:17:21 +01:00
Brendan Burns b53b2e1de0 Add and extend timeouts. 2015-03-11 14:12:46 -07:00
Vish Kannan 53ec66caf4 Merge pull request #5152 from vmarmol/cadvisor-dep
Rename cAdvisor info API to cadvisorApi
2015-03-06 18:09:28 -08:00
Victor Marmol 43b469bd9f Rename cAdvisor info API to cadvisorApi 2015-03-06 16:06:38 -08:00
Dawn Chen 9439c0f3bd Merge pull request #5103 from yujuhong/naming
kubelet: revamp the pod/container naming scheme
2015-03-06 15:58:58 -08:00
Victor Marmol a35f4374c5 Update cAdvisor ContainerInfo references to v1 API.
The cAdvisor data structures were versioned recently. We use the v1
versions so this commit makes that explicit.
2015-03-06 15:42:06 -08:00
Yu-Ju Hong fe70be9261 kubelet: revamp the pod/container naming scheme
There are two main goals for this change.

 1. Fix the naming scheme in kubelet so that it accepts DNS subdomain
    name/namespaces correctly (#4920). The design is discussed in #3453.

 2. Prepare for syncing the static pods back to the apiserver(#4090). This
    includes

  - Eliminate the source component in the internal full pod name (#4922). Pods
    no longer need sources as they will all be sync'd via apiserver.

  - Changing the naming scheme for the static (file-, http-, and etcd-based)
    pods such that they are distinguishable when syncing back to the apiserver.

The changes includes:
  *	name = <pod.Name>-<hostname>
  * namespace = <cluster_namespace> (i.e. "default" for now).
  * container_name = k8s_<contianer_name>.<hash_of_container>_<pod_name>_<namespace>_<uid>_<random>

Note that this is not backward-compatible, meaning the kubelet won't recognize
existing running containers using the old naming scheme.
2015-03-06 13:14:45 -08:00
Dawn Chen 43b4f41202 Allow /healthz check from localhost 2015-03-05 17:27:56 -08:00
Justin Santa Barbara 7725cd23ec Fix typo in test 2015-03-04 10:10:08 -05:00
Sami Wagiaalla 9150cb9d95 Catch kubelet-master hostname mismatch during health check
During the kubelet's /healthz responce check to see if the
hostname used by the master matches the hostname the kubelet
knows itself by. If not fail the health check.

Signed-off-by: Sami Wagiaalla <swagiaal@redhat.com>
2015-02-26 10:22:03 -05:00
Andy Goldstein bd2eb2fa8f Fix flaky exec/portforward tests
Fixes #4676
2015-02-20 16:29:57 -05:00
Andy Goldstein 5bd0e9ab05 Add streaming command execution & port forwarding
Add streaming command execution & port forwarding via HTTP connection
upgrades (currently using SPDY).
2015-02-20 09:57:02 -05:00
Dawn Chen 8022c74b55 Merge pull request #4473 from xiang90/server
pkg/kubelet/server.go: minor fixes
2015-02-18 14:50:51 -08:00
Xiang Li 6b91901bd3 pkg/kubelet: minor fixes in server.go 2015-02-18 13:18:45 -08:00
Prashanth Balasubramanian 9427f75788 Cadvisor returns richer errors to the kubelet server. 2015-02-18 09:31:28 -08:00
Vishnu Kannan 922881fcd2 Improve error handling for '/containerLogs' API in kubelet. 2015-02-12 02:22:26 +00:00
Wojciech Tyczynski ead67108ce Use existing method to get Docker version. 2015-02-04 20:50:21 +01:00
Wojciech Tyczynski 78f66a6ce9 Check Docker version in Kubelet /healthz handler 2015-02-04 18:31:24 +01:00
Dawn Chen 15e9fa8a9d Introduce PodStatusResult, and deprecate PodContainerInfo. 2015-01-16 09:10:40 -08:00
Tim Hockin 1be3de895c Move util.UID to pkg/types 2015-01-14 15:22:21 -08:00
Tim Hockin e86d4cd3c6 Use a strong type for UID fields 2015-01-14 13:53:43 -08:00
Clayton Coleman ba53d723d3 Clean up how client is passed to Kubelet in preparation for reading pods
Also fixes how Kubelet server looks up pods by name when there are multiple
sources.
2015-01-07 14:40:37 -05:00
Vishnu Kannan 3ef9e404c1 Update "/stats" endpoint on kubelet to take namespace as an argument as part of the API. 2015-01-03 02:17:25 +00:00
Brendan Burns 928f52056e Remove HTTP Server support for pushing pods onto the kubelet. 2014-12-17 17:15:36 -08:00
Clayton Coleman 6d31c2bf8a util.EncodeJSON proven harmful, remove it everywhere
People were misusing EncodeJSON in tests when they should be using
runtime.EncodeOrDie(testapi.Codec(), obj).  Removing the potential
for cutting self on sharp objects.
2014-11-13 10:38:13 -05:00
Dawn Chen a1e79048a6 Add /podSpecs to Kubelet 2014-10-30 16:38:08 -07:00
Clayton Coleman 644eb70085 Refactor tests to split ObjectMeta from TypeMeta 2014-10-24 11:22:21 -04:00
Clayton Coleman bb77a5d15f Rename ID -> Name 2014-10-22 15:00:26 -04:00
Dawn Chen 8858c5f897 Merge pull request #1871 from derekwaynecarr/handle_container_logs_on_alternate_namespace
handleContainerLogs needs a namespace to address a pod
2014-10-17 15:42:11 -07:00
Dawn Chen 7611c839e9 Merge pull request #1873 from derekwaynecarr/kubelet_handleRun_namespace_aware
Make kubelet handleRun work for pods in non-default namespace
2014-10-17 15:23:40 -07:00
derekwaynecarr 1f094d973d make kubelet handleRun work for pods in non-default namespace 2014-10-17 16:12:26 -04:00
derekwaynecarr 897f1b3ab5 handleContainerLogs needs a namespace to address a pod 2014-10-17 16:00:50 -04:00
derekwaynecarr d590af2ce5 Fixup kubelet handlePodInfo to be namespace aware 2014-10-17 14:42:46 -04:00
Clayton Coleman 892942af8f Read BoundPods from etcd instead of ContainerManifestList
There are three values that uniquely identify a pod on a host -
the configuration source (etcd, file, http), the pod name, and the
pod namespace. This change ensures that configuration properly
makes those names unique by changing podFullName to contain both
name (currently ID in v1beta1, Name in v1beta3) and namespace.

The Kubelet does not properly handle information requests for
pods not in the default namespace at this time.
2014-10-16 19:29:08 -04:00
Haney Maxwell c0bf974871 Allow disabling non-necessary kubelet and apiserver endpoints 2014-10-09 16:49:27 -07:00
Dawn Chen 300c2c5f6f Fix an issue on GetContainerInfo.
I believe the issue was first introduced when we append namespace to docker
container's name. This is a temporary fix for #160.
2014-10-07 17:21:24 -07:00
Dawn Chen 8d0ed93aa1 Clean unittests 2014-10-06 13:37:22 -07:00
Tim Hockin 7a96ed38b3 Merge pull request #1439 from jhadvig/err_handler
Handle invalid pod name
2014-09-25 15:00:47 -07:00
jhadvig e5d8ee3811 Handle invalid pod name 2014-09-25 22:57:05 +02:00
Brendan Burns 431caa93df Merge pull request #1335 from dchen1107/exit1
Convert existing kubernetes system to use ContainerStatus, instead of
2014-09-24 21:37:24 -07:00
Daniel Smith bb0cd95a83 fix non-gofmt'd things 2014-09-24 14:27:10 -07:00
Dawn Chen 0e6ec3cbfc Convert existing kubernetes system to use ContainerStatus, instead of
docker.Container directly.

Conflicts:
	pkg/kubelet/dockertools/docker.go
	pkg/registry/pod/rest.go
2014-09-24 11:16:46 -07:00
Tim Hockin 0f9cd4301d Merge pull request #1401 from jhadvig/k8s_log_retrieval_update
stdout/stderr writer container log stream
2014-09-22 16:38:11 -07:00
jhadvig 9ba71528e4 stdout/stderr container log stream 2014-09-23 00:15:36 +02:00
Tim Hockin 486dbd165f Merge pull request #1318 from jhadvig/k8s_log_retrieval
Adding endpoint for log retrieval on the minion
2014-09-22 13:21:28 -07:00