Commit Graph

390 Commits (9c72e6e9231d0f279a70d46c74607f45d5af2db5)

Author SHA1 Message Date
Yu-Ju Hong b906e34576 kubelet: trigger pod workers independently
Currently, whenever there is any update, kubelet would force all pod workers to
sync again, causing resource contention and hence performance degradation.

This commit flips kubelet to use incremental updates (as opposed to snapshots).
This allows us to know what pods have changed and send updates to those pod
workers only. The `SyncPods` function has been replaced with individual
handlers, each handling an operation (ADD, REMOVE, UPDATE). Pod workers are
still triggered periodically, and kubelet performs periodic cleanup as well.

This commit also spawns a new goroutine solely responsible for killing pods.
This is necessary because pod killing could hold up the sync loop for
indefinitely long amount of time now user can define the graceful termination
period in the container spec.
2015-08-25 17:52:01 -07:00
Yu-Ju Hong 3bc2157889 Merge pull request #13100 from pweil-/cap-priv-sources
use privileged source object
2015-08-25 16:10:50 -07:00
Sreekanth Pothanis c841a20361 Cinder Volume Plugin 2015-08-25 15:13:56 -07:00
Paul Weil 709e654686 use privileged source object 2015-08-24 16:53:43 -04:00
caogaojin 60cb4406e9 Cleanup deprecated Forever function
Since util.Forever function has been deprecated, we should cleanup these
pieces of code.
2015-08-24 10:31:59 +08:00
Jonathan Wills 80e799fc0c Allow configuring the rkt binary in a kubelet with a flag.
This is necessary because coreos comes with rkt installed, and if we want to use a different version
we need some way to avoid the default one.
2015-08-19 09:42:13 -04:00
Kris Rousey ae6c64d9bb Moving everyone to unversioned client 2015-08-18 10:23:03 -07:00
Kris Rousey 2a17dbff13 Moving clientauth package to be under client 2015-08-12 14:43:17 -07:00
Bryan Stenson 9541414742 create cloudprovider "providers" package
move all providers into new package
    update all references to old package path
2015-08-11 22:36:51 -07:00
Eric Paris fe6b633e2a Convert for util.IP to just use a net.IP
pflag can handle IP addresses so use the pflag code instead of doing it
ourselves. This means our code just uses net.IP and we don't have all of
the useless casting back and forth!
2015-08-10 10:15:05 -04:00
Satnam Singh 991775e77b Merge pull request #10724 from eparis/convert-underscore-to-dash
Convert underscore to dash
2015-08-07 16:40:05 -07:00
Satnam Singh 950ec96db0 Merge pull request #12182 from AnanyaKumar/qos-node
Add QoS support on node
2015-08-07 14:27:02 -07:00
Ananya Kumar 6ef3de1d5f Add QoS support on node 2015-08-07 11:18:16 -07:00
Eric Paris cfc9312b7f Convert pkg/ and cmd/ from --flag_name= to --flag-name= 2015-08-07 11:00:13 -04:00
David Walter 792fc2269b change underscores to dashes to match the command line argument 2015-08-06 22:13:44 -05:00
Eric Paris 7cbb52ce04 Use the pflag StringSlice instead of implementing it ourselves
Saves code and makes our code easier to read because we just use normal
[]string instead of custom type.
2015-08-06 19:16:13 -04:00
Clayton Coleman bb79365e2a Split kubelet server initialization into two parts
First is initializing a KubeletConfig that starts no background
processes. Second is running the config. Provide a legacy path
that won't impact older callers while making it easier to customize
the interfaces passed to the Kubelet.

