欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【1】云原生,kubernetes 与 Docker 的关系

【1】云原生,kubernetes 与 Docker 的关系

2025/4/22 8:39:20 来源:https://blog.csdn.net/m0_67480146/article/details/147362574  浏览:    关键词:【1】云原生,kubernetes 与 Docker 的关系

Kubernetes?K8s?

Kubernetes经常被写作K8s。其中的数字8替代了K和s中的8个字母——这一点倒是方便了发推,也方便了像我这样懒惰的人。

什么是云原生?

云原生: 它是一种构建和运行应用程序的方法,它包含(容器容器编排微服务构架),优势是快速迭代部署应用,自动扩缩容资源,因为容器化与微服务化变得高可用与容错。让应用具备像在“云”上那样运行的能力 —— 弹性、快速部署、自动扩缩、故障自愈、高可用、可观察……这些能力并不要求必须部署在公有云上,你可以在:

  • ☁️ 公有云(AWS、阿里云、腾讯云……)
  • 🏢 私有云(公司内部的数据中心 + 云平台)
  • 🖥️ 本地机房(只要能跑容器和 Kubernetes)
  • 💻 开发者本地环境(比如用 Minikube 跑个小型集群)
  • 🌍 边缘设备 / 混合云 / 多云环境

容器,容器编排

  • **容器:**简单来说就是它可以将应用程序与其运行需要依赖的库,容器运行时环境等打包封装(Docker 就是一种容器)。就像一个杯子?可以将他们装在一起,方便随时随地部署安装和运行。
  • **容器编排:**就是对刚刚说到的容器进行管理,包含将容器分配到合适地方运行,对各容器进行调度,实现容器之间的负载均衡,健康检查与故障恢复等等。最常用最大名鼎鼎的就是 kubernetes(k8s)

微服务

简单来说,一个服务可以由很多小而专的服务组件,通过互相通信组成一套完整的业务系统,例如 web 前端,分类服务,购物车,日志服务,付款服务…… 他们这些服务组件各司其职,各自的功能都很专一,他们组合起来就构成了一个购物软件,这个购物软件就是微服务架构的软件,而这些小而专的组件就是微服务

kubernetes 与 Docker 的关系

Docker:首先,Docker 是一个广泛使用的容器平台,它不仅提供了容器技术,还包含了镜像构建、运行、管理的一整套工具。我们平时说的 “Docker 容器”,其实就是由 Docker 构建并运行的容器(也叫容器实例)。

**Kubernetes:**而 Kubernetes 是一个容器编排平台,它的作用是自动化地部署、管理、扩展和调度容器。不过这里有一个细节:Kubernetes 实际上并不是直接控制单个容器实例,而是以 Pod 为最小单位进行调度。Pod 可以理解为一个逻辑上更大的“容器组”,通常包含一个主容器(有时也会有多个),这些容器共享同一个网络和存储空间。

Pod 的中文意思是“豆荚”,这个比喻也很形象 —— Docker 容器实例就像豆荚(Pod)里的豆子,Pod 是 Kubernetes 中运行容器的最小调度单位,Kubernetes 实际编排的是这些 Pod。

另外需要注意,现在 Kubernetes 通常使用像 containerdCRI-O 这样的容器运行时来运行容器,而不是直接使用 Docker。但只要镜像是标准格式(OCI),就还是可以用 Docker 构建镜像后让 Kubernetes 调用运行
在这里插入图片描述
如上图,Docker并非Kubernetes唯一支持的容器运行时。事实上,Kubernetes基于一系列特性实现了对容器运行时的抽象(从而可以兼容不同的底层容器运行时)。在 Kubernetes 中,容器运行时(如 containerd、CRI-O)需要和 Kubernetes 本身通信。这就引入了容器运行时接口(CRI, Container Runtime Interface)。

✅ 容器运行时接口(如 CRI,Container Runtime Interface):
  • 是 Kubernetes 和容器运行时之间通信的标准规范
  • 它就像一个“接口(interface)”,规定了一个容器运行时应该提供哪些功能(比如创建容器、启动容器、获取状态、删除容器等)。
✅ 容器运行时(如 DockercontainerdCRI-O):
  • 是这些接口的具体实现者(类)
  • 它们按照接口定义的方法和规范,写好了实际的代码逻辑,可以真正创建、运行和管理容器实例。

小知识-容器运行时

说到Docker容器的运行,就不得不说到容器运行时了,首先它与容器实例1的关系就是工具产物的关系(更抽象一点的理解:容器镜像就像房子图纸,容器实例就是房子,容器运行时就是造房子或者装修房子的工具),容器镜像是由 构建工具(如 Docker CLI、BuildKit、Podman 等) 来构建和打包的,容器运行时将镜像转化为可运行的容器实例1,管理已经运行的容器实例的生命周期(启动,停止,删除,监控……)

Docker 是最常见的一种容器技术,它提供的容器运行时可以通过容器镜像创建并运行容器实例。不过,除了 Docker 之外,还有其他厂商提供的类似容器技术,比如 Kata、gVisor 等。虽然这些不同的技术实现方式各异,使用的容器运行时也不同,但它们都具备相似的功能:通过容器镜像创建和管理容器实例。

注意:在业内,一般“容器”就默认指运行时状态的实例,不再单独区分“容器”和“容器实例”,在这里为了初学者能够分清楚,特此解释。

小知识-容器技术

容器技术是指一系列技术、工具和方法,它们共同帮助我们创建、管理、运行和隔离容器。容器技术包括但不限于以下几个核心组成部分:

  1. 容器镜像:容器的蓝图或模板。
  2. 容器运行时:创建并管理容器实例的工具。
  3. 容器编排:自动化管理容器生命周期的系统。
  4. 容器网络:实现容器间通信的网络机制。
  5. 容器存储:为容器提供持久化存储的技术。
  6. 容器镜像仓库:存储和分发镜像的系统。
  7. 容器安全:保护容器和应用程序的安全机制。

  1. 容器镜像和容器实例的关系可以类比为类与对象的关系。容器镜像类似于类,是静态定义和模板,而容器实例则像类的对象,是镜像的运行时实例。容器镜像必须经过容器运行时(如 Docker)创建容器实例后,才能被执行和运行。 ↩︎ ↩︎

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词