写点什么

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

作者:小猿姐
  • 2024-05-28
    浙江
  • 本文字数:3697 字

    阅读完需:约 12 分钟

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

从音乐聊开来

电影,是我们生活中的重要调味剂。


配乐,是电影中不可或缺的一部分。


有的时候,配乐可以跟剧情共振,让你按捺不住自己的情绪,或眼含热泪、或慷慨激昂、或人仰马翻、或怅然若失;


有的时候,音乐竟然成为电影的主题,《音乐之声》、《海上钢琴师》、《波西米亚狂想曲》、《爱乐之城》、还有你的《Once》...


那么,你或许好奇:电影的配乐是怎么制作的?


通常来说,电影配乐流程主要包括定点(Spotting)、音画对位(Syncing)、制作打点轨道(Click Track)、作曲(Writing,此阶段通常只写出缩谱)、录音(Recording)等。


Spotting、Syncing、Click Track 等最终是为了让音乐可以“无缝”的融合到剧情中。


而 Writing 主要由作曲家根据粗剪画面进行创作。


比如一段原始的曲子是这样的(请一定带上耳机放松一下):


而最终 Recording 到电影中的效果是这样的:


你应该感受到了,原始曲子跟最终配乐还是有很大差距的,在 Writing 跟 Recording 中间好像缺少了什么东西。


对,配器,就是综合运用各种乐器,使得原始曲子的情感更加饱满,以便进一步烘托剧情。


原始曲谱是这样的:



配器后录音是这样的:



后期合成到电影里是这样的:



配器,英文名称叫 Orchestration。


你可能意识到我要聊啥了,


对,聊啥音乐啊,聊容器编排(Container Orchestration)。

云到底是如何构建的?

互联网,是我们生活中重要的调味剂。


云计算,是互联网不可或缺的一部分。


曾几何时,云计算还是个新兴概念,各路大佬或开口必言、或嗤之以鼻、或故作中肯、或一马当先;


事到如今,云计算已成为基础设施,刷抖音、看小红书、发 Tweet、秀公里数、还有你的 Soul...


那么,你或许好奇,云到底是如何构建的?


通常来说,搭建一朵云包括选址、拿批文、买地、盖机房、拉电线、拉网线、装空调、买机架,这些完工后就有了一个 IDC;之后是买机器、插电、连网、装机、虚拟化,这些完工后就有了一个 IaaS。


基础设施的变革,催生了上层多种新的技术的演进或诞生,DevOps、Microservice、Container、IaC 等等。其中 Container 的出现彻底解决了应用对环境的依赖问题,毫不夸张的说,Container 使得应用与环境彻底解耦,从而使得基础设施可以“无差别”将所有应用进行统一管理,这无疑使得规模化的管理应用成为可能。


而这样的管理平台便应运而生,Apache Mesos, Docker Swarm, Kubernetes, Nomad, Amazon ECS, Microsoft Azure Container Service, Red Hat OpenShift 等等。计算机领域喜欢从别的领域借鉴概念,所以这次借鉴音乐中的配器,我们把容器管理行为称为编排(Orchestration)。总之,云计算、容器化使得编排成为必然。

容器编排包含哪些内容?

“容器编排”(Container Orchestration)是一种自动化容器生命周期管理的过程,主要处理的是在大型系统和动态环境中部署、管理和扩展容器的过程。容器编排提供了一种管理和协调容器化应用程序及其依赖关系的方式,同时确保它们在安全、高效和可靠的情况下运行。在云计算和微服务架构的背景下,容器编排成为了非常关键的一环。以下是一些容器编排的主要功能:


  1. 部署和更新:容器编排系统可以自动化地部署和更新容器。这意味着当你需要部署新的服务或者更新现有的服务时,只需要通过编排系统的 API 或者界面,就可以轻松地完成部署和更新的过程。

  2. 自动扩展:容器编排系统可以根据系统的负载自动增加或减少容器的数量。例如,如果系统的负载增加,编排系统可以自动启动更多的容器来处理增加的请求;反之,如果系统的负载减少,编排系统可以关闭一些不必要的容器,以节省资源。

  3. 服务发现和负载均衡:容器编排系统通常会为容器提供服务发现和负载均衡的功能。这意味着在有多个容器提供相同服务的情况下,这些系统可以自动地将请求平均分配给各个容器,以防止某个容器过载。

  4. 健康检查和故障恢复:如果一个容器出现问题,容器编排系统可以自动检测到,并采取相应的措施,如重启该容器,或者将请求转发到其他健康的容器。

  5. 资源管理:容器编排系统还可以管理系统的资源,如 CPU、内存、网络和存储等。它可以根据容器的需求和系统的可用资源,智能地分配资源给各个容器。

  6. 日志和监控:通过收集和分析容器的日志和指标,容器编排系统可以帮助开发者和运维人员了解系统的状态和性能,及时发现并解决问题。容器编排是现代云原生架构的关键组成部分,对于构建和管理依赖于容器化的复杂分布式应用程序至关重要。

最流行的容器编排工具是哪个?

Kubernestes: 生产可用的容器编排工具


K8s 设计理念是怎样的?

