初识K8S(一)
从今天开始我们就要逐步深入K8S了,在开始之前我们先用这一篇文章来简单的聊一聊云原生和K8S
K8S的全名是什么?
这个相信大家都知道他叫做Kubernetes
干什么用的?
其实他是一个Google开源的一个容器编排管理工具
为什么慢慢火起来了?
“云计算”这个概念也是由 Google 提出的,可见这家公司对计算机技术发展的贡献有多大。自云计算 2006 年被提出后,已经逐渐成为信息技术产业发展的战略重点,你可能也会切身感受到变化。我们平时在讨论技术的时候,经常会被问到诸如“你们公司的业务是否要考虑上云”的问题,而国内相关的云计算大会近几年也如雨后春笋般地召开,可见其有多么火热。
而云计算之所以可以这么快地发展起来,主要原因还是可以为企业带来便利,同时又能降低成本,国内的各大传统型企业的基础设施纷纷向云计算转型,从阿里云、腾讯云每年的发展规模我们就可以看出来云计算市场对人才的需求有多大。
就像我们一般开发者都会用的阿里云腾讯云都在用这个技术
我们把这个云计算架构分为三层:
-
IaaS 层通过虚拟化技术提供计算、存储、网络等基础资源,可以在上面部署各种 OS 以及应用程序。开发者可以通过云厂商提供的 API 控制整个基础架构,无须对其进行物理上的维护和管理。
-
PaaS 层提供软件部署平台(runtime),抽象掉了硬件和操作系统,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。
-
SaaS 层直接为开发者提供软件服务,将软件的开发、管理、部署等全部都交给第三方,用户不需要再关心技术问题,可以拿来即用。
但随着应用的规模变得越来越庞大,逻辑也越来越复杂,迭代更新也越来越频繁,这时我们就逐渐发现了一些问题,比如:
- 性价比低,资源利用率低
有时候用户只是希望运行一些简单的程序而已,比如跑一个小进程,为了不相互影响,就要建立虚拟机。这显然会浪费不少资源,毕竟 IaaS 层产品都是按照资源进行收费的。同时操作也比较复杂,花费时间也会比较长;
- 迁移成本高
如果想要迁移整个自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂;
- 环境不一致
在进行业务部署发布的过程中,服务之间的各种依赖,比如操作系统、开发语言及其版本、依赖的库/包等,都给业务开发和升级带来很大的制约。
如果没有 Docker 的横空出世,这些问题解决起来似乎有些困难。因为docker降低了我们容器技术的门槛,学过运维红帽的小伙伴一般来说docker都是必会的!而且想要在docker上部署项目的开发者必须拥有docker hub
那跟我们的K8S有何关系?
关系非常大,有了容器,开发人员就只需要考虑如何恰当地扩展、部署,以及管理他们新开发的应用程序。但如果我们大规模地使用容器,就不得不考虑容器调度、部署、跨多节点访问、自动伸缩等问题。
容器调度平台可以自动生成容器实例,然后是生成的容器可以相邻或者相隔,帮助提高可用性和性能,还有健康检查、容错、可扩展、网络等功能,它几乎完美地解决了需求与资源的匹配编排问题。
既然容器调度平台功能这样强大,市场竞争必定是风云逐鹿的,其实主流的容器管理调度平台有三个,分别是Docker Swarm、Mesos Marathon和Kubernetes,它们有各自的特点。但是同时满足上面所述的八大能力的容器调度平台,其实非 Kubernetes 莫属了。