Commit Graph

303 Commits

Author SHA1 Message Date
Kubernetes Submit Queue
17f82069bb Merge pull request #30825 from wongma7/pv-controller-informer
Automatic merge from submit-queue

Use PV shared informer in PV controller

Use the PV shared informer, addressing (partially) https://github.com/kubernetes/kubernetes/issues/26247 . Using the PVC shared informer is not so simple because sometimes the controller wants to `Requeue` and...
2016-09-10 12:40:30 -07:00
Jordan Liggitt
a869de61bd
Namespace certificates API group 2016-09-01 14:39:06 -04:00
gmarek
ea2d19f5d7 Remove unused argument to NodeController.Run 2016-08-30 14:24:56 +02:00
Matthew Wong
1d6dbdd9d2 Use PV shared informer in PV controller 2016-08-25 21:55:23 -04:00
Mike Danese
9f379df76b add an option to controller-manager to auto approve all CSRs 2016-08-22 11:46:01 -07:00
Jordan Liggitt
387f9ea952
Fix data race in PVC Run/Stop methods 2016-08-21 15:15:33 -04:00
Kubernetes Submit Queue
6ce405c6ee Merge pull request #27778 from screeley44/k8-vol-executor
Automatic merge from submit-queue

Add Events for operation_executor to show status of mounts, failed/successful to show in describe events

Fixes #27590 
@saad-ali @pmorie @erinboyd

After talking with @pmorie last week about the above issue, I decided to poke around and see if I could remedy.  The refactoring broke my previous UXP merged PR's that correctly showed failed mount errors in the describe events.  However, Not sure I implemented correctly, but it tested out and seems to be working, let me know what I missed or if this is not the correct approach.

```
Events:
  FirstSeen	LastSeen	Count	From			SubobjectPath	Type		Reason		Message
  ---------	--------	-----	----			-------------	--------	------		-------
  2m		2m		1	{default-scheduler }			Normal		Scheduled	Successfully assigned nfs-bb-pod1 to 127.0.0.1
  44s		44s		1	{kubelet 127.0.0.1}			Warning		FailedMount	Unable to mount volumes for pod "nfs-bb-pod1_default(a94f64f1-37c9-11e6-9aa5-52540073d346)": timeout expired waiting for volumes to attach/mount for pod "nfs-bb-pod1"/"default". list of unattached/unmounted volumes=[nfsvol]
  44s		44s		1	{kubelet 127.0.0.1}			Warning		FailedSync	Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "nfs-bb-pod1"/"default". list of unattached/unmounted volumes=[nfsvol]
  38s		38s		1	{kubelet }				Warning		FailedMount	Unable to mount volumes for pod "a94f64f1-37c9-11e6-9aa5-52540073d346": Mount failed: exit status 32
Mounting arguments: nfs1.rhs:/opt/data99 /var/lib/kubelet/pods/a94f64f1-37c9-11e6-9aa5-52540073d346/volumes/kubernetes.io~nfs/nfsvol nfs []
Output: mount.nfs: Connection timed out

Resolution hint: Check and make sure the NFS Server exists (ensure that correct IPAddress/Hostname was given) and is available/reachable.
Also make sure firewall ports are open on both client and NFS Server (2049 v4 and 2049, 20048 and 111 for v3).
Use commands telnet <nfs server> <port> and showmount <nfs server> to help test connectivity.
```
2016-08-19 08:27:48 -07:00
Jan Safranek
bb5d562f37 Restore alpha behavior 2016-08-18 10:36:50 +02:00
Jan Safranek
6e4d95f646 Dynamic provisioning V2 controller, provisioners, docs and tests. 2016-08-18 10:36:49 +02:00
Scott Creeley
782d7d9815 Add Events for operation_executor to show status of mounts, failed or successful 2016-08-17 09:53:47 -04:00
gmarek
4cf698ef04 Expose flags for new NodeEviction logic in NodeController 2016-08-17 10:43:24 +02:00
Matt Liggett
d60ba3c6e2 Implement DisruptionController.
Part of #12611
2016-08-16 15:20:41 -07:00
Janet Kuo
e4269d490f Use unversioned client in scheduledjobs and set group version to batch/v2alpha1 2016-08-12 16:46:09 -07:00
Girish Kalele
f64c052858 Revert "Scheduledjob e2e" 2016-08-12 16:12:19 -07:00
Janet Kuo
fe53ec34cf Use unversioned client in scheduledjobs and set group version to batch/v2alpha1 2016-08-11 13:06:18 +02:00
Chao Xu
4d2350632c only store typeMeta and objectMeta in the gc store 2016-08-08 17:23:13 -07:00
Eric Tune
8675e014fb ScheduledJob controller 2016-08-05 13:34:50 -07:00
Kubernetes Submit Queue
c41c3d4d14 Merge pull request #25189 from mfanjie/kube-service-controller-rewritten
Automatic merge from submit-queue