Kubernetes 的设计理念是将容器化应用程序的部署、扩展和管理自动化,从而提高生产效率和应用程序的可靠性。以下是 Kubernetes 设计理念的主要特点:


  1. 自我修复:Kubernetes 可以自动检测和修复应用程序的故障,包括容器崩溃、节点故障和网络问题等。这可以最大程度地减少手动干预的需要,提高应用程序的可靠性。

  2. 自动扩展:Kubernetes 可以根据需求自动扩展应用程序,以适应变化的负载。这可以提高资源利用率,同时确保应用程序的性能和可靠性。

  3. 声明式配置:Kubernetes 使用声明式配置模型,允许用户指定应用程序的期望状态,而不是手动指定如何达到该状态。这可以提高应用程序的可重复性和一致性,并减少配置错误的风险。

  4. 服务发现和负载均衡:Kubernetes 提供了内置的服务发现和负载均衡功能,允许应用程序动态地发现和连接到其他组件,并根据负载均衡算法分配流量。

  5. 滚动更新:Kubernetes 可以支持滚动更新容器化应用程序,以最小化停机时间,并确保新版本的应用程序平稳而安全地部署。

  6. 可扩展性:Kubernetes 的设计允许它在大规模集群中运行,并支持插件式架构,使用户可以根据需要扩展其功能。


总的来说,Kubernetes 的设计理念是将容器化应用程序的部署、扩展和管理自动化,从而提高生产效率和应用程序的可靠性。Kubernetes 提供了丰富的特性和功能,使其成为一种流行的容器编排工具。

为什么 K8s 采用声明式 API?

Kubernetes 被设计为一个管理容器化应用的声明式系统。这意味着 Kubernetes 使用声明式方法,让用户指定系统的期望状态,然后自动将实际状态与期望状态进行协调,而不是提供一套命令式的系统管理命令。


Kubernetes 被设计为声明式系统有几个原因:


  • 简洁性:声明式系统通常比命令式系统更简单、更易用,因为它们允许用户专注于指定系统应做什么,而不是如何去做。

  • 幂等性:声明式系统比命令式系统更具幂等性,这意味着它们可以多次运行而不改变系统状态。这使得管理复杂系统更容易,并且减少了错误和不一致的风险。

  • 可预测性:声明式系统比命令式系统更可预测,因为它们提供了一种清晰且一致的方式来指定系统的期望状态。这使得理解和排除系统故障变得更容易。

  • 自动化:声明式系统比命令式系统更适合自动化,因为它们允许用户以机器可读的格式指定系统的期望状态,便于自动化工具处理。

  • 可扩展性:声明式系统比命令式系统更具可扩展性,因为它们允许用户在不需要手动指定所有系统配置细节的情况下,管理具有大量资源和依赖关系的复杂系统。


总体而言,Kubernetes 使用的声明式方法已被证明是一种强大且有

声明式 Operator 实现起来感觉比命令式的 workflow 难?

实现声明式 Operator 确实需要一定的学习和开发成本,但它们通常比命令式的工作流更加灵活和可维护。


命令式工作流通常需要编写一系列脚本或命令来定义应用程序的部署和管理流程。这些工作流通常是基于特定的环境和应用程序的需求编写的,因此它们可能不具备通用性和可重复性。此外,这些脚本和命令通常难以维护,因为它们与环境和应用程序的状态紧密耦合,需要频繁地更新和调整。


相比之下,声明式 Operator 可以更好地解决这些问题。声明式 Operator 以 Kubernetes 对象的形式定义应用程序的状态和期望结果,而不是直接定义执行的步骤。这样,声明式 Operator 可以更好地实现应用程序的可重复性和一致性,并支持更灵活的自动化应用程序管理。


此外,声明式 Operator 还支持自我修复和自我调整,这可以减少手动干预的需要,提高应用程序的可用性和可靠性。


总的来说,声明式 Operator 确实需要一定的学习和开发成本,但它们通常比命令式的工作流更加灵活和可维护,可以提高应用程序的可重复性和一致性,并支持更高级别的自动化应用程序管理。


以上便是 AIGC 给的答案了。

终章

你的应用代码犹如曲谱,K8s 是目前最好的配器师,经过它的编排,你的应用将演奏出一曲优美的乐章。

End

KubeBlocks 已发布 v0.8.0!KubeBlocks v0.8.0 推出了 Component API,让数据库引擎的组装变得更加简单。Addon 机制也有了重大改进,数据库引擎的 helm chart 从 KubeBlocks repo 中拆分出去,从此数据库引擎或者版本的变动已与 KubeBlocks 发版解绑。v0.8.0 还支持多版本的数据库引擎定义。Pika、ClickHouse、OceanBase、MySQL、PostgreSQL、Redis 等均有功能更新,快来试试看!


小猿姐诚邀各位体验 KubeBlocks,也欢迎您成为产品的使用者和项目的贡献者。跟我们一起构建云原生数据基础设施吧!


💻 官网: www.kubeblocks.io


🌟 GitHub: https://github.com/apecloud/kubeblocks


🚀 Get started: https://kubeblocks.io/docs/preview/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop


关注小猿姐,一起学习更多云原生技术干货。


发布于: 2 小时前阅读数: 6
用户头像

小猿姐

关注

还未添加个人签名 2022-08-11 加入

每个开发者都想知道的云原生和数据库技术

评论

发布
暂无评论
K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s_Kubernetes_小猿姐_InfoQ写作社区