微服务架构下Docker容器技术与Kubernetes(K8S)

devtools/2024/10/16 2:27:37/

Kubernetes、微服务和Docker容器技术的结合提供了一个强大、灵活且高效的平台,能够应对现代应用程序的复杂性和动态性。Kubernetes的自动化管理、服务发现、负载均衡和配置管理,与Docker的标准化打包和运行环境相结合,最大化地发挥了微服务架构的优势。

 

单体架构 VS 微服务架构

随着互联网技术的迅速发展以及软件复杂度的提高,相比单体应用架构模式,微服务架构已经成为现代软件开发的主流。微服务架构会将应用程序拆分为多个小的、松耦合的服务,每个服务可以独立开发、部署和扩展,这些服务通常通过轻量级协议(如HTTP/REST或gRPC)进行通信。

图片

单体架构应用

所有功能和组件集中在一个单一的应用程序中

适合小型团队开发,对业务复杂度要求不高

微服务架构应用

所有服务都可以独立部署和更新,从而提供了更大的灵活性

服务分布在不同的服务器或容器中,可以优化资源使用和负载平衡

可以快速实现服务扩容与缩放,更好地满足用户的要求

比如微服务架构下的电商平台,包含用户管理、商品管理、订单处理、支付服务等。这些微服务独立部署和扩展。

  • 用户管理服务:处理用户注册、登录和个人信息管理。

  • 商品管理服务:管理商品的展示、分类和库存。

  • 订单处理服务:处理订单的创建、更新和跟踪。

  • 支付服务:集成多种支付方式,处理支付请求。

而要实现微服务架构应用,Kubernetes(k8s)作为一个强大的容器编排平台,结合Docker容器技术,提供了管理和调度容器化微服务的能力,能够极大地简化了微服务的部署和管理。

Docker容器技术

Docker是一种容器化技术,允许开发人员将应用程序及其所有依赖打包到一个标准化的单元(容器)中。这些容器可以在任何支持Docker的平台上运行,确保了应用的可移植性和一致性。

图片

Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。

Kubernetes 容器管理平台

Kubernetes,简称K8s,是一个开源的容器编排平台,最初由Google设计和开发,Kubernetes旨在自动化部署、扩展和管理容器化应用。

随着容器技术的兴起,开发和运维人员可以将应用及其依赖打包成轻量级、可移植的容器。尽管容器本身解决了环境一致性问题,但在大规模生产环境中,单靠手动管理容器的生命周期和资源分配是不可行的。这时,Kubernetes应运而生。

Kubernetes解决了以下几个关键问题:

  • 自动化部署和复制:简化应用的部署和扩展。

  • 自我修复:自动监控和恢复故障容器。

  • 负载均衡和服务发现:自动分配流量和管理内部通信。

  • 弹性伸缩:可以根据需要自动对集群中正在运行的容器数量进行调整。

  • 存储编排:自动挂载和管理存储资源。

图片

测试需要掌握Kubernetes哪些知识?

k8s作为目前最流行的容器编排技术,测试工程师虽然不需要掌握k8s相当深入的知识,但是一些k8s的基础使用还是需要了解的

基础使用方面

1、k8s的相关基础概念:

  • PodKubernetes中最小的部署单元,包含一个或多个容器

  • Pod Controller:pod管理器,通过它来实现对pod的管理

  • Namespace:Namespace用于隔离资源和环境

  • Service:Service用于暴露Pod,使其能够被集群内外访问

  • 标签:用于对资源进行分类

  • ...

2、基本的命令操作:

  • 查看资源kubectl get podskubectl get services

  • 创建和删除资源kubectl apply -f <file>kubectl delete -f <file>

  • 查看日志kubectl logs <pod-name>

  • ...

3、k8s配置文件:

k8s中可以通过声明式对象配置方式,使用yaml这种文件格式编写配置去操作kubernetes的资源

能够编写和理解简单的yaml配置文件,用于定义Pod、Service、Deployment等资源

