Lightweight Kubernetes
 
 
 
 
Go to file
Zach Loafman a305269e18 Deferred creation of SkyDNS, monitoring and logging objects
This implements phase 1 of the proposal in #3579, moving the creation
of the pods, RCs, and services to the master after the apiserver is
available.

This is such a wide commit because our existing initial config story
is special:

* Add kube-addons service and associated salt configuration:
** We configure /etc/kubernetes/addons to be a directory of objects
that are appropriately configured for the current cluster.
** "/etc/init.d/kube-addons start" slurps up everything in that dir.
(Most of the difficult is the business logic in salt around getting
that directory built at all.)
** We cheat and overlay cluster/addons into saltbase/salt/kube-addons
as config files for the kube-addons meta-service.
* Change .yaml.in files to salt templates
* Rename {setup,teardown}-{monitoring,logging} to
{setup,teardown}-{monitoring,logging}-firewall to properly reflect
their real purpose now (the purpose of these functions is now ONLY to
bring up the firewall rules, and possibly to relay the IP to the user).
* Rework GCE {setup,teardown}-{monitoring,logging}-firewall: Both
functions were improperly configuring global rules, yet used
lifecycles tied to the cluster. Use $NODE_INSTANCE_PREFIX with the
rule. The logging rule needed a $NETWORK specifier. The monitoring
rule tried gcloud describe first, but given the instancing, this feels
like a waste of time now.
* Plumb ENABLE_CLUSTER_MONITORING, ENABLE_CLUSTER_LOGGING,
ELASTICSEARCH_LOGGING_REPLICAS and DNS_REPLICAS down to the master,
since these are needed there now.

(Desperately want just a yaml or json file we can share between
providers that has all this crap. Maybe #3525 is an answer?)

Huge caveats: I've gone pretty firm testing on GCE, including
twiddling the env variables and making sure the objects I expect to
come up, come up. I've tested that it doesn't break GKE bringup
somehow. But I haven't had a chance to test the other providers.
2015-01-21 12:25:50 -08:00
Godeps cloudprovider/gce: use golang.org/x/oauth2 2015-01-16 12:17:52 +09:00
api Some examples do not pass extended validation 2014-11-10 11:33:31 -05:00
build Deferred creation of SkyDNS, monitoring and logging objects 2015-01-21 12:25:50 -08:00
cluster Deferred creation of SkyDNS, monitoring and logging objects 2015-01-21 12:25:50 -08:00
cmd Merge pull request #3647 from deads2k/deads-make-factory-flag-binding-optional 2015-01-21 15:23:37 -05:00
contrib Merge pull request #3666 from thockin/golang-static 2015-01-21 10:07:41 -08:00
docs Merge pull request #3675 from hTrap/patch-3 2015-01-21 10:36:49 -08:00
examples Fix static builds in go1.4 2015-01-20 21:04:04 -08:00
hack Fix min minions for e2e 2015-01-21 11:37:57 -08:00
hooks Fix errant error message from boilerplate check 2015-01-19 14:23:24 -08:00
pkg Merge pull request #3647 from deads2k/deads-make-factory-flag-binding-optional 2015-01-21 15:23:37 -05:00
plugin Fix typos in user-facing strings 2015-01-18 01:32:34 -06:00
test Merge pull request #3656 from jbeda/vagrant-e2e 2015-01-21 07:26:13 -08:00
third_party Swagger UI: Updating swagger-ui.js to list the resources and operations 2015-01-12 17:29:07 -08:00
www Moving swagger-ui files from www/swagger-ui to third-party/swagger-ui 2015-01-05 16:27:33 -08:00
.gitignore Clean up how client is passed to Kubelet in preparation for reading pods 2015-01-07 14:40:37 -05:00
.travis.yml Autogenerate markdown docs for kubectl 2015-01-14 13:21:14 -08:00
CHANGELOG.md Update changelog. 2015-01-21 10:00:12 -08:00
CONTRIB.md Move CONTRIB{,UTING}.md so GitHub shows it 2014-07-28 17:06:29 -04:00
CONTRIBUTING.md Move developer documentation to docs/devel/ 2014-10-15 08:30:02 -07:00
DESIGN.md Removing TOC links to no-longer-extant sections 2014-10-29 15:34:01 -07:00
LICENSE First commit 2014-06-06 16:40:48 -07:00
MAINTAINERS.md ubuntu getting started guide 2014-12-15 15:43:35 -08:00
Makefile Rework hack/ and build/ directories. 2014-11-01 17:56:41 -07:00
README.md fix link. 2014-12-22 13:57:26 -08:00
Vagrantfile Reduce number of minions to improve user experience 2015-01-09 13:00:48 -05:00
logo.pdf change logo blue slightly 2014-08-15 09:54:00 -07:00
logo.png change logo blue slightly 2014-08-15 09:54:00 -07:00
logo.svg change logo blue slightly 2014-08-15 09:54:00 -07:00
logo_usage_guidelines.md Add logo usage guidelines doc. 2014-08-26 09:13:39 -07:00

README.md

Kubernetes

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 can run anywhere!

However, initial development was done on GCE and so our instructions and scripts are built around that. If you make it work on other infrastructure please let us know and contribute instructions/code.

Kubernetes is in pre-production beta!

While the concepts and architecture in Kubernetes represent years of experience designing and building large scale cluster manager at Google, the Kubernetes project is still under heavy development. Expect bugs, design and API changes as we bring it to a stable, production product over the coming year.

Concepts

Kubernetes works with the following concepts:

Clusters are the compute resources on top of which your containers are built. Kubernetes can run anywhere! See the Getting Started Guides for instructions for a variety of services.

Pods are a colocated group of Docker 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. More about pods.

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. More about replication controllers.

Services provide a single, stable name and address for a set of pods. They act as basic load balancers. More about services.

Labels are used to organize and select groups of objects based on key:value pairs. More about labels.

Documentation

Kubernetes documentation is organized into several categories.

  • Getting Started Guides
  • User Documentation
    • User FAQ
    • in docs
    • for people who want to run programs on kubernetes
    • describes current features of the system (with brief mentions of planned features)
  • Developer Documentation
    • in docs/devel
    • for people who want to contribute code to kubernetes
    • covers development conventions
    • explains current architecture and project plans
  • Design Documentation
    • in docs/design
    • for people who want to understand the design choices made
    • describes tradeoffs, alternative designs
    • descriptions of planned features that are too long for a github issue.
  • Walkthroughs and Examples
    • in examples
    • Hands on introduction and example config files
  • API documentation
  • Wiki/FAQ

Community, discussion and support

If you have questions or want to start contributing please reach out. We don't bite!

The Kubernetes team is hanging out on IRC on the #google-containers channel on freenode.net. We also have the google-containers Google Groups mailing list for questions and discussion as well as the kubernetes-announce mailing list for important announcements (low-traffic, no chatter).

If you are a company and are looking for a more formal engagement with Google around Kubernetes and containers at Google as a whole, please fill out this form and we'll be in touch.