Production-Grade Container Scheduling and Management
Go to file
Kubernetes Submit Queue 70dd10cc50 Merge pull request #41785 from jamiehannaford/cinder-performance
Automatic merge from submit-queue (batch tested with PRs 38505, 41785, 46315)

Only retrieve relevant volumes

**What this PR does / why we need it**:

Improves performance for Cinder volume attach/detach calls. 

Currently when Cinder volumes are attached or detached, functions try to retrieve details about the volume from the Nova API. Because some only have the volume name not its UUID, they use the list function in gophercloud to iterate over all volumes to find a match. This incurs severe performance problems on OpenStack projects with lots of volumes (sometimes thousands) since it needs to send a new request when the current page does not contain a match. A better way of doing this is use the `?name=XXX` query parameter to refine the results.

**Which issue this PR fixes**:

https://github.com/kubernetes/kubernetes/issues/26404

**Special notes for your reviewer**:

There were 2 ways of addressing this problem:

1. Use the `name` query parameter
2. Instead of using the list function, switch to using volume UUIDs and use the GET function instead. You'd need to change the signature of a few functions though, such as [`DeleteVolume`](https://github.com/kubernetes/kubernetes/blob/master/pkg/volume/cinder/cinder.go#L49), so I'm not sure how backwards compatible that is.

Since #1 does effectively the same as #2, I went with it because it ensures BC.

One assumption that is made is that the `volumeName` being retrieved matches exactly the name of the volume in Cinder. I'm not sure how accurate that is, but I see no reason why cloud providers would want to append/prefix things arbitrarily. 

**Release note**:
```release-note
Improves performance of Cinder volume attach/detach operations
```
2017-05-24 06:46:59 -07:00
.github
api PDB MaxUnavailable: Generated 2017-05-23 07:42:24 -07:00
build **What this PR does / why we need it**: 2017-05-21 20:44:21 -07:00
cluster Merge pull request #46149 from cjcullen/logtoggle 2017-05-23 15:19:08 -07:00
cmd Merge pull request #45635 from MrHohn/hyperkube-unit-test 2017-05-23 20:52:56 -07:00
docs PDB MaxUnavailable: Generated 2017-05-23 07:42:24 -07:00
examples Admin Can Specify in Which AWS Availability Zone(s) a PV Shall Be Created 2017-05-24 10:48:11 +02:00
federation Merge pull request #42042 from perotinus/svcaccounts 2017-05-23 19:42:57 -07:00
Godeps PBM govmomi dependencies 2017-05-22 19:43:10 -07:00
hack Merge pull request #46194 from CaoShuFeng/under 2017-05-23 15:49:03 -07:00
hooks
logo
pkg Merge pull request #41785 from jamiehannaford/cinder-performance 2017-05-24 06:46:59 -07:00
plugin Merge pull request #46147 from nicksardo/gce-cluster-id 2017-05-24 00:42:58 -07:00
staging Merge pull request #46213 from xiao-zhou/extention-api 2017-05-24 05:29:41 -07:00
test Merge pull request #46312 from dashpole/remove_memcg_jenkins_properties 2017-05-23 19:43:07 -07:00
third_party
translations
vendor PBM govmomi dependencies 2017-05-22 19:43:10 -07:00
.bazelrc
.gazelcfg.json
.generated_files
.gitattributes
.gitignore
BUILD.bazel
CHANGELOG.md
code-of-conduct.md
CONTRIBUTING.md
labels.yaml
LICENSE
Makefile
Makefile.generated_files
OWNERS
OWNERS_ALIASES Move PDB controller and type ownership to SIG-Apps 2017-05-22 12:55:28 -07:00
README.md
Vagrantfile
WORKSPACE

Kubernetes

Submit Queue Widget GoDoc Widget


Kubernetes is an open source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications.

Kubernetes builds upon a decade and a half of experience at Google running production workloads at scale using a system called Borg, combined with best-of-breed ideas and practices from the community.

Kubernetes is hosted by the Cloud Native Computing Foundation (CNCF). If you are a company that wants to help shape the evolution of technologies that are container-packaged, dynamically-scheduled and microservices-oriented, consider joining the CNCF. For details about who's involved and how Kubernetes plays a role, read the CNCF announcement.


To start using Kubernetes

See our documentation on kubernetes.io.

Try our interactive tutorial.

Take a free course on Scalable Microservices with Kubernetes.

To start developing Kubernetes

The community repository hosts all information about building Kubernetes from source, how to contribute code and documentation, who to contact about what, etc.

If you want to build Kubernetes right away there are two options:

You have a working Go environment.
$ go get -d k8s.io/kubernetes
$ cd $GOPATH/src/k8s.io/kubernetes
$ make
You have a working Docker environment.
$ git clone https://github.com/kubernetes/kubernetes
$ cd kubernetes
$ make quick-release

If you are less impatient, head over to the developer's documentation.

Support

If you need support, start with the troubleshooting guide and work your way through the process that we've outlined.

That said, if you have questions, reach out to us one way or another.

Analytics