Used by OpenShift to inject some custom interfaces to the Kubelet
for config management.
2015-08-06 09:59:58 -04:00
Mike Danese 17defc7383 run gofmt on everything we touched 2015-08-05 17:52:56 -07:00
Mike Danese 8e33cbfa28 rewrite go imports 2015-08-05 17:30:03 -07:00
Mike Danese 12b9da8f3d Merge pull request #9976 from smarterclayton/nsenter_mount_broken
Fix mount issues in containerized Kubelet
2015-07-31 17:15:28 -07:00
Mike Danese 9582c7e54e Merge pull request #12024 from a-robinson/metadata
Support passing a header to the manifest URL in the kubelet.
2015-07-30 13:46:22 -07:00
Alex Robinson cf011cad55 Support passing a header to the manifest URL in the kubelet.
Needed to support using GCE's v1 metadata API, which requires passing
the header "Metadata-Flavor: Google".
2015-07-30 17:11:27 +00:00
Brendan Burns 99b02bfe73 Add optional throttling to the proxy/exec/attach methods 2015-07-29 13:51:20 -07:00
Mike Danese b51b4e740f Merge pull request #10639 from caseydavenport/master
Allow specification of a network plugins directory when starting kubelet
2015-07-24 11:09:11 -07:00
Vish Kannan 2a5a6b99cb Merge pull request #10635 from smarterclayton/cloud_provider_should_err
Cloud provider should return an error
2015-07-23 17:50:45 -07:00
Casey D aeb7dc6b30 Allow specification of network plugins directory when starting kubelet 2015-07-23 11:21:39 -07:00
Dawn Chen e810b229c0 Change kubelet flag --max-pods default value to 40 to match v1.0 roadmap. 2015-07-10 13:46:05 -07:00
Eric Paris cde68d294b Do not create subject alt dns names for kubelet self signed certs
PR #10643 Started adding the dns names for the kubernetes master to self
sign certs which were created. The kubelet uses this same code, and thus
the kubelet cert started saying it was valid for these name as well.
While hardless, the kubelet cert shouldn't claim to be these things. So
make the caller explicitly list both their ip and dns subject alt names.
2015-07-04 23:01:01 -04:00
Eric Paris 7a29af4d2c Add Subject Alt Names to self signed apiserver certs
A cert from GCE shows:
- IP Address:23.236.49.122
- IP Address:10.0.0.1
- DNS:kubernetes,
- DNS:kubernetes.default
- DNS:kubernetes.default.svc
- DNS:kubernetes.default.svc.cluster.local
- DNS:e2e-test-zml-master

A similarly configured self signed cert shows:
- IP Address:23.236.49.122
- IP Address:10.0.0.1
- DNS:kubernetes
- DNS:kubernetes.default
- DNS:kubernetes.default.svc

So we are missing the fqdn kubernetes.default.svc.cluster.local. The
apiserver does not even know the fqdn! it's defined entirely by the
kubelet! We also do not have the cluster name certificate. This may be
--cluster-name= argument to the apiserver but will take a bit more
research.
2015-07-01 17:05:17 -04:00
Clayton Coleman d8bb4552de Cloud provider should return an error
Not fatal - makes cloud provider useful in methods that
can return error.
2015-07-01 14:41:49 -04:00
Clayton Coleman 93b14b9ede Search the parent FS for the proper binaries 2015-06-26 14:48:22 -04:00
Dawn Chen 6ddfa512de Revert "Revert "Fix the race between configuring cbr0 and restarting static pods""
This reverts commit fd0a95dd12.
2015-06-24 11:10:10 -07:00
Piotr Szczesniak fd0a95dd12 Revert "Fix the race between configuring cbr0 and restarting static pods" 2015-06-24 09:56:49 +02:00
Brendan Burns 192ffdfb25 Fix the container bridge so that it can create cbr0
Fix the kubelet so that it tries to sync status, even if Docker is down
2015-06-22 23:18:01 -07:00
Clayton Coleman 8217495ee3 Kubelet event logging is classified as V(3)
Important, but not strictly required for normal operation V(2)
2015-06-18 19:21:14 -04:00
Justin Santa Barbara df87470ecf Allow cloud providers to return a node identifier different from the hostname 2015-06-18 12:40:05 -07:00
Justin Santa Barbara dee8d4b90b For kubelet, differentiate between the nodeName and the hostname
This will allow us to use a nodeName that is not the hostname,
for example on clouds where the hostname is not the natural identifier
for a node.
2015-06-18 12:40:01 -07:00
Satnam Singh e4f5529a2d Revert "Allow nodename to be != hostname, use AWS instance ID on AWS" 2015-06-18 11:27:55 -07:00
Justin Santa Barbara efaead81dc Allow cloud providers to return a node identifier different from the hostname 2015-06-17 00:40:43 -04:00
Justin Santa Barbara c28cdfbd43 For kubelet, differentiate between the nodeName and the hostname
This will allow us to use a nodeName that is not the hostname,
for example on clouds where the hostname is not the natural identifier
for a node.
2015-06-17 00:40:43 -04:00
Mike Danese 5896ac9e07 skip GetHostIP call on standalone mode kubelet to fix spammy log statement 2015-06-12 11:37:53 -07:00
Abhi Shah 52db576617 Merge pull request #8882 from mesosphere/upstream_k8sm
Upstream Kubernetes-Mesos framework
2015-06-12 06:36:20 -07:00
Abhi Shah 0f4f2eb05a Merge pull request #9617 from davidopp/master
Add a warning that setting --port flag to Kubelet breaks "kubectl log…
2015-06-11 10:18:41 -07:00
David Oppenheimer b83a32955b Add a warning that setting --port flag to Kubelet breaks "kubectl logs." Temporary
fix for #9325.
2015-06-10 17:24:49 -07:00
James DeFelice 7d66559725 added comments at the top of native k8s files which, if changed, might affect some of the k8sm code 2015-06-10 20:31:22 +00:00
Abhi Shah 0fbd4900d1 Merge pull request #9423 from mesosphere/create-api-server-client
refactor createAPIServerClient for easier integration with 3rd party …
2015-06-10 12:54:17 -07:00
James DeFelice f54eeeb8d6 refactor createAPIServerClient for easier integration with 3rd party kubelet extensions, e.g. kubernetes-mesos 2015-06-10 02:13:58 +00:00
CJ Cullen 2d85e4a094 Use Node IP Address instead of Node.Name in minion.ResourceLocation.
Refactor GetNodeHostIP into pkg/util/node (instead of pkg/util to break import cycle).

