The Kubernetes API currently manages 3 main resources:
In Kubernetes, rather than individual containers, pods are the smallest deployable units that can be created, scheduled, and managed. Singleton pods can be created directly, and sets of pods may created, maintained, and scaled using replication controllers. Services create load-balanced targets for sets of pods.
Kubernetes supports a unique networking model. Kubernetes encourages a flat address and does not dynamically allocate ports, instead allowing users to select whichever ports are convenient for them. To achieve this, it allocates an IP address for each pod and each service. Services provide stable addresses and DNS names for clients to connect to, even as serving pods are replaced by new pods on new hosts.
Each resource has a map of key-value labels. Individual labels are used to specify identifying metadata that can be used to define sets of resources by specifying required labels.
Each resource also has a map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about this object, called annotations.md.
Each resource is created within a specific namespace, a default one if unspecified.
Other details:
- API
- Client libraries
- Command-line interface
- UI
- Images and registries
- Container environment
- Logging
- Monitoring using CAdvisor and Heapster