Kubernetes是Google开源的一个容器编排引擎,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
(1)自动装箱
构建于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用和非关键型应用的工作负载于同一节点以提升资源利用率。
(2)自我修复(自我治愈)
支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制。
(3)水平扩展
支持通过简单命令或UI手动水平扩展,以及基于CPU等资源负载率的自动水平扩展机制。
(4)服务发现和负载均衡
k8s通过其附件组件之一的KubeDNS(或CoreDNS)为系统内置了服务发现功能,它会为每个service配置DNS名称,并允许集群内的客户端直接使用此名称发出访问请求,而service则通过iptables或ipvs内建立负载均衡机制。
(5) 自动发布和回滚
k8s支持“灰度”更新应用程序或其配置信息,监控更新过程中应用程序的健康状态,以确保不会同一时间杀掉所有实例,在这个过程中一旦出现故障,立马进行回滚操作。
(6)密钥和配置管理
k8s的configMap实现了参数配置和Docker镜像的解耦,修改配置时无需重新build镜像,这为应用开发部署带来了很大的灵活性。另外,对于应用依赖的一些敏感数据,如用户名和密码、令牌、密钥等,k8s专门提供了Secret对象为其解耦。
(7)存储编排
k8s支持Pod对象按需自动挂载不同类型的存储系统,包括节点的本地存储系统,云存储(AWS),网络存储系统(NFS、GlusterFS)。
(8)批量处理执行
除了服务型应用,k8s还支持批处理作业及CI(持续集成),如果需要,一样可用实现容器故障后恢复。