提出问题
传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将 与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作
解决方式1
可以通过创建虚拟机的方式来实现某些功能
解决方式1 的问题
虚拟机非常重,并不利于可移植性
解决方式2
通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在 build 或 release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
解决方式2 的问题
在生产环境中部署一个应用程序时,通常要部署该应用的多个实例,以便进行负载均衡,但手动部署时,非常麻烦、复杂,而且不容易管理
解决方式3
Kubernetes 支持自动化部署、大规模可伸缩、应用容器化管理。通过 Kubernetes,可以 方便的 创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
介绍
Kubernetes 是Google在2014年开源的一个容器(如:docker)集群管理系统,Kubernetes简称K8S(8指k和s之间有8个字母)
K8S用于容器化应用程序的部署,扩展和管理。
K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等-一系列功能。
一句话理解
让部署容器化应用简单高效,如:使用k8s管理docker,部署应用
特性
自动化装箱
在不牺牲可用性的条件下,基于容器对资源的要求和约束自动部署容器。同时,为了提高利用率和节省更多资源,将关键和最佳工作量结合在一起。
自我修复(自愈能力)
在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量:杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。
弹性伸缩(水平扩容)
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
自动部署(发布)和回滚
K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保业务升级不受影响。
服务发现和负载均衡
K8S为多个容器提供一个统一访问入口 (内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。
机密和配置管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。
存储编排
挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储 (如NFS、GlusterFS、 Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。
批处理
提供一次性任务,定时任务;满足批量数据处理和分析的场景。
参考
https://blog.csdn.net/Demo_lu/article/details/119645860