【クラウドネイティブ | istioをゼロから学ぶ】 3. istioのコンポーネント詳細解説

ここに画像の説明を挿入

istio コンポーネントの詳細な説明

Istio サービスのコンポーネントはたくさんあります.上記のプロセスから、各コンポーネントがどのように連携するかを大まかに見ることができます.各コンポーネントの具体的な目的と機能を以下に説明します.

[root@k8smaster ~]# kubectl get svc -n istio-system | awk '{print $1}' 
istio-egressgateway 
istio-ingressgateway 
istiod

パイロット

Pilot は Istio の主要な制御コンポーネントであり、クライアントを制御するコマンドを発行します。システム全体で、Pilot は次のタスクを実行します。

1. Kubernetes または他のプラットフォームのレジストリからサービス情報を取得して、サービス検出プロセスを完了します。

2. Istio のさまざまな制御構成を読み取り、変換後、実装のためにデータ プレーンに送信します。

ここに画像の説明を挿入

Pilot は設定内容をデータプレーン上の Envoy に送信し、Envoy は Pilot の指示に従って、ルーティング、サービス、モニタリング、クラスタリングなどの定義情報をローカル設定に変換し、制御動作の実装を完了します。

1) パイロットは Envoy にサービス ディスカバリを提供します

2) トラフィック管理機能 (A/B テスト、カナリア リリースなど) と復元機能 (タイムアウト、再試行、サーキット ブレーカーなど) を提供する。

3) envoy 構成を生成する

4) 特使を開始

5) envoy の実行ステータスを監視および管理します。たとえば、パイロット エージェントは、envoy が失敗したときに envoy を再起動したり、envoy の構成が変更された後に envoy をリロードしたりします。

特使

エンボイとは?

Envoy は、C++ で開発された高性能プロキシであり、サービス メッシュ内のすべてのサービスのインバウンドおよびアウトバウンド トラフィックを調整します。

Envoy には、次のような多くの強力な機能があります。

動的サービス検出

負荷分散

TLS ターミネーション

HTTP/2 および gRPC プロキシ

ブレーカ

健康診断

トラフィック分割

グレースケールリリース

故障注入

Envoy と Istio のサービスとの関係は?

Envoy と Service A は同じ Pod に属し、ネットワークと名前空間を共有します。Envoy は Pod A の内外のトラフィックをプロキシし、外部リクエストのルールに従って Service A に作用します。

パイロットエージェントとは?

Envoy は k8s と直接対話しません. Pilot-agent によって管理される Pilot-agent プロセスは、K8S API サーバーの構成情報に従って Envoy 構成ファイルを生成し、Envoy プロセスの開始を担当します。
Envoy は Pilot-agent プロセスによって起動されます. 起動後, Envoy は Pilot-agent によって生成された構成ファイルを読み取り, ファイルの構成に従って Pilot のアドレスを取得し, から動的構成情報を取得します.ルーティング (ルート)、リスナー (リスナー)、サービス クラスター (クラスター)、およびサービス エンドポイント (エンドポイント) を含む、データ プレーンを介したパイロット。

シタデル

システム上の異なるサービス間の TLS 通信の処理を担当します。Citadel は認証局 (CA) として機能し、データ プレーンで安全な mTLS 通信を可能にする証明書を生成します。

Citadel は Istio のコア セキュリティ コンポーネントであり、キーと証明書の自動生成、配布、ローテーション、失効を提供します。Citadel は Kube-apiserver を監視し、Secret の形式で各サービスの証明書キーを生成し、Pod の作成時にボリュームを Pod にマウントします. プロキシ コンテナーはこれらのファイルを使用してサービス ID 認証を行い、両端をプロキシします.このサービスは、相互 TLS 認証、チャネル暗号化、アクセス承認などのセキュリティ機能を実装しています。図に示すように、フロントエンド サービスは HTTP を使用して予測サービスにアクセスし、構成によって認証機能をサービスに追加できます. 両側の Envoy は相互認証用の TLS チャネルを確立し、相互認証用の HTTPS を有効にします.サービス間。

ここに画像の説明を挿入

ギャレー

Galley は、istio の構成の検証、抽出、処理、および配布のコンポーネントです。Galley は、構成管理を提供するサービスです。実装の原則は、k8s が提供する ValidatingWebhook を通じて構成を検証することです。

Galley は、Istio が理解できる共通の形式に異種の構成データを変換できるため、Istio が Kubernetes 以外の環境と連携できるようにします。

イングレスゲートウェイ

Ingressgateway は入り口のゲートウェイであり、グリッド外からグリッド内のサービスへのアクセスはこのゲートウェイを介して行われます。istio-ingressgateway is a Loadbalancer-type Service. 1 つまたは 2 つのポートしか持たない他のサービス コンポーネントとは異なり、istio-ingressgateway は、グリッド内のサービスの外部アクセス ポートである一連のポートを開きます。下の図に示すように、グリッド イングレス ゲートウェイ istio-ingressgateway の負荷は、グリッド内のサイドカーの実行プロセスと同じです. また、パイロットからトラフィック ルールを受け取り、グリッド内の他のサイドカーと同様にそれらを実行します.

サイドカーインジェクター

Sidecar-injector は、自動インジェクションを担当するコンポーネントです。自動インジェクションが有効である限り、Pod の作成時に、Istio-sidecar-injector が自動的に呼び出されて、Sidecar コンテナが Pod にインジェクトされます。
Kubernetes 環境では、自動インジェクション構成に従って、Kube-apiserver が Pod によって作成されたリクエストをインターセプトすると、自動インジェクション サービス istio-sidecar-injector を呼び出して、サイドカー コンテナーの記述を生成し、定義に挿入します。元の Pod の. 作成された Pod には、ビジネス コンテナーだけでなく、Sidecar コンテナーも含まれます. この注入プロセスは、ユーザーに対して透過的です.

その他のコンポーネント

「istio」というプレフィックスが付いた Istio 独自のコンポーネントに加えて、Jaeger-agent、Jaeger-collector、Jaeger-query、Kiali、Prometheus、Grafana、Tracing、Zipkin などのコンポーネントがクラスターにインストールされるのが一般的です.これらのコンポーネントは Istio 呼び出しチェーンを提供します.監視およびその他の機能、完全なサービスの監視および管理機能を完了するためにインストールすることを選択できます。

最後に書く

作成するのは簡単ではありません。コンテンツが役立つと思われる場合は、3 つのリンクをフォローしてサポートしてください。間違いがあればコメントで指摘していただければ修正します!

シリーズ更新中: istioをゼロから学ぶ

ご覧いただきありがとうございます。記事は個人的な理解が混在しています。エラーがある場合は、私に連絡して指摘してください〜

おすすめ

転載: blog.csdn.net/qq_45400861/article/details/127480728