Kubernetes gRPC负载均衡分析

  介绍

本篇内容主要讲解“Kubernetes gRPC负载均衡分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes gRPC负载均衡分析”吧!

安装环境依赖

<李>

docker-desktop祝辞=以下4.4.1

<李>

kubernetes祝辞=1.21.5

<李>

去祝辞=1.17

<李>

protobuf祝辞=3.17.3

<李>

istioctl祝辞=1.11.4

下载安装码头工人桌面,并启动内置的kubernetes集群。

#,安装,Gobrew  install 去#,安装,Protobufbrew  install  protobuf #,安装,Istiobrew  install  istioctl   kubectl  config  use-context  docker-desktop   istioctl  install  - y

项目地址

github.com/jxlwqq/grpc-lb

拉取代码:

git  clone  git@github.com: jxlwqq/grpc-lb.gitcd  grpc-lb

Makefile介绍

命令说明<代码>使init 安装protoc-gen-go和protoc-gen-grpc <代码>让protoc> 让docker-build 构建码头工人镜像<代码>让kube-deploy> 让kube-delete 删除服务<代码>让istio-inject 注入Istio边车

具体逻辑,请查看Makefile文件。

L4 vs地级负载均衡

所谓的四层就是基于IP +端口的负载均衡,而七层就是基于URL等应用层信息的负载均衡;Kubernetes内置的服务负载均衡基于iptables/ipv实现,仅支持L4。换句话说,服务支持HTTP/1.1协议,不支持HTTP/2协议。

而特使(Istio)则更为全能,支持被gRPC请求和响应的作为路由和负载均衡底层的所有HTTP/2功能。

项目架构

本项目分别测试服务和特使(Istio)对HTTP/RPC负载均衡的支持情况。

<李>

cmd/服务器/主要。:服务端,同时提供HTTP和RPC服务。响应的数据为服务端容器所在的豆荚名称,(基于下行API)。

<李>

cmd/client-http/主要。去:HTTP客户端,通过HTTP方式,循环调用服务端接口,并打印返回值。

<李>

cmd/client-grpc/主要。:gRPC客户端,通过RPC方式,循环远程调用服务端方法,并打印返回值。

测试原理

服务端服务器在Kubernetes集群中以部署的方式部署3个副本,3个副本的豆荚名称各不相同,而client-http和client-grpc则会每秒调用一次服务端,并打印返回值。如果返回值中,三个吊舱的名称都存在,则表明正在进行有效的负载均衡,否则,则表明未进行有效的负载均衡。

测试服务

构建镜像:

make  docker-build  #,构建镜像(构建好的镜像,不,push 到远程仓库中)

查看镜像:

docker  images  ls

返回:

REPOSITORY ,,,,,,,,,,, TAG ,,,,,, IMAGE  ID ,,,,,, CREATED ,,,,,,,,,的大小   grpc-lb/client-grpc ,, latest ,,, 95 d32ead8d9b ,, 12, seconds  ago , 16.6 mb   grpc-lb/client-http ,, latest ,,, dbf0341206f6 ,, 22, seconds  ago , 11.5 mb   grpc-lb/server ,,,,,,, latest ,,, 1 ef346785b2a ,, 29日,seconds  ago ,, 18.2 mb

部署到集群中:

make  kube-deploy , #,在集群中部署服务

查看豆荚:

kubectl  get 豆荚

返回:

NAME ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, READY  STATUS ,,, RESTARTS ,年龄   client-grpc-6c565594f4-tdf75 ,, 1/1 ,,,, Running ,, 0,,,,,,,,,, 2 m48s   client-http-55d95c744d-f7nx4 ,, 1/1 ,,,, Running ,, 0,,,,,,,,,, 2 m49   server-7c4bfd74d-29c69 ,,,,,,,, 1/1 ,,,, Running ,, 0,,,,,,,,,, 2 m51   server-7c4bfd74d-4btvw ,,,,,,,, 1/1 ,,,, Running ,, 0,,,,,,,,,, 2 m51   null   null   null   null   null   null   null

Kubernetes gRPC负载均衡分析