Rewrite service controller to apply best controller pattern

This PR is a long term solution for #21625:
We apply the same pattern like replication controller to service controller to avoid the potential process order messes in service controller, the change includes:
1. introduce informer controller to watch service changes from kube-apiserver, so that every changes on same service will be kept in serviceStore as the only element.
2. put the service name to be processed to working queue
3. when process service, always get info from serviceStore to ensure the info is up-to-date
4. keep the retry mechanism, sleep for certain interval and add it back to queue.
5. remote the logic of reading last service info from kube-apiserver before processing the LB info as we trust the info from serviceStore.

The UT has been passed, manual test passed after I hardcode the cloud provider as FakeCloud, however I am not able to boot a k8s cluster with any available cloudprovider, so e2e test is not done.

Submit this PR first for review and for triggering a e2e test.
2016-08-04 14:05:51 -07:00
Dominika Hodovska
305342c48d Use shared informer factory in controllers 2016-08-04 10:10:03 +02:00
Dominika Hodovska
816f6d32ca Collapse duplicate informer creation paths 2016-08-04 09:02:13 +02:00
mfanjie
5fa640490e rewrite serivce controller to apply the latest controller pattern 2016-08-04 09:28:55 +08:00
k8s-merge-robot
59836d6dbd Merge pull request #24841 from sjenning/shared-informer
Automatic merge from submit-queue

update node controller to use shared pod informer

continuing work from #24470 and #23575
2016-08-02 03:45:01 -07:00
k8s-merge-robot
444e34fc7e Merge pull request #29371 from ping035627/ping035627-patch-0722
Automatic merge from submit-queue

Print two errors to log

The PR add two error info to log.
2016-07-22 17:13:18 -07:00
k8s-merge-robot
73f1218398 Merge pull request #29370 from ping035627/ping035627-patch-0721-2
Automatic merge from submit-queue

add configz.InstallHandler in controllermanager.go

I think it should add configz.InstallHandler for Run function in controllermanager.go.
2016-07-22 17:13:14 -07:00
k8s-merge-robot
60e59c9461 Merge pull request #29184 from wojtek-t/rs_controller_ref
Automatic merge from submit-queue

ReplicaSet controller can set/remove ControllerRef

This is mostly a copy from https://github.com/kubernetes/kubernetes/pull/27600
2016-07-22 04:18:00 -07:00
PingWang
f759f3243a print two errors to log
Signed-off-by: PingWang <wang.ping5@zte.com.cn>

update for go vet

Signed-off-by: PingWang <wang.ping5@zte.com.cn>
2016-07-22 09:47:52 +08:00
PingWang
2dae79c114 add configz.InstallHandler
Signed-off-by: PingWang <wang.ping5@zte.com.cn>
2016-07-22 08:25:33 +08:00
k8s-merge-robot
8780b45a04 Merge pull request #29369 from ping035627/ping035627-patch-0721
Automatic merge from submit-queue

two optimization for StartControllers in controllermanager.go

The PR changed two places to optimise StartControllers function in controllermanager.go.
2016-07-21 14:51:13 -07:00
PingWang
eb2f6934c6 two optimization for StartControllers
Signed-off-by: PingWang <wang.ping5@zte.com.cn>
2016-07-21 18:31:28 +08:00
Wojciech Tyczynski
85de930a66 ReplicaSet controller can set/remove ControllerRef 2016-07-21 11:36:52 +02:00
Seth Jennings
db6026c82a node controller use shared pod informer 2016-07-20 15:26:19 -05:00
Wojciech Tyczynski
2794cf538c Use sharedPodInformer in ReplicaSet controller 2016-07-20 12:25:26 +02:00
George Tankersley
803c7ac299 certificates: implement certificates controller 2016-07-19 11:25:38 -07:00
Prashanth Balasubramanian
2f9516db30 List all nodes and occupy cidr map before starting allocations 2016-07-16 13:54:01 -07:00
Chao Xu
11a341de67 let RC manager utilize the GC 2016-07-14 19:59:31 -07:00
gmarek
f6b1c316e9 Allow switching rate limiter inside RateLimitedQueue 2016-07-14 15:38:14 +02:00
k8s-merge-robot
b50e66c66e Merge pull request #28340 from ZTE-PaaS/zhangke-patch-007
Automatic merge from submit-queue

