Kubernetes是一个容器集群管理系统,为容器化的应用程序提供部署运行、维护、扩展、资源调度、服务发现等功能。
Kubernetes是 Google运行Borg大规模系统达15年之久的一个经验总结。 Kubernetes结合了社区的最佳创意和实践,旨在帮助开发人员将容器打包、动态编排,同时帮助各大公司向微服务方向进行技术演进。
它具有以下特点
- Planet scale(大容量):使用 Kubernetes的各大公司(包括 Google)每周运行了数十亿个容器,这些容器的平台采用同样的设计原则。这些平台在不增加 DevOps团队成员的情况下,可以让容器数量增加,节省了人力成本,达到了复用性。
- Never Outgrow(永不过时):无论容器是运行在一个小公司的测试环境中,还是运行在一个全球化企业的大型系统里, Kubernetes都能灵活地满足复杂的需求。同时,无论业务多么复杂, Kubernetes都能稳定地提供服务。
- Run Anywhere(随时随地运行): Kubernetes是开源的,可以自由地利用内部、混合或公共云的基础组件进行部署,让开发者可以将更多的时间和精力投入在业务上,而不是服务部署上。
Kubernetes开源免费,是 Google在过去15年时间里部署、管理微服务的经验结晶,所以目前 Kubernetes在技术社区也是十分火热。下面来看它提供的功能。
- Automatic Binpacking(自动包装):根据程序自身的资源需求和一些其他方面的需求自动配置容器。 Kubernetes能够最大化地利用机器的工作负载,提高资源的利用率。
- Self-healing(自我修复):容器失败自动重启,当节点处于“死机”的状态时,它会
被替代并重新编排:当容器达到用户设定的无响应的阀值时,它会被剔除,并且不让
其他容器调用它,直到它恢复服务。 - Horizontal scaling(横向扩展):可以根据机器的CPU的使用率来调整容器的数量,只需开发人员在管理界面上输入几个命令即可。
- Service Discovery and Load Balancing(服务发现和负载均衡):在不需要修改现有的应用程序代码的情况下,便可使用服务的发现机制。 Kubernetes为容器提供了个虚拟网络环境,每个容器拥有独立的IP地址和DNsS名称,容器之间实现了
负载均衡。 - Automated Rollouts and Rollbacks(自动部署或回滚): Kubernetes支撑滚动更新模式,能逐步替换掉当前环境的应用程序和配置,同时监视应用程序运行状况,以确保不会同时杀死所有实例。如果出现问题, Kubernetes支持回滚更改。
- Secret and Configuration Management(配置管理):部署和更新应用程序的配置,不需要重新打镜像,并且不需要在堆栈中暴露配置。
- Storage Orchestration(存储编排):自动安装所选择的存储系统,无论是本地存储、公共云提供商(如GCP或AWS),还是网络存储系统(如NFS、 ISCSI、Gluster、Ceph、Cinder或 Flocker)。
- Batch execution(批量处理):除了服务之外, Kubernetes还可以管理批量处理和Cl的工作负载,如果需要,可以替换容器,如NFS、 iSCSI、 Gluster、Ceph、 Cinder或Flocker等。
从 Kubernetes提供的功能来看, Kubernetes完全可以成为构建和部署微服务的一个工具,它是从服务编排上实现的,而不是代码实现的。目前国外有很多知名的公司在使用 Kubernetes,如 google、eBay、 Pearson等。由于它的开源免费, Microsoft、 VMWare、 Red Hat, Core等公司纷纷加入并贡献代码。Kubernetes技术吸引了一大批公司和技术爱好者,它已经成为容器管理的领导者。