Kubernetes(常缩写为 K8s)是一个开源的**容器编排(container orchestration)**平台。它自动化地在一组机器组成的集群上部署、扩缩、联网并自愈容器化应用,因此你只需描述期望状态(desired state),Kubernetes 就会持续工作让现实与之匹配。
问题:大规模运行容器很难
你有了容器(来自 Docker),但在生产环境你还必须回答:
→ 每个容器运行在哪台机器上?(scheduling)
→ 如果某个容器崩溃了怎么办?(自愈 / 重启)
→ 如果整个 node 挂了怎么办?(在别处重新调度)
→ 50 个副本如何互相发现并通信?(service discovery)
→ 如何零停机地滚动发布一个新版本?(rolling update)
→ 流量激增时如何从 3 个副本扩到 30 个?(autoscaling)
在众多服务器上手工做这一切根本无法扩展。