controller-manager support number of garbage collector workers to be configurable

The number of garbage collector workers of controller-manager is a fixed value 5 now, make it configurable should more properly
2016-07-13 12:54:15 -07:00
gmarek
5677a9845e Split NodeController rate limiters between zones 2016-07-13 14:09:19 +02:00
Ke Zhang
d74010211a controller-manager support number of garbage collector workers to be configurable 2016-07-13 13:13:20 +08:00
saadali
0dd17fff22 Reorganize volume controllers and manager 2016-07-01 18:50:25 -07:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
Jordan Liggitt
f45d9dc2f8 Convert service account token controller to use a work queue 2016-06-27 13:01:24 -04:00
k8s-merge-robot
601173c2fe Merge pull request #26916 from caesarxuchao/podgc
Automatic merge from submit-queue

rename the gc for terminated pods to "podgc"

to avoid name collision with the [generic garbage collector](https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/garbagecollector/garbagecollector.go)
2016-06-25 12:24:07 -07:00
markturansky
16ec36c591 added toggle to disable dynamic provisioning 2016-06-20 01:15:23 -04:00
Chao Xu
91de14cf13 rename the gc for terminated pods to "podgc" 2016-06-07 22:10:34 -07:00
Chao Xu
b3df629432 add gc and its enablement flag to kube-controller-manager 2016-05-28 14:12:33 -07:00
k8s-merge-robot
a5222574d4 Merge pull request #25614 from justinsb/feature/flag-configure-cloud-routes
Automatic merge from submit-queue

kube-controller-manager: Add configure-cloud-routes option

This allows kube-controller-manager to allocate CIDRs to nodes (with
allocate-node-cidrs=true), but will not try to configure them on the
cloud provider, even if the cloud provider supports Routes.

The default is configure-cloud-routes=true, and it will only try to
configure routes if allocate-node-cidrs is also configured, so the
default behaviour is unchanged.

This is useful because on AWS the cloud provider configures routes by
setting up VPC routing table entries, but there is a limit of 50
entries.  So setting configure-cloud-routes on AWS would allow us to
continue to allocate node CIDRs as today, but replace the VPC
route-table mechanism with something not limited to 50 nodes.

We can't just turn off the cloud-provider entirely because it also
controls other things - node discovery, load balancer creation etc.

Fix #25602
2016-05-27 23:52:51 -07:00
Alex Robinson
d577550dd0 Merge pull request #26054 from gmarek/flags
Make service-range flag in controller-manager optional
2016-05-27 14:26:15 -07:00
Justin Santa Barbara
b754393630 kube-controller-manager: Add configure-cloud-routes option
This allows kube-controller-manager to allocate CIDRs to nodes (with
allocate-node-cidrs=true), but will not try to configure them on the
cloud provider, even if the cloud provider supports Routes.

The default is configure-cloud-routes=true, and it will only try to
configure routes if allocate-node-cidrs is also configured, so the
default behaviour is unchanged.

This is useful because on AWS the cloud provider configures routes by
setting up VPC routing table entries, but there is a limit of 50
entries.  So setting configure-cloud-routes on AWS would allow us to
continue to allocate node CIDRs as today, but replace the VPC
route-table mechanism with something not limited to 50 nodes.

We can't just turn off the cloud-provider entirely because it also
controls other things - node discovery, load balancer creation etc.

Fix #25602
2016-05-27 09:42:20 -04:00
saadali
92500a20d7 Attach detach controller business logic added
Split controller cache into actual and desired state of world.
Controller will only operate on volumes scheduled to nodes that
have the "volumes.kubernetes.io/controller-managed-attach" annotation.
2016-05-24 23:01:16 -07:00
gmarek
08385b2c5f Make service-range flag in controller-manager optional 2016-05-23 09:37:53 +02:00
mqliang
17d5a302bb make podcidr mask size configurable 2016-05-20 20:44:40 +08:00
mqliang
cf7a3475f3 Don't allow node controller to allocate into service CIDR range 2016-05-20 20:44:40 +08:00
k8s-merge-robot
c63ac4e664 Merge pull request #24331 from jsafrane/devel/refactor-binder
Automatic merge from submit-queue

