微服务与容器技术

一、容器虚拟化和传统虚拟化的区别

最主要的区别有以下几个:

1、传统虚拟化的创建速度很慢,而容器虚拟化创建速度很快。

2、传统虚拟化增加了系统调节链的环节有性能损耗,而容器虚拟化共性内核,几乎没有性能损耗。

3、传统虚拟化支持多种操作系统,而容器虚拟化仅支持内核所支持的操作系统。

4、传统的虚拟化资源消耗很大,容器虚拟化资源消耗很小,一台机器可以轻松创建许多个容器。

                                  

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。虚拟机的 Guest OS即为虚拟机安装的操作系统,是一个完整操作系统内核;虚拟机的 Hypervisor 层可以理解为硬件虚拟化平台,它在 Host OS 是以内核态的驱动存在的。Docker 有着比虚拟机更少的抽象层。由于 Docker 不需 Hypervisor 实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用的都是 实际物理机的硬件资源。 因此在 CPU、内存利用率上 Docker 将会在效率上有优 势,在 IO 设备虚拟化上Docker 的镜像管理有多种方案,比如利用 Aufs 文件系统或者 Device Mapper 实现 Docker 的文件管理,各种实现方案的效率略有不同。当新建一个容器时,Docker 不需要和虚拟机一样重新加载一个操作系统内核。引导、加载操作系统内核是一个比较费时费资源的过程,新建一个虚拟机需要加载 Guest OS,这个新建过程是分钟级别的。Docker 由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个容器只需要几秒钟 。现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的,因此,Docker 对比虚拟机在资源消耗 上也占有比较大的优势。
总的来讲,相对于传统虚拟化,容器虚拟化有以下几个技术优势:
1. 更快地交付和部署速度
2. 高效的部署和扩容
3. 更高的资源利用率
4. 更简单的管理
还有以下几个缺点:
1. 资源隔离不如传统虚拟化。只能实现限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。
2. 安全性问题。Docker 不能分辨执行指令的用户,存在一定的安全风险。
3. 存在版本兼容问题

二、Kubernetes的核心组件及其功能

 

1.master
master 节 点 运 行 k8s 的 大 部 分 核 心 组 件 , 包 括 apiserver,scheduler,controller-manager,etcd 等,k8s 作为容器编排调度系统的大 部分职责都在 master 节点实现。
2.etcd
etcd 是 k8s 集群默认的存储后端,k8s 集群内资源的最终都会以一定的规则存放在 etcd 中。
3.kube-apiserver
kube-apiserver 是集群外部访问 k8s 集群的入口。它提供了一组可扩展的 restful api 接口,集群外部可以通过 apiserver 操作 k8s 集群。
4.kube-controller-manager
kube-controller-manager 提供了对 k8s 控制器的管理功能。k8s 集群内的各种资源的管理主要都是由各种控制器提供的。node,replicaset,deployment,daemonset,statefuset,job 等编排对象都有各自对应的控制器
5.kube-scheduler
kube-scheduler 是 k8s 集群中负责容器(pod)调度的组件,所有未经过调度的容器都会通过调度器进行调度。
6.node
node 节点是 k8s 集群的工作节点,是业务容器运行的主要载体,通常有 kubelet和 kube-proxy 两个组件。
7.kubelet
容器的生命周期管理主要在 kubelet 中实现,包括镜像管理服务,容器运行时服 务,容器网络管理及容器存储管理等。
8.kube-proxy
kube-proxy 则主要负责 kubernetes 的 service 在 node 节点上的具体实现,为一 组 Pod 抽象的服务(Service)提供统一接口并提供负载均衡功能。
总的架构如下所示:
                     

猜你喜欢

转载自blog.csdn.net/lqm1094583745/article/details/128133145