Commit Graph

145 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
096819c963
Merge pull request #95909 from pohly/pv-controller-delete-pv-fix
PV controller: don't delete PVs when PVC is not known yet
2020-11-02 02:00:52 -08:00
Patrick Ohly
5686664a1d PV controller: don't delete PVs when PVC is not known yet
Normally, the PV controller knows about the PVC that triggers the
creation of a PV before it sees the PV, because the PV controller must
set the volume.beta.kubernetes.io/storage-provisioner annotation that
tells an external provisioner to create the PV.

When restarting, the PV controller first syncs its caches, so that
case is also covered.

However, the creator of a PVC might decided to set that annotation
itself to speed up volume creation. While unusual, it's not forbidden
and thus part of the external Kubernetes API. Whether it makes sense
depends on the intentions of the user.

When that is done and there is heavy load, an external provisioner
might see the PVC and create a PV before the PV controller sees the
PVC. If the PV controller then encounters the PV before the PVC, it
incorrectly concludes that the PV needs to be deleted instead of being
bound.

The same issue occurred earlier for external binding and the existing
code for looking up a PVC in the cache or in the apiserver solves the
issue also for volume provisioning, it just needs to be enabled also
for PVs without the pv.kubernetes.io/bound-by-controller annotation.
2020-10-27 11:26:58 +01:00
Matthew Cary
f2e23afcf1 Adds filtering of hosts to DialContexts.
The provided DialContext wraps existing clients' DialContext in an attempt to
preserve any existing timeout configuration. In some cases, we may replace
infinite timeouts with golang defaults.

- scaleio: tcp connect/keepalive values changed from 0/15 to 30/30
- storageos: no change
2020-09-18 00:07:32 +00:00
Yecheng Fu
8422044f17 sharing a common pod pvc indexer among volume controllers 2020-06-03 14:51:21 +08:00
Yecheng Fu
32df4300ef emit correct event when unbound delay binding claim is used by pod 2020-05-29 19:36:13 +08:00
Davanum Srinivas
442a69c3bd
switch over k/k to use klog v2
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2020-05-16 07:54:27 -04:00
Jayasekhar Konduru
5a4f1be19d Added events for failures in PV/PVC processing:
- PV has a dangling reference to a PVC
- PVC is trying to bind to a PV that already references a different PVC

Change-Id: Ic509d39808763149b02b4dd52347edb74a8803fd
2020-04-16 22:11:02 -07:00
Mike Danese
c58e69ec79 automated refactor 2020-03-05 14:59:46 -08:00
Hemant Kumar
d9f7a1f311 Don't call delete for already deleted volumes 2020-02-18 15:59:47 -05:00
Mike Danese
25651408ae generated: run refactor 2020-02-08 12:30:21 -05:00
Mike Danese
3aa59f7f30 generated: run refactor 2020-02-07 18:16:47 -08:00
David Zhu
b7817a2981 Add annotation annealing for migration for PVs and PVCs during syncVolume and syncClaim. This allows external-provisioners to pick up and delete volumes when they have been rolled up from previous kubernetes versions. 2020-01-27 16:14:53 -08:00
danielqsj
5bc0e26c19 unify alias of api errors under pkg and staging 2019-12-26 16:42:28 +08:00
Deep Debroy
129f15328b Disable in-tree plugins migrated to CSI
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2019-11-14 17:28:21 -08:00
yuxiaobo
81e9f21f83 Correct spelling mistakes
Signed-off-by: yuxiaobo <yuxiaobogo@163.com>
2019-11-06 20:25:19 +08:00
Jan Safranek
a689697519 Do not bind block PV/PVCs when block feature gate is off 2019-10-17 12:40:22 +02:00
David Zhu
92cb06a2e7 Refactor CSI Translation Library into a struct that is injected into various components to simplify unit testing in future 2019-09-27 12:59:53 -07:00
Yi Tang
8c13f9dea3 fix pv controller not find pv for pvc provisioning 2019-07-26 16:24:30 +08:00
AllenZMC
852040c036
fix typos in pv_controller.go
make code kinda more readable
2019-07-25 11:28:19 +08:00
Shintaro Murakami
7c0b33e012 Add check to reduce orphaned volume 2019-07-11 16:31:56 +09:00
Ted Yu
a18633427b Drop unnecessary claim parameter from PersistentVolumeController#updateBindVolumeToClaim 2019-07-01 13:30:11 +08:00
xiangqian
38a884aa04 using storage class provisioner instead of annotation of a pv for external provisioner
minor updates
2019-05-30 10:19:36 -07:00
xiangqian
9688511595 record provision and deletion latency metric
instead of using provisioner from storage class directly, uses plugin name firstly
2019-05-29 14:15:30 -07:00
Yecheng Fu
2d0d226371 Move all private annotations to shared package and update code 2019-05-05 09:43:43 +08:00
Yecheng Fu
842fed658c Refactor PV scheduling library into separate package 2019-05-02 14:45:52 +08:00
Deep Debroy
1da91ad39a Add GetIntreeNameFromCSIName and SupersedesInTreePlugin APIs and unit tests
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2019-03-04 16:36:45 -08:00
Deep Debroy
23478f104f PV Controller changes to support provisioning in CSI Migration scenarios
Signed-off-by: Deep Debroy <ddebroy@docker.com>
2019-02-26 08:39:54 -08:00
Andrew Kim
ca6a051b00 remove cloud provider dependencies to pkg/volume
Co-authored-by: Weibin Lin <linweibin1@huawei.com>
2019-02-09 01:16:55 -05:00
Yecheng Fu
8b79fe3ebe Do not call methods on PersistentVolumeController 2019-02-06 12:04:05 +08:00
Kubernetes Prow Robot
ccb1e1f26d
Merge pull request #72045 from cofyc/fix71928
Make volume binder resilient to races
2019-01-11 17:42:32 -08:00
Yecheng Fu
13d87fbff8 Make volume binder resilient to races
- FindPodVolumes do not error if PVC is assumed with selected node
- BindPodVolumes check against API objects
2019-01-08 02:14:13 +08:00
Saugat Acharya
926cabfc3a
Remove multiple spaces after a full stop 2019-01-07 17:04:46 +05:45
Saugat Acharya
956a21cd31
Aesthetic changes
* Remove multiple spaces after full stop
* Include a single space after a comment
* Fixed a typo
```diff
- eixst
+ exist
```
* Make comment and function name the same
2019-01-07 16:49:12 +05:45
Jordan Liggitt
73dcfe12da Stop checking VolumeScheduling feature gate 2018-12-27 17:45:45 -05:00
Matthew Wong
dd517c9ff2 Update all tests to account for BlockVolume enabled by default 2018-11-16 13:38:59 -05:00
Tomas Smetana
f9c9ef6ec0 PV Controller: fix recycling
In the situation when a PVC is deleted and a new one with the same name
bound to a different PV the "old" PV may fail to recycle since it's
associaded with a PVC that is detected as being in use. This may cause
the recycler processes to hang.
2018-11-15 16:38:25 +01:00
Davanum Srinivas
954996e231
Move from glog to klog
- Move from the old github.com/golang/glog to k8s.io/klog
- klog as explicit InitFlags() so we add them as necessary
- we update the other repositories that we vendor that made a similar
change from glog to klog
  * github.com/kubernetes/repo-infra
  * k8s.io/gengo/
  * k8s.io/kube-openapi/
  * github.com/google/cadvisor
