前言
在谈论K8s之前,容器化技术是不可避免的一个话题,正是因为容器化技术的出现,使得能够非常方便、快捷地管理容器的K8s有了大展身手的舞台。
而什么是容器化技术,以及如何使用,在之后可能会写文章记录一下(应该得蛮久时间的😁),这里简单提一下
在传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
而容器化技术就是为了解决原有的部署方式的痛点而诞生的一项新技术。
那么K8s 是什么?
Kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是 Google 开源的一个容器编排引擎,用于管理云平台中多个主机上的容器化的应用。它支持自动化部署、大规模可伸缩、 应用容器化管理。
使用容器化技术在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。而Kubernetes中提供了应用部署,规划,更新,维护的一种机制。我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理,让部署容器化的 应用简单并且高效。
K8s 能干什么?
- 自动装箱
- 基于容器对应用运行环境的资源配置要求自动部署应用容器
- 自我修复(自愈能力)
- 当容器失败时,会自动重启容器
- 当所有部署的node节点出现问题时,会对容器进行重新部署和重新调动
- 当容器未通过监控检查时,会关闭此容器知道此容器能够正常运行时,才会对外提供服务。
- 水平扩展
- 通过简单的命令、用户UI界面或基于CPU、内存等资源情况,对应用容器进行大规模扩大或裁剪。
- 服务发现
- 用户不需要额外的服务发现机制,就能够基于K8s自身能力实现服务发现和负载均衡。
- 滚动更新
- 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新。
- 版本回退
- 可以根据应用部署情况,对应用容器运行的应用,进行历史版本的即时回退。
- 密钥和配置管理
- 在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
- 存储编排
- 自动实现存储系统挂载及应用,特别是对有状态应用实现数据的持久化
- 存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务等
- 批处理
- 提供一次性任务、定时任务,满足批量数据处理和分析的场景。
总结
以上就是关于K8s的由来和一些基础概念以及应用场景。