Include internalIP in gce NodeAddresses.
2015-06-08 16:58:00 -07:00
James DeFelice b3c8f71aca refactor tls init for reuse 2015-06-05 11:45:40 +00:00
Brian Grant f72fa67924 Revert "Use Node IP Address instead of Node.Name in minion.ResourceLocation." 2015-06-03 18:19:22 -07:00
Brian Grant d4acb1d676 Merge pull request #9155 from cjcullen/mig
Use Node IP Address instead of Node.Name in minion.ResourceLocation.
2015-06-02 22:51:20 -07:00
CJ Cullen 4e5d0da839 Use Node IP Address instead of Node.Name in minion.ResourceLocation.
Refactor GetNodeHostIP into pkg/util/node (instead of pkg/util to break import cycle).

Include internalIP in gce NodeAddresses. Remove NodeLegacyHostIP
2015-06-02 20:01:49 -07:00
Andy Goldstein 2a0d7ebb11 Add support for pluggable Docker exec handlers
Add support for pluggable Docker exec handlers. The default handler is
now Docker's native exec API call. The previous default, nsenter, can be
selected by passing --docker-exec-handler=nsenter when starting the
kubelet.
2015-06-01 16:59:59 -04:00
Victor Marmol 9a2630ac6e Make system container name configurable. 2015-05-26 20:49:55 -07:00
Dawn Chen 677a4aa1a7 Merge pull request #8164 from cjcullen/cloudprovider
Route creation reconciler loop.
2015-05-22 12:27:50 -07:00
Huamin Chen 4a800fd10e add rados block device(rbd) volume plugin
Signed-off-by: Huamin Chen <hchen@redhat.com>
2015-05-21 14:51:31 -04:00
Dawn Chen 3c38abe6b0 Merge pull request #8545 from dchen1107/cleanup
Change the default value of maximum-dead-containers-per-container to 2
2015-05-21 09:26:14 -07:00
CJ Cullen bf646abf8d Revert "Revert "Modify nodes to register directly with the master.""
This reverts commit c53786ab31.
2015-05-20 14:21:03 -07:00
Quinton Hoole c53786ab31 Revert "Modify nodes to register directly with the master." 2015-05-20 13:47:51 -07:00
Dawn Chen d46bb117af Change the default value of maximum-dead-containers-per-container to 2 2015-05-19 17:30:16 -07:00
Robert Bailey 01467e0bb8 Modify nodes to register directly with the master.
- Delete nodes when they are no longer ready and don't exist in the
cloud provider.
 - Label each node with it's hostname.
 - Add flag to skip node registration.
 - Add a test for registering an existing node.
2015-05-19 09:55:07 -07:00
David Oppenheimer 44b1e1ca0c Fix stylistic isues with #5547. Closes #4910. 2015-05-18 23:32:06 -07:00
Victor Marmol a7341cfb77 Merge pull request #8386 from smarterclayton/make_kubelet_consumable
Make it easier to reuse kubelet server code
2015-05-18 11:26:55 -07:00
Clayton Coleman dc0e3dd0a4 Make it easier to reuse kubelet server code
Ensure that RunKubelet() returns errors consistently,
and make info output match Kube conventions.

