Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。

k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

1、从虚拟化角度

Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。

我们的kuberbete就是管理这些应用程序所在的小运行环境

2、从部署角度

嫌弃虚拟机繁重,
部署Container容器的技术来部署应用,全部Container运行在容器引擎上

最后我们来分析一下docker和k8s的关系:

我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。
kubernetes不仅仅支持Docker,还支持Rocket

Why docker?

Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

1.Docker和容器技术为什么会这么火爆?说白了,就是因为它“轻”。
在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。子电脑”和“子电脑”之间,是相互隔离的,互不影响

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

3.Build once,Run anywhere(搭建一次,到处能用)。
放在包里的“镜像”,就是Docker镜像。而我的背包,就是Docker仓库。我在空地上,用魔法造好的房子,就是一个Docker容器。
还可以交换镜像,变成了一个大的公共仓库

说完了Docker,我们再把目光

转向K8S

docker管理存在困难的——编排、管理和调度等各个方面
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
谷歌旗下的产品

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

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

一个Master节点(主节点)
一群Node节点(计算节点)

Master节点

devops docker k8s 关系 docker与k8s的关系_Pod


API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

Controller manager负责管理控制器,相当于“大总管”。

然后是Node

devops docker k8s 关系 docker与k8s的关系_Docker_02

Pod是Kubernetes最基本的操作单元

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

Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

Kube-proxy,主要负责为Pod对象提供代理。

Fluentd,主要负责日志收集、存储与查询。

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活