为什么用kubernetes
做为一名测试,我之前完全不想去看 kubernetes, 因为测试环境是相对比较简单的操作,很难用得上 kubernetes 这样的容器编排工具,使用 docker compose 基本上够了。
但是随着身边越来越多的人鼓励我去了解下 kubernetes, 我想这个技术已经到了需要人人皆知的流行程度。而且 kubernetes 对于去熟悉开发流程的架构也是非常有帮助的,有利于测试工作的开展,于是我想花一点时间去熟悉下 kubernetes 在测试领域的应用。
对于容器不多的项目,用 docker 已经能比较好的解决部署的问题, 但是随着微服务的崛起,很多大型项目都被拆分成一个个很小的服务,每个服务用一个容器来管理,容器的数量就开始急剧上升。
此时,就需要一个统一的调度平台,方便灵活的管理众多容器的启停。比如如何对一个服务创建多个容器的集群,比如如果其中一个容器挂掉了,是否能快速重新创建。
kubernetes 在众多容器编排工具中脱颖而出,已经成为云原生的标准。一个基本的容器编排工具需要具备以下能力:
- 为所有容器提供一个标准的环境
- 方便快捷的查看容器状态,并在容器不健康的情况下能迅速启停而不影响其他容器。
- 完成容器和容器间的通讯
kubernetes 用来管理容器究竟好再哪里呢?我们来看一下官方的说明吧。
- 运行容器。⾸先需要运行的应⽤会被打包成一个容器镜像,这些镜像会被上传到镜像仓库。应用的描述发布到 kubernetes 的 API 服务器。 当想通过 kubernetes 运行某个镜像时,直接在 kubernetes 提供的 yaml 文件中填写镜像地址,就能快速的表示要运行的容器。
- 管理容器。kubernetes 抽象出来一个叫 pod 的概念,大致相当于系统中进程组的作用,而一个容器通常就是一个进程。在一个 pod 中,多个容器之间可以比较方便的共享资源。 一个 pod 中通常是一个容器,有的时候会有多个容器。 pod 是 kubernetes 的基本管理单位。
- 容器副本数。在一个项目中,最基本的容灾手段就是要有副本,这样做的好处首先是可以分流,当用户请求很多时,把这些流量分给多个副本处理,降低单个副本的处理压力;第二个好处是应急备用,当一个副本挂掉,而其他服务会承担住流量压力
- 保持容器运行。如果某个容器因为意外情况挂掉可能会产生连锁反应,其他的容器副本可能无法承受压力而相继挂掉。kubernetes 会实时检查容器的健康状况,当容器挂掉时会自动重新创建一个新的容器。
- 扩展容器数量。如果流量压力太大,还可以临时新开几个副本。 像双十一这样的流量洪峰一到,自然要多开副本来应对流量压力。 kubernetes 可以直接通过修改副本数量开启新的副本数,在应对突然的流量压力时能迅速解决响应。在流量洪峰过去后,降低副本数量又能减少服务数量,节省服务器成本。
- 移动容器。当因为某些因素导致服务器无法使用,需要把服务器上的容器迁移到另一台机器上时,kubernetes 也能轻易的做到,而对于客户端来说,根本感知不到你在做迁移。
- 总结起来,使用 kubernetes 能极大的简化应用的部署、更充分的利用服务器硬件资源、对服务进行健康检查和自我修复、能实现自动扩容等等。
本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。
编辑 (opens new window)
上次更新: 2022/06/01, 08:59:38