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

软考:论容器编排

容器的好处

是现代IT领域的关键技术之一,它提供了一种轻量级的虚拟化解决方案,使得应用程序可以在隔离的环境中运行,而无需关心底层操作系统。
2013年Docker的出现,极大地推动了容器技术的发展,它简化了应用的打包和部署过程,使得应用程序能够跨多个环境一致地运行。

容器的本质是进程
容器是应用程序层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台计算机上运行,​​并与其他容器共享OS内核,每个容器在用户空间中作为隔离的进程运行。容器占用的空间少于VM,可以处理更多的应用程序,并且需要的VM和操作系统更少。

  • vm and container
    虚拟机: 在物理机模拟整台机器包含硬件 每台虚拟机就是自己的操作系统,虚拟机一旦 开启,预分配的资源全部占用
    容器:和 宿主机共享硬件和操作系统实现资源动态分配 容器包含所有的依 赖包都与其他容器共享内核

是什么

容器编排是对多个容器的部署,管理和监控。之所以有容器编排技术,其实是和业务量与系统复杂度与日俱增推动服务部署的演进方式息息相关的。

为什么需要容器编排:

我们将单体式的架构拆分成越来越多细小的服务,运行在各自的容器中,那么该如何解决它们之间的依赖管理,服务发现,资源管理,高可用等问题呢?

资源编排 - 负责资源的分配,如限制 namespace 的可用资源,scheduler 针对资源的不同调度策略;
工作负载编排 - 负责在资源之间共享工作负载,如 Kubernetes 通过不同的 controller 将 Pod 调度到合适的 node 上,并且负责管理它们的生命周期;
服务编排 - 负责服务发现和高可用等,如 Kubernetes 中可用通过 Service 来对内暴露服务,通过 Ingress 来对外暴露服务。

容器编排是管理大规模容器化应用程序的自动化过程,它对于现代云计算和微服务架构至关重要。以下是为什么需要容器编排的几个关键原因:

  1. 自动化管理:随着应用程序数量的增长和复杂化,手动管理成百上千个容器变得不切实际。容器编排工具可以自动化容器的部署、扩展、负载均衡和自我修复,从而简化容器基础设施的管理 。

  2. 资源优化:容器编排工具能够高效地管理资源,确保应用程序在分布式环境中的稳定性和可靠性,同时优化资源使用,降低成本 。

  3. 可扩展性:容器编排允许根据工作负载需求自动扩大或缩小容器部署,支持应用程序的无缝扩展 。

  4. 高可用性:容器编排工具可以检测和修复基础设施故障,自动重启或替换失败的容器,保持应用程序的高可用性和增加正常运行时间 。

  5. 微服务架构支持:在微服务架构中,应用程序被拆分成多个独立的服务。容器编排帮助管理这些服务的部署、扩展和通信,确保系统的稳定性和可靠性 。

  6. 多租户环境容器编排可以实现资源的隔离和分配,在多租户环境中确保每个租户的应用程序能够独立运行 。

  7. 持续集成和持续部署(CI/CD):容器编排可以与CI/CD工具链集成,实现应用程序的自动化构建、测试和部署,提高开发效率,缩短发布周期 。

  8. 混合云和多云环境:容器编排可以跨多个云提供商和私有数据中心部署和管理应用程序,实现混合云和多云环境的统一管理 。

  9. 安全性:容器编排允许跨平台管理安全策略,减少人为错误,隔离应用程序进程,减少攻击面并提高整体安全性 。

  10. 边缘计算:在边缘计算场景中,容器编排可以帮助管理和运行分布在边缘节点上的容器,实现资源的动态调度和故障恢复 。

综上所述,容器编排是实现大规模、高效、可靠容器化应用程序部署和管理的关键工具 。

应用编排

实际上我们管理的是应用包,一个应用会包含多个服务Pod,

  • K8S的好处
    通过上面的例子,我们发现 Kubernetes 已经为我们对大量常用的基础资源进行了抽象和封装,我们可以非常灵活地组合、使用这些资源来解决问题,同时它还提供了一系列自动化运维的机制:如 HPA, VPA, Rollback, Rolling Update 等帮助我们进行弹性伸缩和滚动更新,而且上述所有的功能都可以用 YAML 声明式进行部署。

  • 困境
    但是这些抽象还是在容器层面的,对于一个大型的应用而言,需要组合大量的 Kubernetes 原生资源,需要非常多的 Services, Deployments, StatefulSets 等,这里面用起来就会比较繁琐,而且其中服务之间的依赖关系需要用户自己解决,缺乏统一的依赖管理机制。

应用编排
一个对外提供服务的应用,首先它需要一个能够与外部通讯的网络,其次还需要能运行这个服务的载体 (Pods),如果这个应用需要存储数据,这还需要配套的存储:

应用单元 = 网络 + 服务载体 +存储


http://www.mrgr.cn/news/69292.html

相关文章:

  • 全面解读 USB Key:定义、使用场景、加密技术及 Java 实现
  • 【学习】HTTP
  • Spring Boot 中使用 @Transactional 注解配置事务管理
  • C语言指针初步(1)
  • RHCE的学习(17)
  • React Query在现代前端开发中的应用
  • 介绍一下数组(c基础)(详细版)
  • 2024年3月电子学会Python等级考试试卷(五级)真题,包含答案
  • DirectShow过滤器开发-写AVI视频文件过滤器
  • C++builder中的人工智能(16):神经网络中的SoftPlus激活函数
  • ubuntu24.04安装matlab失败
  • Rust为什么要搞个match匹配,直接用==判断不行吗(Rust match、Rust ==、Rust模式匹配)
  • vue2 和 vue3的区别
  • Mac 安装protobuf2.5.0
  • 【竞技宝】LOL:JKL回归IG已无可能?
  • 对于app开发者对接广告联盟,需要哪些资质以及变现如何?
  • arkUI:绝对定位、相对定位、Z序控制(position、offset、zIndex)
  • 【C#设计模式(2)——工厂模式】
  • 【初阶数据结构与算法】线性表之单链表的定义与实现
  • 就是这个样的粗爆,手搓一个计算器:十进制到百分比转换器
  • 稳压二极管详解
  • 电磁兼容(EMC):GB 4343.1喀呖声 详解
  • js 好用的字符操作方法
  • 模块的导入
  • 快速上手Amazon SES:掌握企业级邮件解决方案
  • Python练习14