Kubernetes 如何部署微服务应用**最新2023**

文章介绍了微服务的多种部署方式,从传统的编程语言发布包、虚拟机,到容器化和Kubernetes编排。重点讲述了Kubernetes的资源管理、调度和服务管理功能,以及其核心组件和关键概念,如Pod、Deployment和Service。此外,还提到了Serverless架构中的Lambda函数及其调用方式。
摘要由CSDN通过智能技术生成


注:全文引用书籍《微服务架构设计模式》12章【美】克里斯·里查森 著

部署微服务应用

1、传统部署方式(特定编程语言发布包)
  1. 专门的运维人员操作,服务器大多使用WebLogic、WebSphere,定期安装补丁更新软件。
  2. 轻量级web容器,Apache Tomcat、Jetty,手动操作。

好处:

  1. 快速部署,如jar、war、node.js 文件直接拷贝
  2. 高效的资源利用,多个服务实例共享机器和操作系统,在同一进程中效率更高。

弊端:

  1. 缺乏技术栈的封装,各种服务部署方式不同。
  2. 无法约束服务实例消耗的资源
  3. 服务无法隔离
  4. 很难自动判断放置服务实例的位置
2、虚拟机方式部署

部署方式:服务源代码创建虚拟机镜像,使用镜像灵活创建实例。

好处

  1. 封装技术栈,简单、可靠
  2. 使用成熟的云计算基础设施

弊端

  1. 资源利用率较低
  2. 部署速度相对较慢
  3. 系统管理额外开销
3、容器化部署

部署方式:构建容器镜像(如:Docker构建镜像时,分层文件系统),存储在镜像仓库,部署时从仓库拉取镜像来创建服务实例。

多个服务互相依赖,使用Docker Compose。可靠的部署至多台机器,须使用容器编排框架,如 Kubernetes。

好处

  1. 封装技术栈,使用容器API对服务管理。
  2. 服务实例间隔离
  3. 限制服务实例的资源消耗

弊端

  1. 容器镜像管理繁琐,容器基础设施和虚拟机基础设施管理(操作系统、运行时补丁)。
4、容器编排框架(Kubernetes)

Kubernetes 框架的三个主要功能:

  1. 资源管理:如CPU、内存、存储卷,将计算机集群当作一台服务器。
  2. 调度:选择运行容器的机器,根据资源使用情况动态调整。
  3. 服务管理:实现命名和版本话服务,服务间的负载均衡、滚动升级等

在这里插入图片描述

Kubernetes的架构:计算机节点分为 主节点(一个或多个)和多个普通节点(工作节点),工作节点运行一个或多个Pod(Pod由一组容器组成)。

主节点运行组件:

  1. API服务器,部署和管理服务的REST API,如可被kubectl调用。
  2. Etcd:存储集群数据
  3. 调度器:选择要运行Pod的节点
  4. 控制管理器:运行控制器,确保集群中实例数量稳定

普通节点运行的组件:

  1. Kubelet:创建和管理节点上Pod
  2. Kube-proxy:管理网络,将应用程序请求路由到Pod,跨Pod负载均衡
  3. Pods:应用程序服务

Kubernetes的关键概念

  1. Pod:基本的部署单元,它由一个或多个共享ip地址和存储卷的容器组成。
  2. Deployment:控制器,确保始终运行所需数量的Pod实例,通过滚动升级和回滚来支持版本控制。每个服务都是Kubernetes的一个Deployment。
  3. Service:向应用程序服务的客户端提供的一个静态/稳定的网络地址。基于TCP和UDP流量负载均衡处理,DNS名称解析IP地址。
  4. ConfigMap:名称与值对的命名集合,用于定义一个或多个应用程序服务的外部化配置。

Kubernetes 部署

1、创建Kubernetes对象(Deployment)编写YAML文件

2、启动 Pod 服务,使用kubectl apply命令向API服务器发出请求创建Deployment和Pod。

kubectl apply -f src/deploymeny/kubernetes/ftgo-restaurant-service.yml

3、创建 Kubernetes Service 对象,提供网络访问节点。

在这里插入图片描述

Istio 服务网络

  1. 流量管理:包括服务发现、负载均衡、路由规则和断路器
  2. 通信安全:使用传输层安全性(TLS)保护服务间通信
  3. 遥测:捕获有关网络流量的指标并实施分布式追踪
  4. 策略执行:强制实施配额和费率限制

在这里插入图片描述

5、Serverless 之 Lambda函数

四种方法调用lambda函数:

  1. HTTP请求:配置AWS API Gateway,讲请求路由到lambda
  2. AWS服务生成的事件:在DynamoDB表操作数据、在Kinesis流中读取消息等
  3. 定时调用
  4. 直接使用API调用

注:全文引用书籍《微服务架构设计模式》【美】克里斯·里查森 著

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值