大家好,今天来介绍kubernetes与docker的关系的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
docker和k8s的关系
Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),它主要用于容器编排启动容器、自动化部署、扩展和管理容器应用和回收容器。k8s的目标是让部署容器化裤简的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制。
用kubernetes去管理Docker集群,既可以将Docker看成Kubernetes内部使用的低级别组件;扮春另外,kubernetes不仅仅支持Docker还支持Rocket,这是另一种容器技术。
从背景上说,Kubernetes是由Google与RedHat公司共同主导的开源“容器编排”项目,它起源于Google公司的Borg系统。
所以它在超大规模集群管理方面的经验要明显优于其他容器编排技术,加上Kubernetes在社区管理方面的民主化,使得厅纯耐它很快打败了Docker公司推出的容器编排解决方案(Compose+Swarm),从而成为了容器编排领域事实上的标准。
而在功能上Kubernetes是一种综合的基于容器构建分布式系统的基础架构环境,它不仅能够实现基本的拉取用户镜像、运行容器,还可以提供路由网关、水平扩展、监控、备份、灾难恢复等一系列运维能力。
docker和k8s的关系
概念:
官方定义1: Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
官方定义2: k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
docker一般是和传统的虚拟技术对比
传统的虚拟技术:将物理硬件虚拟成多套硬件后,需要在每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序,非常重。
docker:Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。
K8s:每个集群嫌局有多个节点,每个节点可创建多个容器,kuberbete就是管理这些应用程序所在的小运行环境(container)而生。
在一般的认知中,Kubernetes 和 Docker 是互补关系:
Docker 源于 Linux Container,可以将一台机器的资源分成升逗 N 份容器,做到资源的隔离,并将可运行的程序定义为标准的 docker image;Kubernetes 则可以把不同机器的每份容器进行编排、调度,组成分布式系统。
近几年,Kubernetes 已经成为自有机房、云上广泛使用的容器编排方案,最广泛的使用方式是 Kubernetes+Docker。从 DevOps 人员的角度,一面用 kubectl 命令、k8s API 来操作集群,一面在单机用 docker 命令来管理镜像、运行镜像。
单独用 docker 的情况,在一些公芹笑让司的场景里面也是有的。一种场景是“只分不合”,把一台机器用 docker 做资源隔离,但是不需要将多容器“编排”。
[1] https://xie.infoq.cn/article/3b9f38da1d4bf49d56d1d1938
[2] https://www.cnblogs.com/softidea/p/12803655.html
[3] https://zhuanlan.zhihu.com/p/87186261
[4] https://cloud.tencent.com/developer/article/1688212
kubernetes和docker区别
1、技术原理不同
docker是容器化技术,K8S是一套自动化部署工具,可全生命周期管理docker容器。K8S是谷歌开发的容器集群管理系统。在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性庆睁脊。
2、平台不同
K8S是一个完备的分布式系统支撑平台,具备完善的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现誉渗和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。
docker是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实早耐现虚拟化。
3、架构模式不同
Docker使用客户端一一服务器架构模式,使用远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。
既然有了 Docker为什么还要 Kubernetes
“一千个读者眼里有一千个哈姆雷特”。同样的话也适用于 Kubernetes,同样的系统在不同的开发人员眼中也是不同的,甚至在不同阶段对于它的理解也截然不同。
在尚未开始使用Kubernetes之前,我认为它是一套非常复杂的系统,各种抽象概念以及复杂的安装过程。差点因为安装不顺,打算就此放弃。理由很简单: 既然有了 Docker,为什么还要 Kubernetes ?
之所以觉得Kubernetes系统复杂、难,关键是不知道它到底是干啥的?再加上老版本繁琐的安装过程,愿意啃它是需要一点毅力的。现在,就通过一张简单的对比图告诉你,它到底干了啥!
单看图示上部分,发生的变化仅仅是HOST换成了POD,底层网络由真实网络换成了覆盖网络,即虚拟网络。对于APP应用开发者而言, 即使你完全不懂容器技术也没关系.这是Kubernetes的厉害之处,它提供的抽象层对于APP应用开发者而言兄前模是完全透明的。应用在POD中和在HOST主机上并没有本质悔耐区别。
还是老问题: 既然有了 Docker,为什么还要 Kubernetes ?
回答这个问题,得从为什么需要引入Docker这个问题先开始。你会说,因为需要 容器化部署 。那为什么需要 容器化部署 呢?就这个问题还可以走得更远一点。这里我就偷懒了,先打住。看看 容器化部署 后出现的新问题,即容器实例越来越多。因为容器实例羡缓越来越多,就像鸡蛋太多需要一个篮子来装一样,Kubernetes就是那个篮子。当然这不是一个简单的篮子,此处也不扩展了。
标准答案就是: 因为有了 Docker,所以才要Kubernetes 。是不是感觉进入一个loop,我也这感觉。
从图中也可以看出,Docker容器技术是Kubernetes平台的基础。容器技术主要作用是 隔离 ,通过对系统的关键资源的隔离,实现了 主机抽象 。Kubernetes平台则是在 抽象主机 的基础上,实现了 集群抽象 。
用一句话做个总结,就是:
一篇短文,希望可以帮到还徘徊在Kubernetes大门之外的初学者。当然,新版本Kubernetes已经非常容易安装了。
本文地址:https://gpu.xuandashi.com/72268.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!