0
点赞
收藏
分享

微信扫一扫

非容器应用与K8s工作负载的服务网格化

Tip:

目的:POD和VM混合的场景是非容器应用的网格化最常见的场景。二所裸金属上的应用fdp容器化后,将虚拟机上的应用(FRDP/MDP等)网格化,使其与Kubernetes容器服务上的POD(FDP)能够进行相互通信。(​​六翁_阿里云开发者社区 (aliyun.com)​​)

关注点:

  1. tcp/udp通讯;(http/grpc通信协议的POD和VM互访,grpc协议相比http而言,既具备http跨操作系统和编程语言的好处,又提供了基于流的通信优势。而且,grpc逐渐成为工业界的标准,一旦我们的grpc服务可以mesh化,那么更多的非标准协议就可以通过转为grpc协议的方式,低成本地接入服务网格,实现跨技术栈的服务通信。
  2. 应用配置中IP地址的声明;


笔记:

1、(​​非容器应用与K8s工作负载的服务网格化实践-1 ASM-VM-PROXY的安装-阿里云开发者社区 (aliyun.com)​​)ASM-VM-PROXY是连接ASM和VM的工具,运行在VM节点中,为了支持跨操作系统,以Docker Image的方式分发。启动参数

路径为/opt/asm_vm_proxy/asm_vm_proxy.env。
ACCESS_KEY_ID 阿里云账号ID
ACCESS_KEY_SECRET 阿里云账号密码
REGION 地域标识 请参考https://api.aliyun.com/?#/region
MESH_ID ServiceMesh实例ID
NS 虚机要加入的命名空间(Namespace)
SA 虚机要使用的服务账号(ServiceAccount)
POD_NAME 虚机要使用的POD级别的名称

环境变量​HTTP_HELLO_BACKEND​用于告诉当前服务是否有下游服务。这样设计的目的是在不借助其他组件的情况下,极简地展示链路信息;

——>分别介绍基于http/grpc通信协议的POD和VM互访。各种编程语言实现的服务普遍通过http协议提供服务和彼此通信,因此http篇的目的是希望展示ecs网格化过程中最经典的场景。grpc篇的目的有两个,一个是单纯地展示基于grpc通信协议服务的网格化方案,另一个是希望为ecs上使用了其他服务发现方式的遗留服务,提供一种更简单的网格化思路——使用k8s作为唯一服务发现的模式,代替复杂且实现成本颇高的多服务发现模式。这种方案最大的好处是让envoy不被修改,安静且优雅地保持与社区发展一致。

​2、(​​非容器应用与K8s工作负载的服务网格化实践-3 基于ASM的POD和VM互访实践-HTTP协议篇-阿里云开发者社区 (aliyun.com)​​)

  • ​WorkloadEntry配置,让kubernetes容器内的POD可以找到VM中的应用;
  • sidecar配置,让VM中的应用可以找到POD。​

3、使用grpc代替http(GRPC协议已经是服务间通信的事实标准,是云原生和微服务生态中的"英语"和"普通话":为了实现高可用,非容器应用通常有一套服务注册和发现的机制。相对而言,kubernetes容器服务为POD提供了统一的基于dns的注册和发现机制。对于http协议的非容器应用的迁移,因为都是基于dns机制,切换成本交底。而对于使用非http协议的非容器应用,服务注册和发现这个技术点为迁移带来了额外的困难。网格化的服务链路都会经过sidecar,sidecar内部(envoy)实现了对grpc的负载均衡,grpc协议的上游服务通过长链接和下游服务各个节点保持连接,在不配置流量转移的情况下,上游请求会均匀地路由到下游各个节点。


举报

相关推荐

0 条评论