Production-Grade Container Scheduling and Management
Go to file
Jing Xu 69b9f9b1f0 Fix issue in node status updating VolumeAttached list
During volume detach, the following might happen in reconciler

1. Pod is deleting
2. remove volume from reportedAsAttached, so node status updater will
update volumeAttached list
3. detach failed due to some issue
4. volume is added back in reportedAsAttached
5. reconciler loops again the volume, remove volume from
reportedAsAttached
6. detach will not be trigged because exponential back off, detach call
will fail with exponential backoff error
7. another pod is added which using the same volume on the same node
8. reconciler loops and it will NOT try to tigger detach anymore

At this point, volume is still attached and in actual state, but
volumeAttached list in node status does not has this volume anymore, and
will block volume mount from kubelet.

The fix in first round is to add volume back into the volume list that
need to reported as attached at step 6 when detach call failed with
error (exponentical backoff). However this might has some performance
issue if detach fail for a while. During this time, volume will be keep
removing/adding back to node status which will cause a surge of API
calls.

So we changed to logic to check first whether operation is safe to retry which
means no pending operation or it is not in exponentical backoff time
period before calling detach. This way we can avoid keep removing/adding
volume from node status.

Change-Id: I5d4e760c880d72937d34b9d3e904ecad125f802e
2021-10-05 09:44:35 -07:00
.github .github: update enhancement issue template to point to KEPs 2021-02-24 16:03:40 +05:30
api generated swagger docs 2021-08-11 15:22:13 +02:00
build Update cri-tools to v1.22.0 2021-08-18 10:15:15 +02:00
CHANGELOG Merge remote-tracking branch 'origin/master' 2021-08-19 17:43:32 +00:00
cluster run hack/update-netparse-cve.sh 2021-08-20 10:42:09 +02:00
cmd run hack/update-netparse-cve.sh 2021-08-20 10:42:09 +02:00
docs hack/update-bazel.sh 2021-02-28 15:17:29 -08:00
hack update and verify netparse 2021-08-20 10:42:09 +02:00
LICENSES Update cobra to v1.2.1 2021-08-18 15:02:25 -06:00
logo Create colors.md 2021-01-15 22:15:43 -08:00
pkg Fix issue in node status updating VolumeAttached list 2021-10-05 09:44:35 -07:00
plugin Merge pull request #103704 from robscott/endpoints-write-remove 2021-07-19 20:57:31 -07:00
staging Merge pull request #104373 from astraw99/fix_typo_rate_limiter 2021-08-20 10:09:25 -07:00
test Merge pull request #104451 from claudiubelu/test-images/windows-server-2022 2021-08-20 10:09:37 -07:00
third_party Copy golang license to staging copies 2021-08-10 17:37:28 -04:00
vendor vendor: bump k8s.io/util to get fix for LRU cache 2021-08-19 17:12:16 -04:00
.generated_files
.gitattributes
.gitignore Rename _examples to examples 2021-01-25 10:20:46 -08:00
CHANGELOG.md
code-of-conduct.md
CONTRIBUTING.md Remove stale analytics links from docs 2020-11-18 07:04:48 -06:00
go.mod vendor: bump k8s.io/util to get fix for LRU cache 2021-08-19 17:12:16 -04:00
go.sum vendor: bump k8s.io/util to get fix for LRU cache 2021-08-19 17:12:16 -04:00
LICENSE
Makefile
Makefile.generated_files
OWNERS Move brendandburns to to emeritus status. 2020-08-27 10:20:56 -04:00
OWNERS_ALIASES updating co-chairs 2021-08-13 06:41:40 +00:00
README.md Update godoc reference widget to pkg.go.dev 2021-01-26 09:34:07 -05:00
SECURITY_CONTACTS
SUPPORT.md

Kubernetes (K8s)

GoPkg Widget CII Best Practices


Kubernetes, also known as K8s, is an open source system for managing containerized applications across multiple hosts. It provides 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 your company 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 K8s

See our documentation on kubernetes.io.

Try our interactive tutorial.

Take a free course on Scalable Microservices with Kubernetes.

To use Kubernetes code as a library in other applications, see the list of published components. Use of the k8s.io/kubernetes module or k8s.io/kubernetes/... packages as libraries is not supported.

To start developing K8s

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.
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make
You have a working Docker environment.
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make quick-release

For the full story, 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.