Refactor persistent volume controller

Here is complete persistent controller as designed in https://github.com/pmorie/pv-haxxz/blob/master/controller.go

It's feature complete and compatible with current binder/recycler/provisioner. No new features, it *should* be much more stable and predictable.

Testing
--
The unit test framework is quite complicated, still it was necessary to reach reasonable coverage (78% in `persistentvolume_controller.go`). The untested part are error cases, which are quite hard to test in reasonable way - sure, I can inject a VersionConflictError on any object update and check the error bubbles up to appropriate places, but the real test would be to run `syncClaim`/`syncVolume` again and check it recovers appropriately from the error in the next periodic sync. That's the hard part.

Organization
---
The PR starts with `rm -rf kubernetes/pkg/controller/persistentvolume`. I find it easier to read when I see only the new controller without old pieces scattered around.
[`types.go` from the old controller is reused to speed up matching a bit, the code looks solid and has 95% unit test coverage].

I tried to split the PR into smaller patches, let me know what you think.

~~TODO~~
--

* ~~Missing: provisioning, recycling~~.
* ~~Fix integration tests~~
* ~~Fix e2e tests~~

@kubernetes/sig-storage

<!-- 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/24331)
<!-- Reviewable:end -->

Fixes #15632
2016-05-19 03:06:46 -07:00
Jan Safranek
79b91b9ee0 Refactor persistent volume initialization
There should be only one initialization function, shared by the real
controller and unit tests.
2016-05-18 10:06:51 +02:00
Jan Safranek
514d595881 provisioning: Implement provisioner 2016-05-18 10:06:51 +02:00
Jan Safranek
71aa892a86 Implement volume controller skeleton.
This is a simple controller that watches changes of PersistentVolumes and
PersistentVolumeClaims.
2016-05-17 15:14:02 +02:00
Chao Xu
c73406bcfe the garbage collector controller 2016-05-15 16:04:19 -07:00
saadali
214b4c28bc Skeleton of new attach detach controller 2016-05-09 11:34:11 -07:00
mqliang
c10f43a2e5 implement AddIndexers for SharedIndexInformer 2016-05-06 21:23:18 +08:00
mqliang
9011207f18 add namespace index to rc and pod 2016-05-06 17:12:36 +08:00
Prashanth Balasubramanian
6bc3052551 PetSet alpha controller 2016-05-04 18:39:17 -07:00
Clayton Coleman
fdb110c859
Fix the rest of the code 2016-04-29 17:12:10 -04:00
k8s-merge-robot
ea15d792a1 Merge pull request #24470 from deads2k/shared-cache-02
Automatic merge from submit-queue

update controllers watching all pods to share an informer

