Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
产品特点
可移植: 在 kubernetes 中部署的应用都是基于镜像的,镜像是可移植的,可以被多个环境使用,支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化,插件化,可挂载,可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展,安装 Kubernetes的节点可以根据业务规模动态扩缩容、Kubernetes中的 pod 应用也可以实现自动扩缩容。
实际应用:
1)快速部署应用
2)快速扩展应用
3)无缝对接新的应用功能
4)节省资源,优化硬件资源的使用
举例:
1)Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着
2)比如用户想让nginx一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,保证nginx一直提供服务。
kubernetes作用
1)自我修复
在节点故障时重新启动失败的容器,替换和重新部署,保证预期我们设置的副本的数量;
杀死健康检测失败的容器,并且在没有准备好之前是不会处理客户端请求的(不对外提供服务),保证线上服务不中断
2)弹性伸缩(比如618活动,保证我们服务的快速缩容和扩容)
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用的程序实例(容器的副本数)
保证应用业务高峰并发时的高可用性;
在业务低峰时期回收资源,以减小成本运行服务
3)自动部署和回滚
k8s 采用滚动更新的策略更新应用,一次更新一个Pod,而不是同时删除所有的pod
如果更新过程中出现问题,将回滚更改,确保升级不影响业务
4)服务发现和负载均衡
k8s为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP的问题
5)机密数据(密码,证书)和配置管理
k8s提供存储能力(可以把密码加密放在容器存储中)
管理机密数据和应用程序的配置,而不需要把敏感的数据暴露在镜像里,提高敏感数据的安全性
并且可以把一些常用的配置存储在k8s中,方便应用程序的使用
6)存储编排
挂载外部的存储系统,无论是来自本地存储,公有云,还是网络存储(NFS《GlustFS,Ceph)
都作为集群资源的一部分使用,极大的提高存储使用灵活性
7)批处理
提供一次性任务,定时任务,满足批量数据处理和分析的场景