Allows OpenShift to more easily reuse the Kubelet.
2015-05-18 13:38:23 -04:00
gmarek 27d660d0ac Add a resource specifying number of Pods that are allowed to run on Kubelet. 2015-05-15 10:57:46 +02:00
David Oppenheimer 7a21d7ab1f Merge pull request #8053 from jdef/upstream_mesos_cloud
integrate mesos cloud provider with k8s proper
2015-05-14 13:57:39 -07:00
Dawn Chen 309a157665 Merge pull request #7984 from cjcullen/kubelet
Kubelet configure cbr0 instead of configure-vm.sh
2015-05-13 17:32:52 -07:00
Victor Marmol 2aaa4e08eb Revert "Change default CgroupRoot to /." 2015-05-13 15:50:23 -07:00
Robert Bailey c47b9178b4 Replace the auth config file with a kubeconfig file when
starting the kubelet on GCE.
2015-05-13 01:03:28 -07:00
CJ Cullen 31ea7d1295 Put cbr0-modifying stuff behind a flag. Address some other comments. 2015-05-12 23:00:28 -07:00
Victor Marmol 40ec627cd4 Merge pull request #8108 from rjnagal/kubelet
Handle out of disk situation on kubelet.
2015-05-12 15:49:31 -07:00
Rohit Jnagal fab980598a Merge pull request #8122 from vmarmol/docker-container
Run Docker Daemon in a Resource-only Container
2015-05-12 13:16:05 -07:00
Rohit Jnagal 2cf0dfb79d Handle out of disk situation on kubelets.
Kubelet will stop accepting new pods if it detects low disk space on root fs or fs holding docker images.
Running pods are not affected. low-diskspace-threshold-mb is used to configure the low diskspace threshold.
2015-05-12 18:23:09 +00:00
Victor Marmol e1447618f4 Integrating ContainerManager into Kubelet 2015-05-12 10:13:23 -07:00
James DeFelice 652c14d8d7 integrate mesos cloud provider into kube apps 2015-05-12 16:02:38 +00:00
Victor Marmol 8d304b7d1e Change default CgroupRoot to /.
This will make all Docker containers to be top-level containers. This
will more equally share the CPU under cases of contention.
2015-05-12 08:04:20 -07:00
deads2k 6498fc1fda remove cmd respect for auth-path 2015-05-08 16:33:33 -04:00
Yifan Gu 7e9ba26103 kubelet: Add container runtime option for rkt. 2015-05-07 23:39:37 -07:00
Victor Marmol ecf8348609 Revert "kubelet: Add container runtime option for rkt." 2015-05-07 13:01:37 -07:00
Yifan Gu 4f6535ed8a kubelet: Add container runtime option for rkt. 2015-05-07 10:31:58 -07:00
Zach Loafman 3fcea23185 Revert "Revert "Revert "Kubelet: Add rkt as a runtime option""" 2015-05-05 15:55:12 -07:00
Zach Loafman 92ca92f43a Revert "Revert "Kubelet: Add rkt as a runtime option"" 2015-05-05 15:28:09 -07:00
Zach Loafman 6016408096 Revert "Kubelet: Add rkt as a runtime option" 2015-05-05 15:15:15 -07:00
Yu-Ju Hong b2c0ea37b4 Merge pull request #7743 from vmarmol/runtime-switch
Kubelet: Add rkt as a runtime option
2015-05-05 13:36:46 -07:00
Victor Marmol 22297d316a Add rkt runtime to Kubelet init 2015-05-05 10:55:21 -07:00
Paul Morie 553265ce0c Add containerized option to kubelet binary 2015-05-05 13:10:06 -04:00
Victor Marmol 27dea5f400 Revert "Add containerized option to kubelet binary" 2015-05-04 16:34:22 -07:00
Paul Morie ddbf9f7a28 Add containerized option to kubelet binary 2015-05-04 18:59:52 -04:00
Paul Morie b538642464 Inject mounter into volume plugins 2015-05-04 11:28:57 -04: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
Victor Marmol d9d61c3511 Kubelet: Add container runtime option. 2015-05-01 14:26:54 -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
Tim Hockin 0c611370e0 Merge pull request #7281 from thockin/flag-word-separators
Make flags accept - or _ between words
2015-04-27 18:11:58 -07:00
Tim Hockin a3d45fada8 Change flags to use dashes in help 2015-04-27 15:11:03 -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
Satnam Singh 2444c1f943 Propagate pod and container name for log files 2015-04-22 15:08:51 -07:00
Kenjiro Nakayama 5e2e59e728 Add more help description to cert_dir flag 2015-04-20 00:35:56 +09:00
Robert Bailey f3dd053a08 Merge pull request #6952 from mikedanese/kubelet-profiling
add enable_profiling option to kubelet healthz port
2015-04-17 07:42:35 -07:00
Mike Danese 7b13870b32 add profiling to kubelet 2015-04-16 23:11:40 -07:00
Robert Bailey 8aff238c5f Remove an unused function in the kubelet code. 2015-04-16 15:38:12 -07:00
Dawn Chen d912398d07 Merge pull request #6813 from vmarmol/in-container
Run Kubelet and Kube-proxy in resource-only containers.
2015-04-15 10:37:00 -07:00
markturansky d904e747e3 PVClaim volume plugin 2015-04-14 16:21:29 -04:00
Victor Marmol fb3c351fe1 Run Kubelet on "/kubelet" container. 2015-04-14 10:29:05 -07:00
Eric Paris 036937227f Use Fprintf to print formatted strings
Shouldn't be using Fprint() with a format string.
2015-04-14 10:51:57 -04:00
Fabio Yeon e99141de0d Merge pull request #6729 from smarterclayton/chaosclient
Add a new Chaos transport that can simulate network failure and add it to the kubelet
2015-04-13 16:06:53 -07:00
Clayton Coleman ca335d7be9 Add support for chaos to Kubelet and hack/local-up-cluster.sh 2015-04-13 18:21:20 -04:00
Xiang Li cea38a2f4e pkg/kubelet: kill a TODO in util.go
Move kubelet.CapabilitiesSetup to capabilities.Setup
2015-04-11 10:55:39 -07:00
Eric Paris 8e7d14196f Fix printing errors from failed binary runs
I had the kublet die on startup and the only error was "0x401da0"  Which
I assume is an address of the err.Error function.  The other way to fix
this, I think, would be to use err.Error(), however that could cause
fmt.Fprintf() problems, debuging on the error message people used.

