Production-Grade Container Scheduling and Management
Go to file
k8s-merge-robot 98af443209 Merge pull request #26398 from euank/various-kubenet-fixes
Automatic merge from submit-queue

Various kubenet fixes (panics and bugs and cidrs, oh my)

This PR fixes the following issues:

1. Corrects an inverse error-check that prevented `shaper.Reset` from ever being called with a correct ip address
2. Fix an issue where `parseCIDR` would fail after a kubelet restart due to an IP being stored instead of a CIDR being stored in the cache.
3. Fix an issue where kubenet could panic in TearDownPod if it was called before SetUpPod (e.g. after a kubelet restart).. because of bug number 1, this didn't happen except in rare situations (see 2 for why such a rare situation might happen)

This adds a test, but more would definitely be useful.
The commits are also granular enough I could split this up more if desired.

I'm also not super-familiar with this code, so review and feedback would be welcome.

Testing done:
```
$ cat examples/egress/egress.yml
 apiVersion: v1
kind: Pod
metadata:
  labels:
    name: egress
  name: egress-output
  annotations: {"kubernetes.io/ingress-bandwidth": "300k"}
spec:
  restartPolicy: Never
  containers:
    - name: egress
      image: busybox
      command: ["sh", "-c", "sleep 60"]
$ cat kubelet.log
...
Running: tc filter add dev cbr0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.5/32 flowid 1:1
# setup
...
Running: tc filter del dev cbr0 parent 1:proto ip prio 1 handle 800::800 u32
# teardown
```

I also did various other bits of manual testing and logging to hunt down the panic and other issues, but don't have anything to paste for that 

cc @dcbw @kubernetes/sig-network
2016-05-29 04:04:22 -07:00
.github Explain how to close an issue within a PR message 2016-05-18 10:03:50 +10:00
api/swagger-spec Merge pull request #25826 from freehan/svcsourcerange 2016-05-28 02:20:13 -07:00
build Don't delete existing CI releases if pushing the same version. 2016-05-27 12:07:49 -07:00
cluster Merge pull request #26442 from mwielgus/reduce-ca-request 2016-05-27 13:11:13 -07:00
cmd add gc and its enablement flag to kube-controller-manager 2016-05-28 14:12:33 -07:00
contrib kube-controller-manager: Add configure-cloud-routes option 2016-05-27 09:42:20 -04:00
docs add gc and its enablement flag to kube-controller-manager 2016-05-28 14:12:33 -07:00
examples Merge pull request #26022 from chrislovecnm/cassandra-image-bump 2016-05-29 02:17:13 -07:00
federation Merge pull request #26325 from quinton-hoole/2016-05-25-federation-cluster-status-zone-update 2016-05-29 00:40:09 -07:00
Godeps Merge pull request #26020 from quinton-hoole/2016-05-21-google-cloud-dns 2016-05-28 07:55:21 -07:00
hack Revert "Make Privileged pods node e2e use the framework" 2016-05-29 06:17:35 +02:00
hooks Get rid of hack/after-build scripts 2016-05-08 20:32:06 -07:00
logo
pkg Merge pull request #26398 from euank/various-kubenet-fixes 2016-05-29 04:04:22 -07:00
plugin Merge pull request #26415 from wojtek-t/network_not_ready 2016-05-29 03:06:59 -07:00
release
test Revert "Make Privileged pods node e2e use the framework" 2016-05-29 06:17:35 +02:00
third_party update third_party go/build to go1.6 2016-05-08 20:30:38 -07:00
vendor Merge pull request #26020 from quinton-hoole/2016-05-21-google-cloud-dns 2016-05-28 07:55:21 -07:00
www
.generated_docs Running genfeddocs 2016-05-25 15:04:20 -07:00
.gitignore Merge pull request #19872 from nagarjung/kube_tarball 2016-05-23 22:57:12 -07:00
.travis.yml
CHANGELOG.md implement taints and tolerations 2016-05-18 15:06:23 +00:00
code-of-conduct.md
CONTRIB.md
CONTRIBUTING.md
DESIGN.md
LICENSE
Makefile Revert "Make Privileged pods node e2e use the framework" 2016-05-29 06:17:35 +02:00
README.md README: be more accurate about where k8s can run 2016-05-15 13:59:31 -05:00
Vagrantfile

Kubernetes

GoReportCard Widget GoDoc Widget Travis Widget Coverage Status Widget

Are you ...

  • Interested in learning more about using Kubernetes? Please see our user-facing documentation on kubernetes.io
  • Interested in hacking on the core Kubernetes code base? Keep reading!

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

Kubernetes is:

  • lean: lightweight, simple, accessible
  • portable: public, private, hybrid, multi cloud
  • extensible: modular, pluggable, hookable, composable
  • self-healing: auto-placement, auto-restart, auto-replication

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


Kubernetes is ready for Production!

With the 1.0.1 release Kubernetes is ready to serve your production workloads.

Kubernetes can run anywhere!

You can run Kubernetes on your local workstation under Vagrant, cloud providers (e.g. GCE, AWS, Azure), and physical hardware. Essentially, anywhere Linux runs you can run Kubernetes. Checkout the Getting Started Guides for details.

Concepts

Kubernetes works with the following concepts:

Cluster
A cluster is a set of physical or virtual machines and other infrastructure resources used by Kubernetes to run your applications. Kubernetes can run anywhere! See the Getting Started Guides for instructions for a variety of services.
Node
A node is a physical or virtual machine running Kubernetes, onto which pods can be scheduled.
Pod
Pods are a colocated group of application containers with shared volumes. They're the smallest deployable units that can be created, scheduled, and managed with Kubernetes. Pods can be created individually, but it's recommended that you use a replication controller even if creating a single pod.
Replication controller
Replication controllers manage the lifecycle of pods. They ensure that a specified number of pods are running at any given time, by creating or killing pods as required.
Service
Services provide a single, stable name and address for a set of pods. They act as basic load balancers.
Label
Labels are used to organize and select groups of objects based on key:value pairs.

Documentation

Kubernetes documentation is organized into several categories.

Community, discussion, contribution, and support

See which companies are committed to driving quality in Kubernetes on our community page.

Do you want to help "shape the evolution of technologies that are container packaged, dynamically scheduled and microservices oriented?"

You should consider joining the Cloud Native Computing Foundation. For details about who's involved and how Kubernetes plays a role, read their announcement.

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

Are you ready to add to the discussion?

We have presence on:

You can also view recordings of past events and presentations on our Media page.

For Q&A, our threads are at:

Want to do more than just 'discuss' Kubernetes?

If you're interested in being a contributor and want to get involved in developing Kubernetes, start in the Kubernetes Developer Guide and also review the contributor guidelines.

Support

While there are many different channels that you can use to get ahold of us, you can help make sure that we are efficient in getting you the help that you need.

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. We don't bite!

Community resources:

  • Awesome-kubernetes:

You can find more projects, tools and articles related to Kubernetes on the awesome-kubernetes list. Add your project there and help us make it better.

Instructive & educational resources for the Kubernetes community. By the community.

Analytics