k8s,docker,openstack以及容器与虚拟机之间的关系

目录

    • 前言:
        • 1,关于容器技术与虚拟机:
        • 2,关于docker
            • docker技术的三大核心概念:镜像,容器,仓库
        • 3,关于k8s:
            • k8s的架构
        • 4,关于openstack
        • 5,总结:

前言:

近几年来,随着虚拟化技术的普及,渐渐的虚拟机已经转变了身份,成为了docker,openstack, k8s, 的分母式存在,而这三种新兴起的技术也充分的发挥了虚拟机的强大功能,使得虚拟化技术虚拟的更加彻底,那这三种之间到底存在着怎么样的关系呢,下面我们就来一一介绍

1,关于容器技术与虚拟机:

虚拟机:在容器技术之前,业界的网红是虚拟机,虚拟机技术的代表,是vmware 和openstack
所谓虚拟机就是在你的操作系统里面。装一个软件,然后通过这个软件,再模拟一台甚至多台字电脑出来。字电脑里面可以和正常电脑一样运行程序。并且子电脑与子电脑之间是相互隔离的,互不影响。

容器技术:而容器技术恰好没有这些缺点,他不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”),它启动时间很快,几秒钟就能完成,并且,它对资源的利用率很高(一台主机可以同时运行几千个docker容器),此外,他占用的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB甚至KB级

两者联系:虚拟机属于虚拟技术,而docker这样的容器技术,也是虚拟技术,属于轻量级的虚拟机

虚拟机的缺点:虚拟机虽然可以隔离出很多子电脑,但是占用空间大,启动更慢,虚拟软件可能还要花钱(如vmware)

2,关于docker

docker是创建容器的工具,是应用容器引擎
想要搞懂docker,只要记住:“搭建,发送,运行”这个流程

我们来举例说明一下:

就拿平常炒菜的过程来说明一下:要制作一盘美味的饭菜,需要买菜,洗菜,切菜,开火加工炒菜,
最后才能吃得上可口的饭菜,并且一日三餐必须还是要吃饭,这就让人产生了一种想法,能不能不
做饭,只吃?于是,一个仙人教会我一种魔法,这种魔法可以把我做好的菜复制一份,做成"镜像"放
在冰箱里,等到了下一餐想要吃饭的时候拿出来直接吃就好了,所以,docker的第二个核心口号就
是: 搭建一次,到处能用。
docker技术的三大核心概念:镜像,容器,仓库

刚才举得例子中,那个放在冰箱里的镜像就是docker镜像,而冰箱就是docker仓库,用魔法制作成的一盘菜就是docker容器,说白了,这个docker镜像就是,是一个特殊的文件系统,他除了提供容器运行时候所需要的程序,库,资源,配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量),镜像不包含任何动态数据,其内容在构建之后也不会被改变。
也就是说,这一盘菜是一样的,但油盐酱醋之类的,你还是可以再添加的,想怎么加就怎么加,依照个人口味。
那如果一个人同时想吃不止一盘菜呢?

可以的!就像是我做了一盘五花肉,楼上的邻居做了一盘大盘鸡,楼下的邻居做了一盘土豆丝,并且都做成了镜像,这样一来我们可以交换镜像,一个人同时吃几盘菜很容易便实现了。

于是,这也就变成了一个公共大仓库,负责对docker镜像管理的是docker registry服务(类似于仓库管理员)
当然,也不是任何人做的任何菜都是可以吃的,万一有人做了有问题的饭菜呢?
所以 dockerRegistry服务对镜像的管理是非常严格的。
最常使用的registry公开服务,是官方的docker hub,这也是默认的registry,并拥有大量的高质量的官方镜像。

3,关于k8s:

首先,k8s是一个全新的基于容器技术的分布式架构领先方案,k8s是goole开源的容器集群管理系统(谷歌内部:borg)。在docker技术基础上,为容器化的应用提供部署。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。
虽然docker很火,但是想应用于具体的业务实现,是存在困难的----编排,管理和调度等各个方面,都不容易,于是人们迫切需要一套管理系统,对docker及容器进行更高级更灵活的管理
就在这个时候,k8s出现了
和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。
然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。
K8S是2014年6月由Google公司正式公布出来并宣布开源的。
同年7月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相继加入K8S。
之后的一年内,VMware、HP、Intel等公司,也陆续加入。
2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。

k8s的架构

一个K8S系统,通常称为一个K8S集群(Cluster)。

这个集群主要包括两个部分:

  • 一个Master节点(主节点)
  • 一群Node节点(计算节点)
    k8s,docker,openstack以及容器与虚拟机之间的关系_第1张图片

一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。
首先是master节点:
k8s,docker,openstack以及容器与虚拟机之间的关系_第2张图片

Master节点包括API Server、Scheduler、Controller manager、etcd。
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
Controller manager负责管理控制器,相当于“大总管”。

Node节点

k8s,docker,openstack以及容器与虚拟机之间的关系_第3张图片

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
Kube-proxy,主要负责为Pod对象提供代理。
Fluentd,主要负责日志收集、存储与查询。

前几年,大家以为虚拟机是核心网的终极形态。目前看来,更有可能是容器化。这几年经常说的NFV(网元功能虚拟化),也有可能改口为NFC(网元功能容器化)。
而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。

这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。
5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLkfiVgx-1606209658072)(en-resource://database/1361:1)]
按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。

4,关于openstack

OpenStack是个虚拟化的云操作系统。它把一大块资源打碎了,每小块资源上部署操作系统甚至一些应用。拿出其中一小块,租给你用,你不用关心,也无从知道,你系统的CPU、RAM、DISK在哪台共享的服务器上。常用于IaaS云部署。
公认的云计算IaaS平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,OpenStack也开始通过各种方式增加对容器的支持,但目前OpenStack还不被视为管理容器的主流平台。。
OpenStack 社区和 Docker 的结合越来越紧密。然而正如其他回答所示,OpenStack 主要还是用来管理 VM(虚拟机)。
OpenStack 很庞大,底层资源管理能力很强。
Kubernetes 的强项在于容器编排,可以很好解决应用上云的问题。Kubernetes 可以运行在 OpenStack 上。Kubernetes 的好处,推荐来自浙大的这篇文章:请注意,容器技术圈已迈入后Kubernetes时代!
以下是5个OpenStack的重要构成部分:
Nova – 计算服务
Swift – 存储服务
Glance – 镜像服务
Keystone – 认证服务
Horizon – UI服务

5,总结:

总而言之,首先就是容器与虚拟机的存在,现在容器有可以逐渐取代虚拟机的趋势,但是虚拟机在某些地方还是不可被取代的。就像是5G与4G的关系。
而k8s是基于容器之上来实现的,就像是容器的领航管理者,而docker就是创建容器时所需要的工具。
至于openstack 其实与容器k8s并无直接的关系,可以说是相对平行的一种关系,而openstack是基于虚拟机操作的虚拟化云系统,虽然现在也正在努力的与docker,k8s融入。但是其发展成效可能要好几年后才会出结果。

你可能感兴趣的:(容器篇,docker,kubernetes)