Now I get a nice clean error I can understand:

"cAdvisor.New() err = mountpoint for cpu not found"
2015-04-10 17:56:47 -04:00
Justin Santa Barbara 503e19e58c Rename aws_pd -> aws_ebs 2015-04-10 13:25:44 -07:00
Justin Santa Barbara edf0292d4a Add initial support for Volumes to AWS 2015-04-10 13:25:42 -07:00
Yifan Gu b868f421e0 kubelet: Move pod infra container image setting to dockertools. 2015-04-09 09:53:07 -07:00
Wojciech Tyczynski 37ea722b7b Set NodeStatusUpdateFrequency 2015-04-09 10:44:48 +02:00
Vishnu Kannan 2b5cad6acf Improve kubelet logging around startup. This might help detect any lockup issues during startup. 2015-04-08 21:02:15 +00:00
David Oppenheimer d8aa57872a Change default Kubelet NodeStatusUpdateFrequency from 2s to 10s. 2015-04-07 12:36:09 -07:00
David Oppenheimer 402bf60366 Merge pull request #6214 from gmarek/move_consts_to_flags
Move NodeController constants to flags
2015-04-07 11:31:11 -07:00
Huamin Chen a278ceeb0a implement glusterfs volume plugin
Signed-off-by: Huamin Chen <hchen@redhat.com>
2015-04-07 09:14:39 -04:00
gmarek 321a81047c Move NodeController constants to flags 2015-04-07 12:33:03 +02:00
Vish Kannan be0feddfa5 Merge pull request #5506 from rootfs/dev
add iscsi volume plugin
2015-04-06 15:11:44 -07:00
Huamin Chen 7a82af31de add iscsi volume plugin
Signed-off-by: Huamin Chen <hchen@redhat.com>
2015-04-06 16:20:28 -04:00
James DeFelice d194af6b4f allow for more easily customized kubelet creation and initialization 2015-04-06 18:51:42 +00:00
Robert Bailey 4488ff95a2 Create an insecure (http) read-only port on the kubelet so that
heapster can collect metrics. Update the heapster config to
point to the non-secured port.
2015-04-02 10:45:49 -07:00
Robert Bailey f15e34a1bf Revert "Merge pull request #6309 from GoogleCloudPlatform/revert-6243-kubelet-ssl"
This reverts commit 96a0a0d618, reversing
changes made to 2af9b54147.
2015-04-02 10:44:37 -07:00
Dawn Chen ab1a8b1e7c Merge pull request #6298 from roberthbailey/kubelet-config
Remove salt configuration that matches the default settings in the Kubelet.
2015-04-01 14:31:31 -07:00
Robert Bailey 32a1c052dc Revert "Configure the kubelet to use HTTPS" 2015-04-01 13:59:31 -07:00
Robert Bailey 40ebed845f Remove salt configuration that matches the default settings in
the Kubelet.
2015-04-01 12:13:40 -07:00
Robert Bailey dd9ec46cc0 Fix test-cmd to work with the kubelet listening on HTTPS. 2015-04-01 09:09:29 -07:00
Robert Bailey d0f48b68d8 Configure the Kubelet to listen on HTTPS. If no certificates are
provided on the command line, generate self-signed certs.
2015-04-01 09:09:29 -07:00
Daniel Smith acd67ebea0 Merge pull request #5535 from saad-ali/fix5327
Make each new instance of kubelet generate a new event channel
2015-03-30 17:05:27 -07:00
saadali e0f71cb21f Make each new instance of kubelet generate a new event channel (instead of reusing existing). 2015-03-30 14:22:16 -07:00
Robert Bailey bc8af553a3 Configure the kubelet to bind a simple healthz server to a localhost
port for monitoring by monit. This is in preparation for the standard
kubelet port to switch to SSL only (and eventually to only accepting
connections on the SSL port that present a proper client SSL cert).

