이 기사는 Kubernetes에서 gRPC 로드 밸런싱을 소개하는 go 언어 튜토리얼 칼럼에서 소개되었습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
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 | protoc-gen-go 및 protoc-gen-grpc 설치
proto 파일을 기반으로 *_pb.go 및 *_grpc.pb를 생성합니다.
make docker-build
Docker 이미지 빌드
make kube-deploy
클러스터에 서비스 배포make istio-inject
cmd/server/main.go: HTTP 및 RPC 서비스를 모두 제공하는 서버입니다. 응답 데이터는 서버 컨테이너가 위치한 Pod 이름입니다(Downward API 기준).
cmd/client-http/main.go: HTTP 클라이언트는 HTTP 메서드를 통해 주기적으로 서버 인터페이스를 호출하고 반환 값을 인쇄합니다.
cmd/client-grpc/main.go: gRPC 클라이언트는 RPC를 통해 루프에서 서버 메서드를 원격으로 호출하고 반환 값을 인쇄합니다.
테스트 원칙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 # 在集群中部署服务
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
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
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
make istio-inject # 注入 Istio 边车
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
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
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
위 내용은 Kubernetes gRPC 로드 밸런싱 분석(L4 대 L7)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!