本文带你快速了解Kubernetes与Docker
让你对容器与虚拟机的区别、Docker与k8s有一个快速的了解
目录
- 演变史
- 容器与虚拟机的区别
- K8S与Docker概念
- Docker
- K8S
演变史
传统部署时代: 早期,将单一的应用服务运行在物理服务器上,无法给服务器的应用程序进行资源的限制,导致物理服务器之间的资源负载使用不均衡,就导致了服务器上的应用程序的性能下降,物理服务器的维护成本变得很高。
虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机VM
。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。
容器部署时代: 容器
类似于 VM,但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统OS
。因此,容器被认为是目前最轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和 OS 分发进行移植。
容器与虚拟机的区别
容器技术为什么会这么火爆?说白了,就是因为它“轻”。
在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。
相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。而容器,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境。类似于“沙箱”。
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
下表中列举了容器与虚拟机之间的区别:
K8S与Docker概念
Docker
Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。一句话总结就是,从仓库中拉取镜像,利用镜像生成容器。
Docker技术的三大核心概念,分别是:镜像(Image)、容器(Container)、仓库(Repository)。相关概念解释如下:
- 宿主机,Host,运行Docker所在的物理机,是Docker运行的系统环境。
- 镜像,Image,相当于一个程序模板,通过这个模板可以生成很多个相似的容器。可以理解为Java中的类,它本身不具备执行运行的能力,是一个对象抽象的模板。每个镜像可以有多个版本,用tag来区分。镜像可以通过Dockerfile来构建。
- 容器,Container,Docker运行的最小单位对象。它是通过镜像实例化出来的一个可运行对象。容器的修改,可以提交反作用于镜像,更新这个容器的模板。
- 仓库,Repository,用于存储管理镜像的仓库,类似于git管理代码的仓库一样,可以管理多版本的镜像。
镜像、容器和仓库三者的关系如下:
K8S
就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。
就在这个时候,K8S出现了。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
一个K8S系统,通常称为一个K8S集群(Cluster)。这个集群主要包括两个部分:一个Master节点(主节点),一群Node节点(计算节点)。Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。
概括来说 K8s 架构就是一个 Master 对应一群 Node 节点。下面我们来逐一介绍 K8s 架构图中的 Master 和 Node。
- Master 节点结构如下:
- apiserver 即 K8s 网关,所有的指令请求都必须要经过 apiserver。
- Scheduler 调度器,使用调度算法,把请求资源调度到某一个 Node 节点。
- Controller 控制器,维护 K8s 资源对象。
- etcd 存储资源对象。
- Node 节点结构如下:
- Kubelet 在每一个 Node 节点都存在一份,在 Node 节点上的资源操作指令由 Kubelet 来执行。
- Kube-proxy 代理服务,处理服务间负载均衡。
- Pod 是 K8s 管理的基本单元(最小单元),Pod 内部是容器,K8s 不直接管理容器,而是管理 Pod。
- Docker 运行容器的基础环境,容器引擎。
- Fluentd 日志收集服务。
- 10分钟看懂Docker和K8S
- 对Docker了解多少?10分钟带你从入门操作到实战上手
- 终于有人把 Docker 讲清楚了,万字详解!
- Docker不香吗,为啥还要K8s?