Also standardize the formatting of the monit config files a bit.
2015-03-30 14:20:30 -07:00
Victor Marmol cf7e2756b5 Add HostNetworkSources capability to limit use of HostNetwork. 2015-03-25 11:23:06 -07:00
Sreekanth Pothanis 1c06cde4c4 added cloud provider flag to kubelet
This is to fix issue #5667
2015-03-24 19:32:50 -07:00
Deyuan Deng cf548765c9 Change kubelet update frequency to 2s, and make it a constant. 2015-03-24 14:23:48 -04:00
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
Clayton Coleman d020ca00b8 Pass hostname to all kubelet config sources instead of os.Hostname()
Make applyDefaults be tied to the current config source.
2015-03-23 15:58:45 -04:00
Clayton Coleman bd12cfea69 Integration tests should do a faster status sync loop 2015-03-23 14:48:28 -04:00
Clayton Coleman 90beaa3d61 Set non-zero default HTTP/File check intervals to avoid hotloop
cmd/integration.go was hot-looping for both, but did not need to.
2015-03-23 00:47:39 -04:00
Tim Hockin bfadae77e0 Promote volume plugins, prep for persistent vols
Move pkg/kubelet/volume/... to pkg/volume/...
Some renames to make the soon-to-come persistent volumes work clearer.
2015-03-20 13:49:40 -07:00
Tim Hockin 1cbde2c5c7 Merge pull request #5664 from calfonso/nfs_mount_plugin
Addresses cross compile for syscall.Unmount by delegating to Mount.
2015-03-19 16:19:01 -07:00
CJ Cullen 7ddcecfd1c Revert "Revert "[WIP] southbound networking hooks in kubelet"" 2015-03-19 16:14:13 -07:00
Zach Loafman b5d1e538df Revert "[WIP] southbound networking hooks in kubelet" 2015-03-19 16:08:08 -07:00
Rajat Chopra 7857aa7751 kubelet networking plugin 2015-03-19 14:15:52 -07:00
Chris Alfonso 9d0c9e7dc3 Addresses cross compile for syscall.Unmount by delegating to Mount. 2015-03-19 16:46:14 -04:00
derekwaynecarr 396f802318 Disable the nfs plugin because it does not cross-compile during release builds 2015-03-19 16:11:15 -04:00
Chris Alfonso 1a45e37d17 NFSMount storage plugin for kubelet.
* If you want to test this out when an actual NFS export a good place
 to start is by running the NFS server in a container:

docker run -d --name nfs --privileged cpuguy83/nfs-server /tmp

More detail can be found here:
https://github.com/cpuguy83/docker-nfs-server
2015-03-19 13:37:38 -04:00
Victor Marmol cda4b6c598 Spread out pod status updates to apiserver.
Lowers pod status interval to every 2m and spreads updates within that
time window.
2015-03-18 15:43:07 -07:00
Victor Marmol d78ecf820e Garbage collecting images in the Kubelet.
Integrated the imageManager into the Kubelet and applies the garbage
collection policy every 5 minutes. The default policy allows up to 90%
disk usage, after which images are garbage collected to bring limit back
down to 80%.

Fixes #157.
2015-03-17 17:56:02 -07:00
Victor Marmol d1ed571e28 Use containerGC in the Kubelet.
New policy default is 100 containers max.

Fixes #5457.
2015-03-17 10:50:32 -07: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
Victor Marmol dc96ea6300 Run cAdvisor inside the Kubelet.
cAdvisor is started as a Kubelet dependency during startup of the
Kubelet before the sync loops start.
2015-03-13 16:06:02 -07:00
Dawn Chen 0cc2b62b4a Merge pull request #5265 from ddysher/kubelet-post-status
kubelet post node status to master
2015-03-13 15:29:22 -07:00
Eric Tune ae9bc28f8b Remove mentions of etcd in kubelet. 2015-03-11 16:40:20 -07:00
Eric Tune ac7bf05079 Kubelet has not even heard of etcd. 2015-03-11 16:29:31 -07:00
Deyuan Deng 9982aaa960 kubelet post node status to master 2015-03-10 23:17:36 -04:00
Eric Tune 2ca265ae3b Remove --etcd_servers flag from kubelet and proxy.
All the distros that use this have been updated,
or have PRs out to update them, or owners
have been asked to fix RPMs.

