K8S如何进行企业级大规模应用管理--《K8S in action》读书笔记1
1.传统的应用开发部署方式与现在的应用开发部署方式的区别。
传统的应用是单体应用的方式,以一个或多个进程的方式运行在服务器上。这是因为早期的应用开发周期长,更新迭代也不频繁。发布的时候开发人员把应用包交给运维人员,运维人员部署到服务器上,如果服务器发生故障,再进行迁移应用。值得一提的是,经常因为运维人员的环境与开发人员不同而部署失败,所以容器这种把环境和代码一起打包的思想就应运而生。
现在的开发思想是把巨大的单体应用拆解为微型的、独立的组件,这就是微服务。因为微服务彼此之间松耦合,所以每个微服务可以独立开发、部署、升级、扩容。但如果需要部署的组件和数据中心很多的话,编排他们就会变得很困难(编排是指根据资源利用率来却确定组件部署在什么地方,并对他们进行调度、配置、监管和故障处理)。
2.Kubernete可以做什么?
如图、Container是一个个的集装箱,Docker是一条鲸鱼驮着集装箱,而Kubernetes的意思是“舵手”。这是指通过Docker实现容器化,通过K8S实现对容器的自动化编排(部署、扩容等)
3.Kubernetes的特点
它抽象了数据中心的硬件基础设施,使得对外暴露的只有资源池,这样在运行时不用关注底层的服务器,并且部署后能实现组件之间的相互通信和发现。
4.应用程序部署的变化
传统单体应用由很多组件组成,组件之间紧耦合,松聚合,在同一个操作系统进程中运行,所以在开发、部署、管理时必须以同一实体进行。即使修改一个小地方,都要重新部署整个应用。组件之间缺乏严格的边界定义,相互依赖。
从硬件资源方面,运行单体应用需要一台高性能服务器,为了应对业务的增长,可以对单台服务器的资源做垂直扩展,或增加服务器做水平扩展。垂直扩展不变代码但成本很高且通常会有瓶颈;水平扩展的话,需要对代码做很大改动,并且受到很大的约束(如果单体应用的一个部分不能扩展,整体应用就不能扩展。)
所以需要将巨大复杂的单体应用,拆分为微型、可独立部署的微服务。每个微服务以独立的进程运行,并通过简单且定义良好的API来与其他微服务进行通信。
服务之间可以通过HTTP同步协议或AMQP异步协议通信。这些协议不局限于编程语言。
微服务可以作为独立的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构