本篇为帮助为帮助理解Docker与k8s大体的作用以及他们的联系和区别,没有对其进行深入刨析。
产生的意义
首先对于开发者来讲Docker与k8s都是为了去运行你写的代码的工具或者程序。在使用他们之前我们都需要先在本机把代码写好然后传到Linux服务器上部署运行。
这样的方式也是没问题的,但是我们要想象一下如果我们的程序需要部署在多台服务器上或者经常需要换服务器的话,那么每次我们都要将程序重新部署一遍,这个工作其实是很复杂的。
为什么这么说呢?
因为部署程序可能不是简单的拉取代码、配置和编译这么简单,有时候还要检查配置文件、修改环境变量、程序运行需要依赖的文件,甚至新服务器换了操作系统这都是有可能的,
就比如Linux换成windos服务器,或者还是Linux但是版本变了 ,以上的所有情况都会增加我们部署的工作量。(这也太复杂了把!)
所以我们了解到了一个情况! 那就是我们的程序之所以能运行是依赖很多东西的。
那咋办嘞,为了解决上述的情况开发者想出了一些办法:
为了简化这个繁琐的工作并且让我们的代码变得可以灵活部署,我们将应用程序和他所有依赖的底座、配置文件等打包成一个镜像。
然后在服务器上安装docker再把我们配置好的镜像放在docker里面运行。
这样我们的部署工作就变得十分简单了,因为只要在一个docker上能部署成功那么这个镜像在所有的docker都可以成功运行,哪怕是服务器不同也不需要做繁琐的配置工作。
使用docker以后的变化
由此程序开发者的工作变成了先写好代码然后在测试环境测试,如果镜像是否能够在dokcer下运行成功,我们就能把这个镜像放到任意一台服务器的docker下。
那k8s是啥呢?
我们说了这么久的docker那么它和k8s到底有啥关系呢或者说k8s是干啥的?
首先不同之处:
k8s一方面具备了dokcer的功能,同时在这个基础上又增加了其他好处。
这里简单举例:
1、K8s可以监控每个容器是否运行正常,如果挂了它还可以自动将镜像文件传到另一台服务上把程序跑起来,甚至可以动态的扩缩容
2、K8s可以实时监控cpu、内存利用率、并发请求量,如果并发量太高他还会找一些新的节点把程序自动部署过去,通过多节点来分担峰值压力而且当高峰器过去他还会自动的把容器砍掉将资源进行回收。
相同:
k8s把dokcer里的镜像标准拿过来了,一个镜像文件在docker里能运行那么在k8s下也能运行。
对于镜像的生成也可以使用docker提供的工具,也可以不使用docker通过其他途径来生成,因为对于镜像的标准是公开的。
讲到这里详细你已经对k8s和docker有大致的了解了,如果想要深入学习可以去看一些更深入的文章这里不再进行解释了。
标签:联系,部署,镜像,服务器,docker,k8s,Docker,运行 From: https://www.cnblogs.com/Edehuag/p/18528392