Removing this prevents further use of this model.

Remove now dead code: EtcdClientOrDie

Remove now dead pkg/proxy/config/etcd.go.

Remove unused imports.
2015-03-10 09:29:09 -07:00
Victor Marmol ab3c9de34b Refactoring cAdvisor interface into a package.
This will make it easier to start running the real cAdvisor alongside
Kubelet. This change is primarily no-op refactoring. The main behavioral
change is that we always create a cAdvisor interface and expect it to
always be available. When we make a request, if cAdvisor is not
connected the request fails with a connection error. This failure is
handled today as well.
2015-03-09 11:19:05 -07: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
Yu-Ju Hong 32fd331e73 Revert "Split up kubelet "source seen" logic"
We want to sync pods from file/http/etcd sources to the apiserver, hence
differentiating sources is no longer desired.

This reverts commit 110ab6f1bd.
2015-03-06 12:57:48 -08:00
Deyuan Deng 50de1a80c2 kubelet should take a client interface 2015-03-06 15:01:55 -05:00
Jordan Liggitt 02622b1401 Plumb tls and cert options into kubelet start 2015-03-05 16:30:52 -05:00
Paul Morie 02b18edac6 Allow multiple sources to be used with record package 2015-03-05 13:54:29 -05:00
Tim Hockin 9f1451121d keep hyperkube noise in one place 2015-02-20 08:49:12 -08:00
Tim Hockin 7fe7f8a542 move pkg/kubelet/server to cmd/kubelet/app 2015-02-20 08:49:12 -08:00
Daniel Smith fcddefa184 Set GOMAXPROCS. Print errors on stderr. 2015-02-19 10:30:31 -08:00
Joe Beda 76df5471b5 Covert the kubelet binary to hyperkube.
This leaves `pkg/kubelet/server/server.go` looking a little ugly as there is an extra layer of "config" structs that isn't needed.  This is left as a TODO for now.
2015-02-02 14:03:13 -08:00
Joe Beda d96afdd645 Move 'pkg/standalone' package to 'pkg/kubelet/server'.
This paves the way to hyperkube for the kubelet.
2015-02-02 14:03:13 -08:00
Tim Hockin 80ff2128de Merge pull request #3844 from mikedanese/dockercfg-dirs
Check other dirs for .dockercfg
2015-01-28 08:50:08 -08:00
Mike Danese 33f158073b Check other dirs for .dockercfg 2015-01-27 15:54:20 -08:00
Mrunal Patel b6a0ff1003 IP: Shared IPC. 2015-01-27 09:26:36 -08:00
Tim Hockin 6cb275829f Implement volumes as plugins.
Break up the monolithic volumes code in kubelet into very small individual
modules with a well-defined interface.  Move them all into their own packages
and beef up testing along the way.
2015-01-20 11:45:45 -08:00
Eric Tune 98bdd3f7c4 Test for and fix crash with nil client in kubelet.
Added test that fails before fix.
Fixed use of nil pointer.
2015-01-16 13:39:31 -08:00
Daniel Smith 46f8a56dba Merge pull request #3376 from erictune/channel_api
Kublet watches Pods.
2015-01-15 14:48:12 -08:00
Joe Beda 6bd6b905f5 Address code review comments
Add some documentation.
Create new util.InitFlags() function to merge and parse in one step.
2015-01-15 09:12:20 -08:00
Joe Beda dcd00c936e Move all kubernetes to posix flags 2015-01-15 09:12:19 -08:00
Eric Tune b759f67ee3 Kublet watches Pods.
Added a kubelet config source for watching pods on apiserver.
The pods are converted to boundpods for merging with other
config sources.

The preferred way to create a kubelet is now to pass an apiserver
client but not an etcd client.  Changed cmd/integration to use
apiserver to talk to kubelets.  And cmd/kubernetes.

