本文由go语言教程栏目给大家介绍Kubernetes中的gRPC负载均衡 ,希望对需要的朋友有所帮助!
创新互联是专业的中宁网站建设公司,中宁接单;提供网站制作、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行中宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
下载安装 Docker Desktop ,并启动内置的 Kubernetes 集群。
# 安装 Gobrew install go# 安装 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
命令 | 说明 |
---|---|
make init |
安装 protoc-gen-go 和 protoc-gen-grpc |
make protoc |
基于 proto 文件,生成 *_pb.go 和 *_grpc.pb.go |
make docker-build |
构建 docker 镜像 |
make kube-deploy |
在集群中部署服务 |
make kube-delete |
删除服务 |
make istio-inject |
注入 Istio 边车 |
具体逻辑,请查看 Makefile 文件。
所谓的四层就是基于 IP + 端口的负载均衡,而七层就是基于 URL 等应用层信息的负载均衡; Kubernetes 内置的 Service 负载均衡基于 iptables/ipvs 实现,仅支持 L4。换句话说, Service 支持 HTTP/1.1 协议,不支持 HTTP/2 协议。
而 Envoy(Istio) 则更为全能,支持被 gRPC 请求和响应的作为路由和负载均衡底层的所有 HTTP/2 功能。
本项目分别测试 Service 和 Envoy(Istio) 对 HTTP/RPC 负载均衡的支持情况。
服务端 server 在 Kubernetes 集群中以 Deployment 的方式部署 3 个副本,3 个副本的 Pod 名称各不相同,而 client-http 和 client-grpc 则会每秒调用一次服务端,并打印返回值。如果返回值中,三个 Pod 的名称都存在,则表明正在进行有效的负载均衡,否则,则表明未进行有效的负载均衡。
构建镜像:
make docker-build # 构建镜像(构建好的镜像,不 push 到远程仓库中)
查看镜像:
docker images ls
返回:
REPOSITORY TAG IMAGE ID CREATED SIZE grpc-lb/client-grpc latest 95d32ead8d9b 12 seconds ago 16.6MB grpc-lb/client-http latest dbf0341206f6 22 seconds ago 11.5MB grpc-lb/server latest 1ef346785b2a 29 seconds ago 18.2MB
部署到集群中:
make kube-deploy # 在集群中部署服务
查看 Pod:
kubectl get pods
返回:
NAME READY STATUS RESTARTS AGE client-grpc-6c565594f4-tdf75 1/1 Running 0 2m48s client-http-55d95c744d-f7nx4 1/1 Running 0 2m49s server-7c4bfd74d-29c69 1/1 Running 0 2m51s server-7c4bfd74d-4btvw 1/1 Running 0 2m51s server-7c4bfd74d-fk8zf 1/1 Running 0 2m51s
查看 client-http Pod 的日志:
export CLIENT_HTTP_POD=$(kubectl get pod -l app=client-http -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_HTTP_POD}"
返回:
#1: server-7c4bfd74d-4btvw#2: server-7c4bfd74d-4btvw#3: server-7c4bfd74d-29c69#4: server-7c4bfd74d-fk8zf#5: server-7c4bfd74d-fk8zf#6: server-7c4bfd74d-29c69#7: server-7c4bfd74d-fk8zf#8: server-7c4bfd74d-4btvw#9: server-7c4bfd74d-fk8zf
查看 client-grpc Pod 的日志:
export CLIENT_GRPC_POD=$(kubectl get pod -l app=client-grpc -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_GRPC_POD}"
返回:
#1: server-7c4bfd74d-fk8zf#2: server-7c4bfd74d-fk8zf#3: server-7c4bfd74d-fk8zf#4: server-7c4bfd74d-fk8zf#5: server-7c4bfd74d-fk8zf#6: server-7c4bfd74d-fk8zf#7: server-7c4bfd74d-fk8zf#8: server-7c4bfd74d-fk8zf#9: server-7c4bfd74d-fk8zf
可以看出,HTTP 请求在进行有效负载,而 RPC 请求在进行无效负载。
我们在集群中已经部署了一个 Istio,但是没有设置自动注入的命令空间,所以我们在这里进行手动注入。
手动注入:
make istio-inject # 注入 Istio 边车
查看 Pod:
kubectl get pods
返回:
NAME READY STATUS RESTARTS AGE client-grpc-7864f57779-f6blx 2/2 Running 0 17s client-http-f8964854c-jclkd 2/2 Running 0 21s server-7846bd6bb4-bcfws 2/2 Running 0 27s server-7846bd6bb4-fv29s 2/2 Running 0 40s server-7846bd6bb4-hzqj6 2/2 Running 0 34s
查看 client-http Pod 的日志:
export CLIENT_HTTP_POD=$(kubectl get pod -l app=client-http -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_HTTP_POD}"
返回:
#1: server-7846bd6bb4-hzqj6#2: server-7846bd6bb4-fv29s#3: server-7846bd6bb4-hzqj6#4: server-7846bd6bb4-hzqj6#5: server-7846bd6bb4-hzqj6#6: server-7846bd6bb4-hzqj6#7: server-7846bd6bb4-hzqj6#8: server-7846bd6bb4-bcfws#9: server-7846bd6bb4-fv29s
查看 client-grpc Pod 的日志:
export CLIENT_GRPC_POD=$(kubectl get pod -l app=client-grpc -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_GRPC_POD}"
返回:
#1: server-7846bd6bb4-fv29s#2: server-7846bd6bb4-hzqj6#3: server-7846bd6bb4-fv29s#4: server-7846bd6bb4-bcfws#5: server-7846bd6bb4-fv29s#6: server-7846bd6bb4-hzqj6#7: server-7846bd6bb4-fv29s#8: server-7846bd6bb4-bcfws#9: server-7846bd6bb4-fv29s
make kube-delete istioctl experimental uninstall --purge
当前题目:分析KubernetesgRPC负载均衡(L4vsL7)
网页路径:http://www.mswzjz.cn/qtweb/news16/509616.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能