当前位置: 首页 > news >正文

【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)创建容器实例后,才能被执行和运行。 ↩︎ ↩︎

相关文章:

  • 代码随想录算法训练营第五十三天 | 105.有向图的完全可达性 106.岛屿的周长
  • synchronized 与分布式锁
  • 如何成为Prompt工程师:学习路径、核心技能与职业发展
  • 精益数据分析(7/126):打破创业幻想,拥抱数据驱动
  • 树莓派3B的外网访问
  • C语言之文本加密程序设计
  • 【NLP 60、实践 ⑭ 使用bpe构建词表】
  • Android Kotlin AIDL 完整实现与优化指南
  • SpringBoot3设置maven package直接打包成二进制可执行文件
  • 开源项目FastAPI-MCP:一键API转换MCP服务
  • 软件测试笔记(测试的概念、测试和开发模型介绍、BUG介绍)
  • 计算机视觉7——齐次坐标与相机内外参
  • 测试模版1
  • 【Python笔记 01】变量、标识符
  • Eureka搭建
  • Vue3 + TypeScript,关于item[key]的报错处理方法
  • 2025年4月19日-得物算法岗春招笔试题-第一题
  • HBase安装与基本操作指南
  • 【21天学习打卡挑战赛】如何学习WEB安全:逼自己在短时间掌握WEB安全核心内容
  • 【Linux我做主】GDB调试工具完全指南
  • 江西省人大教育科学文化卫生委员会主任委员王水平被查
  • 美关税政策冲击本土车企:福特7月涨价,通用汽车盈利预期下调
  • 能源央企资产重组大提速,专业化整合掀起新热潮
  • 不降息就走人?特朗普试图开先例罢免美联储主席,有无胜算
  • 硅基世界的“缘分”——系统与人工智能携手进化
  • 中超浙江队外援布彭扎坠亡,警方通报:排除刑事案件