Updated December 6, 2014
This document is intended to capture the set of supported use cases, features, docs, and patterns that we feel are required to call Kubernetes “feature complete” for a 1.0 release candidate. This list does not emphasize the bug fixes and stabilization that will be required to take it all the way to production ready. This is a living document, and is certainly open for discussion.
Features for 1.0 will be driven by the initial set of workloads we intend to support.
Most realistic examples of production services include a load-balanced web frontend exposed to the public Internet, with a stateful backend, such as a clustered database or key-value store, so we will target such a workload for 1.0.
Which exact stateful applications are TBD. Candidates include:
- redis
- memcache
- mysql (using master/slave replication)
- mongo
- cassandra
- etcd
- zookeeper
- Consistent v1 API. v1beta3 is being developed as the release candidate for the v1 API.
- Deprecation policy: Declare the project’s intentions with regards to expiring and removing features and interfaces, including the minimum amount of time non-beta APIs will be supported.
- Input validation: Validate schemas of API requests in the apiserver and, optionally, in the client.
- Error propagation: Report problems reliably and consistently, with documented behavior.
- Easy to add new controllers, such as per-node controller
- Replication controller: Make replication controller a standalone entity in the master stack.
- Pod templates: Proposal to make pod templates a first-class API object, rather than an artifact of replica controller #170
- Kubelet API should be well defined and versioned.
- Cloud provider API for managing nodes, storage, and network resources. #2770
- Resource requirements and scheduling: Use knowledge of resources available and resources required to make good enough scheduling decisions such that applications can start and run. #168
- Simple out-of-the box registry setup. #1319
- Easy to configure .dockercfg.
- Easy to deploy new code to Kubernetes (build and push).
- Predictable deployment via configuration-time image resolution. #1697
- Durable volumes: Provide a model for data with identity and lifetime independent of pods. #1515, #598, #2609
- Pluggable volume sources and devices: Allow new kinds of data sources and/or devices as volumes. #945, #2598
- DNS: Provide DNS for services, internal and external. #2224, #1261
- External IPs: Make Kubernetes services externally reachable. #1161
- Re-think the network parts of the API: Clean factoring of a la carte networking functionality. #2585
- Out-of-the-box, kick-the-tires networking implementation. #1307
- Auth[nz] and ACLs: Have a plan for how the API and system will express:
- Identity & authentication
- Authorization & access control
- Cluster subdivision, accounting, & isolation
- Support for pluggable authentication implementation and authorization polices
- Implemented auth[nz] for:
- admin to master and/or kubelet
- user to master
- master component to component (e.g., controller manager to apiserver): localhost in 1.0
- kubelet to master
- Documnted reference cluster architecture
- Accurate and complete API documentation
- Easy cluster startup
- Automatic node registration
- Configuring k8s
1. Move away from flags in master
2. Node configuration distribution
- Kubelet configuration
- dockercfg
- Easy cluster scaling (adding/removing nodes)
- Kubernetes can be upgraded
- master components
- Kubelets
- OS + kernel + Docker
- Kubectl fully replaces kubecfg #2144
- Graceful termination. #1535
- Resize. #1629
- Config generators integrated into kubectl.
- Rolling updates. #1353
- Kubectl can perform bulk operations (e.g., delete) on streams of API objects #1905
- Scalability
- 100 nodes for 1.0
- 1000 nodes by summer 2015
- HA master -- not gating 1.0
- Master election
- Eliminate global in-memory state 1. IP allocator 2. Operations
- Sharding 1. Pod getter
- Kubelets need to coast when master down
- Don’t blow away pods when master is down
- Testing
- More/better/easier E2E
- E2E integration testing w/ OpenShift
- More non-E2E integration tests
- Long-term soaking / stress test
- Backward compatibility 1. API 2. etcd state
- Release cadence and artifacts
- Regular stable releases on a frequent timeline (2 weeks).
- Automatic generation of necessary deployment artifacts. It is still TBD if this includes deb and RPMs. Also not clear if it includes docker containers.
- Export monitoring metrics (instrumentation)
- Bounded disk space on master and kubelets
- GC of unused images