进阶应用

利用k8s的容器编排特性,比如负载均衡、弹性伸缩,帮助我们解决实际测试工作中的相关问题

1、自动化测试环境管理:

Kubernetes 中使用命名空间(Namespaces)来隔离不同的环境。可以为开发、测试和生产环境创建不同的命名空间,能够确保这些环境之间的资源隔离和管理

借助 Kubernetes 的 Pod管理器 和 Service ,可以快速部署和销毁测试环境,只需要简单的执行kubectl delete命令

2、搭建分布式测试平台

比如在使用selenium进行多浏览器测试时,使用Kubernetes的集群管理能力能够同时在多台机器运行多个浏览器实例,搭建一套分布式测试平台,能够显著缩短测试时间。

3、性能测试

Kubernetes可以在性能测试和负载测试中发挥关键作用,尤其是对于需要模拟大量用户请求的测试场景。

利用Kubernetes的弹性伸缩特性,Kubernetes可以动态地扩展/缩放容器实例数量,在负载测试期间能够根据需求动态调整系统的规模。

 


http://www.ppmy.cn/devtools/42660.html

相关文章

ROS2进阶 -- 硬件篇问题(一) ESP32连接电脑后端口不显示,arduino ide端口灰色

自己的esp32用数据线连接电脑后&#xff0c;在Arduino ide中端口为灰色&#xff0c;而且在设备管理器中也找不到对应的端口设置。 这是因为新的ESP32需要安装驱动 解决方法 情况一&#xff1a;检查esp32连接电脑的数据线&#xff0c;如果是单纯的供电线是不可以的&#xff0c…

BGP实验:联邦和发射器实验

BGP实验&#xff1a;联邦和发射器实验 一、实验拓扑 二、实验要求及分析 实验要求&#xff1a; 1、AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能再任何协议中宣告&#xff1b; ​ AS3存在两个环回&#xff0c;一个地址为192.168.2.0/24&…

大厂程序员离职,开发一个盲盒小程序2万,一周开发完!

大家好&#xff0c;我是程序员小孟&#xff01; 前面接了一个盲盒的小程序&#xff0c;主要的还是商城&#xff0c;盲盒的话只是其中的有一个活动。 现在的年轻人是真的会玩&#xff0c;越来越新的东西出来&#xff0c;越来越好玩的东西流行。 就像最近很火的地摊盲盒。 讲…

了解CentOS及其基础

什么是CentOS&#xff1f; CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个社区支持的操作系统&#xff0c;基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的源代码。它是免费且开源的&#xff0c;广泛用于服务器环境。 为什么选择C…

第一份工资

当我拿到我人生的第一份工资时&#xff0c;那是一种难以言表的激动。我记得那个下午&#xff0c;阳光透过窗户洒在了我的办公桌上&#xff0c;我看着那张支票&#xff0c;心中满是欣喜和自豪。那是我独立生活的开始&#xff0c;也是我对自己能力的一种肯定。 我记得我是如何支配…

【Unity2D:C#Script】实现角色射击功能

一、创建子弹预制体 1. 创建子弹预制体 2. 调整图片大小、层级 二、为子弹添加碰撞体积 1. 添加Box Collider 2D、Rigidbody 2D组件 2. 锁定z轴 三、编辑敌人脚本 注&#xff1a;在以下代码中&#xff0c;只显示本章节新增的代码&#xff0c;省略原有的代码 1. 为敌人添加生…

民国漫画杂志《时代漫画》第18期.PDF

时代漫画18.PDF: https://url03.ctfile.com/f/1779803-1248612707-27e56b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

VScode C/C++环境安装配置

1. 编译器需要从如下网站下载&#xff1a; MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net 2. 切换到file选项&#xff0c;下拉找到对应的文件版本直接下载&#xff1a; 3. 右键解压到当前文件夹如下&#xff1a; 4. 如图所示复制浏览器上的相应的…