Kubernetes gRPC ロード バランシングの分析 (L4 と L7)
この記事は、Kubernetes での gRPC ロード バランシングを紹介する go language チュートリアル コラムで紹介されています。
#インストール環境の依存関係
- docker-desktop >= 4.1.1
- kubernetes >= 1.21.5
- go >= 1.17
- protobuf >= 3.17.3
- istioctl >= 1.11.4
# 安装 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
Makefile の概要
説明 | |
---|---|
protoc-gen-go と protoc-gen-grpc をインストールします |
|
## 、*_pb.go と *_grpc.pb.go を生成します
|
#make docker-build |
| make kube-deploy|
##make kube-delete | サービスの削除 |
make istio-inject |
Istio サイドカーの注入 |
特定のロジックについては、Makefile を確認してください。 |
プロジェクト アーキテクチャこのプロジェクトでは、HTTP/RPC ロード バランシングのための Service と Envoy (Istio) のサポートをそれぞれテストします。
cmd/server/main.go: HTTP サービスと RPC サービスの両方を提供するサーバー。応答データは、サーバー コンテナーが配置されているポッド名です (Downward API に基づく)。 cmd/client-http/main.go: HTTP クライアントは、HTTP モードを通じてサーバー インターフェイスを周期的に呼び出し、戻り値を出力します。
cmd/client-grpc/main.go: gRPC クライアントは、RPC を通じてループ内でサーバー メソッドをリモートで呼び出し、戻り値を出力します。
- テスト原則
- サーバーは、デプロイメントの形式で Kubernetes クラスターに 3 つのコピーをデプロイします。3 つのコピーのポッド名は異なり、クライアントは-http と client-grpc は 1 秒ごとにサーバーを呼び出し、戻り値を出力します。戻り値に 3 つの 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
ログイン後にコピー
Deployment クラスターに移動します:
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
ログイン後にコピーログイン後にコピー
リターン:
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 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









gRPC を使用してファイルのアップロードを実装するにはどうすればよいですか?リクエストおよびレスポンスメッセージを含むサポートサービス定義を作成します。クライアントでは、アップロードされるファイルが開かれてチャンクに分割され、gRPC ストリーム経由でサーバーにストリーミングされます。サーバー側では、ファイル チャンクが受信され、ファイルに保存されます。ファイルのアップロードが完了すると、サーバーはアップロードが成功したかどうかを示す応答を送信します。

gRPC を使用して Golang で同時データ送信を実装するためのベスト プラクティス はじめに: クラウド コンピューティングとビッグ データ テクノロジの発展に伴い、データ送信の需要はますます緊急になっています。 Google のオープンソースの高性能リモート プロシージャ コール フレームワークである gRPC は、その効率性、柔軟性、および言語間の機能により、多くの開発者の最初の選択肢となっています。この記事では、プロジェクト構造の構築、接続プールの使用、エラー処理など、gRPC を使用して Golang で同時データ送信を実装する方法のベスト プラクティスを紹介します。 1. 初期段階でのエンジニアリング体制の構築

インターネットの規模が拡大し、ユーザーのニーズが高まるにつれ、マイクロサービスアーキテクチャの利点がますます注目されています。その後、高可用性、高パフォーマンス、高スケーラビリティなどのニーズをより適切に満たすことができる、コンテナ化されたマイクロサービス アーキテクチャが特に重要になってきました。この傾向の下、go-zero と Kubernetes が最も人気のあるコンテナ化されたマイクロサービス フレームワークになりました。この記事では、go-zero フレームワークと Kubernetes コンテナ オーケストレーション ツールを使用して高可用性、高パフォーマンスを構築する方法を紹介します。

インターネットの急速な発展に伴い、ますます多くの企業がアプリケーションをクラウド プラットフォームに移行し始めています。 Docker と Kubernetes は、クラウド プラットフォームでのアプリケーションの展開と管理のための 2 つの非常に人気のある強力なツールになりました。 BeegoはGolangで開発されたWebフレームワークで、HTTPルーティング、MVC階層化、ロギング、構成管理、セッション管理などの豊富な機能を提供します。この記事では、Docker と Kub の使用方法について説明します。

gRPC を使用して Golang でデータ暗号化を実装するためのベスト プラクティス はじめに: 情報セキュリティが高く評価されている今日の時代では、データのセキュリティを保護することがますます重要になっています。分散システムでは、ネットワーク伝送時のデータのセキュリティをどのように確保するかが重要な課題となります。 gRPC は、データのシリアル化と送信に ProtocolBuffers を使用することでより高度なデータ セキュリティを提供し、TLS/SSL 暗号化送信をサポートする、高性能の言語間リモート プロシージャ コール フレームワークです。

最新のネットワーク アプリケーションでは、高い同時実行性の処理は非常に重要な問題です。このプロセスでは、gRPC を使用すると、リモート プロシージャ コール (RPC) を通じて効率的なクライアント サーバー通信を実現する優れた方法となります。 PHP アプリケーションでは、gRPC を使用して、同時多発 API リクエストを処理できます。この記事では、gRPC を使用して PHP で同時実行性の高い API を処理する方法を紹介します。 gRPC とは何ですか? gRPC は、Google によって開発された高性能 RPC フレームワークです。それ

React と Kubernetes を使用して信頼性の高いコンテナ化アプリケーションを構築する方法 クラウド ネイティブ テクノロジの急速な発展に伴い、コンテナ化アプリケーションは今日のソフトウェア開発における注目のトレンドになっています。人気のあるフロントエンド フレームワークである React は、その柔軟性と効率性により、多くの開発者にとって最初の選択肢となっています。この記事では、React と Kubernetes を使用して信頼性の高いコンテナ化アプリケーションを構築する方法を紹介し、いくつかの具体的なコード例を示します。 React アプリケーションの作成 まず、基本的な React を作成する必要があります。

Java を使用して Spring Cloud Kubernetes に基づいたコンテナ オーケストレーション アプリケーションを開発する方法 コンテナ テクノロジの開発と広範な適用に伴い、コンテナ オーケストレーション ツールは開発者にとって不可欠な部分になりました。 Kubernetes は最も人気のあるコンテナ オーケストレーション ツールの 1 つとして業界標準になっています。この状況において、Spring Cloud と Kubernetes を組み合わせることで、コンテナ オーケストレーションに基づいたアプリケーションを簡単に開発できます。この記事で詳しく紹介します