Unit, integration, and e2e tests pass, except for a failure of the pd
e2e test which was unrelated.
2015-01-14 15:31:26 -08:00
Paul Morie fd834ae84d Pods should see services only from their own ns 2015-01-14 17:06:36 -05:00
Tim Hockin eac982137f Merge pull request #3260 from commonlisp/master
NewMainKubelet validates SyncFrequency, minimum GC age, etc.
2015-01-08 08:20:55 -08:00
George Kuan 06475fc4b4 NewMainKubelet validates Kubelet config parameters
Fixes issue #3202.
* Validates SyncFrequency and minimum GC age and propagates error to RunKubelet
* Defaults for Kubelet config and minor cleanup
* cmd Kubelet MinimumGCAge to 1m instead of 0
2015-01-07 18:50:53 -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
Dawn Chen f718957a79 Move GetHostName and GetDockerEndpoint methods to pkg/util 2015-01-05 11:44:21 -08:00
Tim Hockin 652479a3b1 Add kubelet DNS flags & api disable for DNS
This adds --cluster_dns and --cluster_domain flags to kubelet.  If
non-empty, kubelet will set docker --dns and --dns-search flags based on
these.  It uses the cluster DNS and appends the hosts's DNS servers.
Likewise for DNS search domains.

This also adds API support to bypass cluster DNS entirely, needed to
bootstrap DNS.
2014-12-29 09:18:12 -08:00
Vishnu Kannan 6f53f33fda Set oom_score_adj for kubelet and kube-proxy to a low value to help them survive system memory pressure. 2014-12-24 00:34:28 +00:00
Mike Danese 722abf1a95 - make cadvisor port configurable on the kubelet.
- added cadvisor port documentation.
2014-12-06 09:48:08 -08:00
Brendan Burns d47b510104 Refactor kubelet, standalone k8s and integration test to all use the same code. 2014-12-01 15:37:21 -08:00
Brendan Burns cea52d7e4f Merge pull request #2409 from mattmoor/master
Implements a credentialprovider library for use by DockerPuller.
2014-11-17 21:53:25 -08:00
Matt Moore 0c5d9ed0d2 Implements a credentialprovider library for use by DockerPuller.
This change refactors the way Kubelet's DockerPuller handles the docker config credentials to utilize a new credentialprovider library.

The credentialprovider library is based on several of the files from the Kubelet's dockertools directory, but supports a new pluggable model for retrieving a .dockercfg-compatible JSON blob with credentials.

With this change, the Kubelet will lazily ask for the docker config from a set of DockerConfigProvider extensions each time it needs a credential.

This change provides common implementations of DockerConfigProvider for:
 - "Default": load .dockercfg from disk
 - "Caching": wraps another provider in a cache that expires after a pre-specified lifetime.

GCP-only:
 - "google-dockercfg": reads a .dockercfg from a GCE instance's metadata
 - "google-dockercfg-url": reads a .dockercfg from a URL specified in a GCE instance's metadata.
 - "google-container-registry": reads an access token from GCE metadata into a password field.
2014-11-17 21:46:54 -08:00
Victor Marmol 6908c9ca4a Merge pull request #2407 from eparis/cadvisor-0.5.0
Cadvisor 0.5.0
2014-11-17 08:53:36 -08:00
Eric Paris 630acf221c alias cadvisor/client to cadvisor
cadvisor 0.5.0 changes the package from cadvisor to client.  Which of
course conflicts with our own client.  Alias it back to cadvisor.
2014-11-16 21:44:34 -05:00
Eric Tune c770e70495 Factor to function. 2014-11-14 14:09:51 -08:00
Eric Tune 6430250ce8 Send events from kubelet.
Accept argument specifying file with kubernetes_auth file.
Make an api client in kubelet.
Send events to apiserver.
2014-11-14 13:37:20 -08:00
Daniel Smith c67083572b Merge pull request #2268 from erictune/kubelet_local_log_event
Locally log kubelet events
2014-11-10 15:57:07 -08:00
Eric Tune c5d1782c00 Add local logging of kubelet events. 2014-11-10 13:57:13 -08:00
Eric Tune 08c8f2cde1 Record event of kubelet restart re: minion obj. 2014-11-10 13:46:48 -08:00
Erik St. Martin f75f2bbc0f Fixes #1612 kubelet should fail to start if it cannot create rootDir 2014-11-03 14:44:46 -05:00
Brendan Burns 51bf451932 Add container garbage collection. 2014-10-28 12:52:06 -07:00
Daniel Smith 82bbcee8d9 Move port definitions to their own package 2014-10-20 11:28:12 -07:00
Haney Maxwell c0bf974871 Allow disabling non-necessary kubelet and apiserver endpoints 2014-10-09 16:49:27 -07:00
Daniel Smith 1fc92bef53 Load cadvisor connection in background. 2014-10-08 17:06:41 -07:00
Haney Maxwell 4d87159eda Allow etcd config file to be passed to apiserver, kubelet, and proxy 2014-10-07 14:25:54 -07:00