- Entirely remove all references to glog
- Fix some tests by explicit InitFlags in their init() methods

Change-Id: I92db545ff36fcec83afe98f550c9e630098b3135
2018-11-10 07:50:31 -05:00
Walter Fender
f3f46d5f5a Moving the cloudprovider interface to staging.
Individual implementations are not yet being moved.
Fixed all dependencies which call the interface.
Fixed golint exceptions to reflect the move.
Added project info as per @dims and
https://github.com/kubernetes/kubernetes-template-project.
Added dims to the security contacts.
Fixed minor issues.
Added missing template files.
Copied ControllerClientBuilder interface to cp.
This allows us to break the only dependency on K8s/K8s.
Added TODO to ControllerClientBuilder.
Fixed GoDeps.
Factored in feedback from JustinSB.
2018-10-04 14:41:20 -07:00
lichuqiang
b4a57f6855 combine feature gate VolumeScheduling and DynamicProvisioningScheduling into one 2018-08-29 10:30:08 +08:00
Yecheng Fu
493502d0ae Double check PVC if not found in syncVolume.
If PV is bound by external PV binder (e.g. kube-scheduler), it's
possible on heavy load that corresponding PVC is not synced to
controller local cache yet.
2018-08-16 10:33:28 +08:00
Fabio Bertinatto
a15cc29442 Add extra metrics for PV Controller
Specifically:

* Total provision time
* Total PV deletion time
* Number of times PV provisioning failed
* Number of times PV deletion failed
2018-07-19 15:36:37 +02:00
Fabio Bertinatto
97e63985dc Return error in provisionClaimOperation 2018-07-19 15:27:40 +02:00
Jonathan Pentecost
b4cab1be0e persistentvolume: fix spelling of storageClasseName
Fixed spelling of error in 'pv_controller', was 'storageClasseName', is
now 'storageClassName'.
2018-07-17 14:34:51 +01:00
lichuqiang
bccc8fe979 Provision interface change 2018-06-05 16:35:16 +08:00
lichuqiang
446f36559e pv_controller change for provisioning 2018-05-24 17:12:38 +08:00
lichuqiang
95b530366a Add dynamic provisioning process 2018-05-24 17:12:38 +08:00
Kubernetes Submit Queue
8de8ca7bc8
Merge pull request #59947 from mkimuram/issue/59942
Automatic merge from submit-queue (batch tested with PRs 62448, 59317, 59947, 62418, 62352). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Add binding error message for volumeMode:Block unsupported case

**What this PR does / why we need it**:
This PR adds a binding error message for volumeMode:Block
unsupported case.
With this message, users can understand why PV is not bound to
PVC on dynamic provisioning.

**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
Fixes: #59942

**Special notes for your reviewer**:
/cc @mtanino 
/sig storage

**Release note**:

```release-note
NONE
```
2018-04-17 16:31:21 -07:00
mkimuram
0ee71f0cc2 Add binding error message for volumeMode:Block unsupported case
This commit adds a binding error message for volumeMode:Block
unsupported case.
With this message, users can understand why PV is not bound to
PVC on both dynamic provisioning and manually creating volume.

This patch works as follows:

- In syncVolume, before adding the claim to claimQueue, check if
  there is a volumeMode mismatch, and if there is, record the
  event for both pv and pvc and skip adding to the queue.

fixes: #59942
2018-04-16 15:22:35 -04:00
hzxuzhonghu
a5b121724d pv controller clean code 2018-03-27 20:00:45 +08:00
wackxu
f737ad62ed update import 2018-02-27 20:23:35 +08:00