深入微服务架构 | 微服务与k8s架构解读

这篇具有很好参考价值的文章主要介绍了深入微服务架构 | 微服务与k8s架构解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微服务项目架构解读

① 什么是微服务?

微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。

微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个定义来自DDD领域驱动设计。

它的主要特点是组件化、松耦合、自治、去中心化,体现在以下几个方面:

一组小的服务

服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。

独立部署运行和扩展

每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。

独立开发和演化

技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。

独立团队和自治

团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。

我们可以看到整个微服务的思想就如我们现在面对信息爆炸、知识爆炸是一样的:通过解耦我们所做的事情,分而治之以减少不必要的损耗,使得整个复杂的系统和组织能够快速的应对变化。

② 微服务的优点

每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。

微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。

微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

微服务能使用不同的语言开发。

微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, bamboo 。

一个团队的新成员能够更快投入生产。

微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

微服务允许你利用融合最新技术。

微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合。

微服务能够即时被要求扩展。

微服务能部署中低端配置的服务器上。

易于和第三方集成。

每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库

k8s集群架构解读

① 什么是kubernetes

Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Kubernetes优势:

容器编排

轻量级

开源

弹性伸缩

负载均衡   

② Kubernetes架构和组件

深入微服务架构 | 微服务与k8s架构解读,软件测试,架构,微服务,kubernetes,功能测试,软件测试,自动化测试,职场和发展

 主从分布式架构,Master/Node

  • 服务分组,小集群,多集群

  • 服务分组,大集群,单集群

Kubernetes Master / Node : 如果大家对诸如hadoop这样的分布式集群有所了解,就会发现k8s的设计理念和其他分布式架构的非常类似的:Master节点负责接收用户的指令、分配任务以及记录各个node的情况;而node节点负责接收Master的指令,启动相应的Pod(k8s的最小执行单元,是一个Container的集合)

安装k8s时会指定Master和Node节点,部署好之后,我们通过k8s的api与Master节点进行交互。Master节点收到了我们的指令(比如新启动一个Pod),会调度Node节点去完成它们。当然,其中底层的调度策略、具体的实现细节对于我们使用者来说都是隐蔽的,不需要我们去了解。

master工作流程图

深入微服务架构 | 微服务与k8s架构解读,软件测试,架构,微服务,kubernetes,功能测试,软件测试,自动化测试,职场和发展

Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。

Kubernetes Client将请求发送给API server。

API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。

REST Storage API对的请求作相应的处理。

将处理的结果存入高可用键值存储系统Etcd中。

在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。

依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。

Kubernetes Node运行节点,运行管理业务容器,包含如下组件:

1.Kubelet负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。

2.Kubernetes Proxy负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。

3.DockerNode上需要运行容器服务。

Kubelet[节点上的Pod管家]

负责Node节点上pod的创建、修改、监控、删除等全生命周期的管理 定时上报本Node的状态信息给API Server。

kubelet是Master API Server和Minion/Node之间的桥梁,接收Master API Server分配给它的commands和work,通过kube-apiserver间接与Etcd集群交互,读取配置信息。

具体的工作如下:

设置容器的环境变量、给容器绑定Volume、给容器绑定Port、根据指定的Pod运行一个单一容器、给指定的Pod创建network 容器。

同步Pod的状态、同步Pod的状态、从cAdvisor获取container info、 pod info、 root info、 machine info。

在容器中运行命令、杀死容器、删除Pod的所有容器。

③ k8s常用命令

创建资源:

kubectl create -f yaml文件

查看资源:

kubectl get <resource_type>
# 比如获取K8s集群下pod的信息
kubectl get pod
# 更加详细的信息
kubectl get pod -o wide
#获取pod更详尽的状态信息
kubectl describe pod pod名称
#查看所有的nodes
kubectl get nodes
#查看所有的namespace
kubectl get pod --all-namespaces

替换资源:

kubectl replace -f yaml文件

删除资源:

kubectl replace -f yaml文件

查看日志:

kubectl logs pod名称
#如果想动态查看日志加-f

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

深入微服务架构 | 微服务与k8s架构解读,软件测试,架构,微服务,kubernetes,功能测试,软件测试,自动化测试,职场和发展

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

深入微服务架构 | 微服务与k8s架构解读,软件测试,架构,微服务,kubernetes,功能测试,软件测试,自动化测试,职场和发展文章来源地址https://www.toymoban.com/news/detail-752486.html

到了这里,关于深入微服务架构 | 微服务与k8s架构解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Kubernetes (K8s) 解读:微服务与容器编排的未来

    Kubernetes (K8s) 解读:微服务与容器编排的未来

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(14)
  • 微服务应用视角解读如何选择K8S的弹性策略

    微服务应用视角解读如何选择K8S的弹性策略

    微服务架构的出现,拆分了庞大的单体应用,让业务之间的开发与协作变得更加灵活。当面临业务流量增加的场景时,往往需要对一些应用组件进行扩容。K8S在应用层面提供了HPA,围绕HPA开源社区延伸出了KEDA这样的弹性组件,为微服务应用以业务指标执行弹性策略提供了实现

    2024年02月02日
    浏览(7)
  • 深入探讨Kubernetes(K8s)在云原生架构中的关键作用和应用

    深入探讨Kubernetes(K8s)在云原生架构中的关键作用和应用

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内容:Kubernetes(K8s) 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 随着云原生应用程序的兴起,Kubernetes(通常称为K8s)

    2024年02月09日
    浏览(38)
  • 云原生之深入解析K8s中的微服务项目设计与实现

    云原生之深入解析K8s中的微服务项目设计与实现

    ① 微服务设计的思想 一个单片应用程序将被构建、测试并顺利地通过这些环境。事实证明,一旦投资于将生产路径自动化,那么部署更多的应用程序似乎就不再那么可怕了。请记住,CD的目标之一就是让部署变得无聊,所以无论是一个应用程序还是三个应用程序,只要它仍然

    2024年02月03日
    浏览(41)
  • 【K8S系列】深入解析K8S监控

    【K8S系列】深入解析K8S监控

    做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记论点 蓝色 :用来标记论点 Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s监控相关

    2024年02月12日
    浏览(37)
  • 【K8S系列】深入解析K8S调度

    【K8S系列】深入解析K8S调度

    做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记论点 蓝色 :用来标记论点 Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s调度相关

    2024年02月11日
    浏览(8)
  • 【K8S系列】深入解析k8s网络

    【K8S系列】深入解析k8s网络

    你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记一级论点 蓝色 :用来标记二级论点 Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s网络相关的内容 希望这篇

    2024年02月03日
    浏览(9)
  • 【K8S系列】深入解析K8S存储

    【K8S系列】深入解析K8S存储

    做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记一级论点 蓝色 :用来标记二级论点 Kubernetes (k8s) 是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下

    2024年02月11日
    浏览(7)
  • k8s 系列之 CoreDNS 解读

    k8s 系列之 CoreDNS 解读

    kuberntes 中的 pod 基于 service 域名解析后,再负载均衡分发到 service 后端的各个 pod 服务中,如果没有 DNS 解析,则无法查到各个服务对应的 service 服务 基于环境变量的方式 基于内部域名的方式 DNS策略,在Pod,Deployment RC等资源设置 dnsPolicy None 用于想要自定义 DNS 配置的场景,

    2024年02月06日
    浏览(7)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包