Updated August 28, 2014
This document is intended to capture the set of 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.
Versioned APIs: Manage APIs for master components and kubelets with explicit versions, version-specific conversion routines, and component-to-component version checking.Done- Component-centric APIs: Clarify which types belong in each component’s API and which ones are truly common.
- Clarify the role of etcd in the cluster.
- Idempotency: Whenever possible APIs must be idempotent.
- Container restart policy: Policy for each pod or container stating whether and when it should be restarted upon termination.
- Life cycle events/hooks and notifications: Notify containers about what is happening to them.
- Re-think the network parts of the API: Find resolution on the the multiple issues around networking.
Utility of HostPorts in ip-per-podDone- Services/Links/Portals/Ambassadors
- Durable volumes: Provide a model for data that survives some kinds of outages.
- Auth[nz] and ACLs: Have a plan for how the API and system will express:
- Identity & authentication
- Authorization & access control
- Cluster subdivision, accounting, & isolation
Pluggable scheduling: Cleanly separate the scheduler from the apiserver.Done- Pluggable naming and discovery: Call-outs or hooks to enable external naming systems.
- Pluggable volumes: Allow new kinds of data sources as volumes.
- 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
Minion death: Cleanly handle the loss of a minion.Done- Configure DNS: Provide DNS service for k8s running pods, containers and services. Auto-populate it with the things we know.
- Resource requirements and scheduling: Use knowledge of resources available and resources required to do better scheduling.
True IP-per-pod: Get rid of last remnants of shared port spaces for pods.Done- IP-per-service: Proposal to make services cleaner.
- Basic deployment tools: This includes tools for higher-level deployments configs.
- Standard mechanisms for deploying k8s on k8s with a clear strategy for reusing the infrastructure for self-host.
- Container termination reasons: Capture and report exit codes and other termination reasons.
- Garbage collect old container images: Clean up old docker images that consume local disk. Maybe a TTL on images.
- Container logs: Expose stdout/stderr from containers without users having to SSH into minions. Needs a rotation policy to avoid disks getting filled.
- Container performance information: Capture and report performance data for each container.
- Host log management: Make sure we don't kill nodes with full disks.
- Input validation: Stop bad input as early as possible.
- Error propagation: Report problems reliably and consistently.
- Consistent patterns of usage of IDs and names throughout the system.
- Binary release: Repeatable process to produce binaries for release.
- Deprecation policy: Declare the project’s intentions with regards to expiring and removing features and interfaces.
- Compatibility policy: Declare the project’s intentions with regards to saved state and live upgrades of components.
- Naming/discovery: Demonstrate techniques for common patterns:
- Master-elected services
- DB replicas
- Sharded services
- Worker pools
- Health-checking: Specification for how it works and best practices.
- Logging: Demonstrate setting up log collection.
Monitoring: Demonstrate setting up cluster monitoring.Done- Rolling updates: Demo and best practices for live application upgrades.
- Have a plan for how higher level deployment / update concepts should / should not fit into Kubernetes
- Minion requirements: Document the requirements and integrations between kubelet and minion machine environments.