This plumbs the shared pod informer through the various controllers to avoid duplicated watches.
2016-04-23 17:18:47 -07:00
deads2k
60fe17d338 update resource quota controller for shared informers 2016-04-21 08:20:39 -04:00
deads2k
8c4e3af1a3 switch job controller to shared informer 2016-04-21 08:20:39 -04:00
deads2k
8b707016f9 convert daemonset controller to SharedInformer 2016-04-21 08:20:39 -04:00
Wojciech Tyczynski
d6896fa45a Allow setting content-type in binaries 2016-04-21 14:12:13 +02:00
deads2k
f0c33d65b6 start sharing the pod cache and list/watch 2016-04-18 08:51:55 -04:00
Robert Rati
83de3e9733 Added optional delays to starting controller managers. #22669 2016-04-13 09:52:28 -04:00
harry
8472cfa214 Refactor throttle into util pkg
Fix missing throttle.go
2016-03-25 08:32:23 +08:00
Harry Zhang
a4d04095d0 Refactor crlf & crypto 2016-03-21 20:20:05 +08:00
Wojciech Tyczynski
e2ebc50648 Don't sync all objects for replenishment as often as ResourceQuota. 2016-03-07 08:31:09 +01:00
k8s-merge-robot
2808973503 Merge pull request #22038 from mqliang/daemonset-cache
Auto commit by PR queue bot
2016-03-05 03:38:55 -08:00
k8s-merge-robot
57670edc15 Merge pull request #22345 from fgrzadkowski/hpa_events
Auto commit by PR queue bot
2016-03-04 09:18:21 -08:00
k8s-merge-robot
0e3469dce3 Merge pull request #22183 from pmorie/config-quota
Auto commit by PR queue bot
2016-03-04 03:12:51 -08:00
Filip Grzadkowski
b5c9af9762 Use controller framework in HPA controller.
Ref #22174
2016-03-03 11:55:44 +01:00
derekwaynecarr
41057b02d5 Move namespace controller to use discovery and dynamic client 2016-03-02 23:34:18 -05:00
Paul Morie
834776aa1f Add resource quota for ConfigMap 2016-03-02 09:59:51 -05:00
mqliang
7e1ab26c06 add lookup cache for daemonset 2016-03-01 22:04:56 +08:00
Kris
e664ef922f Move restclient to its own package 2016-02-29 12:05:13 -08:00
k8s-merge-robot
6f8a951f87 Merge pull request #20446 from derekwaynecarr/quota_scopes
Auto commit by PR queue bot
2016-02-27 19:46:42 -08:00
k8s-merge-robot
f0c0af2561 Merge pull request #20528 from mikedanese/varz
Auto commit by PR queue bot
2016-02-27 00:27:18 -08:00
derekwaynecarr
af85fb57c3 Make ResourceQuota admission and controller work generically 2016-02-26 20:34:15 -05:00
Mike Danese
5ec02bd021 add http handler to export configuration state 2016-02-24 14:12:28 -08:00
mqliang
e44e71ca87 make cache size configurable 2016-02-24 22:37:02 +08:00
Jan Safranek
1d0b1c227b Add PV.Name into names of generated GCE/AWS/OSP volumes.
Volume names have now format <cluster-name>-dynamic-<pv-name>.

pv-name is guaranteed to be unique in Kubernetes cluster, adding
<cluster-name> ensures we don't conflict with any running cluster
in the cloud project (kube-controller-manager --cluster-name=XXX).

'kubernetes' is the default cluster name.
2016-02-12 09:46:59 +01:00
Mike Danese
31b8905da7 move controller manager to compoenent config 2016-02-11 13:13:03 -08:00
derekwaynecarr
56f5b992bb Fix incorrect versions passed into namespace controller 2016-02-10 22:44:52 -05:00
derekwaynecarr
106693d9b3 Refactor namespace controller to use workers, do more delete collection calls 2016-02-09 16:39:13 -05:00
Jan Chaloupka
4389b3f0d6 Rewritte util.* -> wait.* wherever reasonable 2016-02-07 12:02:20 +01:00
Madhusudan.C.S
4f9b8b2bfc Link all the ReplicaSet controller boilerplate together.
1. Enable replica set in controller manager.
2. Enable replica set etcd storage in master package.
3. Add replica set support to kubectl commands.
2016-02-05 21:05:10 -08:00
Mike Danese
b1743a6887 this is a manual reversion of #20702
I can't revert with github which says "Sorry, this pull request couldn’t be
reverted automatically. It may have already been reverted, or the content may
have changed since it was merged."

Reverts commit: 0c191e787b
2016-02-05 16:34:02 -08:00
Chao Xu
184440f8ef rename release_1_2 to internalclientset 2016-02-05 14:02:28 -08:00
Jan Safranek
76b6449715 Retry recycle or delete operation on failure.
Recycle controller tries to recycle or delete a PV several times.
It stores count of failed attempts and timestamp of the last attempt in
annotations of the PV.

By default, the controller tries to recycle/delete a PV 3 times in
10 minutes interval. These values are configurable by
kube-controller-manager --pv-recycler-maximum-retry=X --pvclaimbinder-sync-period=Y
arguments.
2016-02-05 17:02:13 +01:00
gmarek
0c191e787b Split controller flags between controllers 2016-02-05 12:17:51 +01:00
Chao Xu
1b047f8e67 rename legacy to core 2016-02-04 14:26:56 -08:00
Chao Xu
f9f5736b01 grep sed 2016-02-03 13:06:07 -08:00
Chao Xu
fe7887f1ec replace the client with clientset in controllers 2016-02-02 20:28:45 -08:00
Chao Xu
c72d234bbf replacing handwritten client in several controllers 2016-01-31 15:42:02 -08:00