Istioコンポーネントの詳細
6301 ワード
1.istioコンポーネント構成
以下はistio 1.1の公式アーキテクチャ図です.
Istioは複数のプラットフォームをサポートするが、それをKubernetesと組み合わせて使用すると、その優位性がより大きくなり、IstioはKubernetesプラットフォームに対するサポートも最も完備しており、本稿ではIstio+Kubernetesに基づいて展開する.
grafana,prometheus,kiali,jaegerなどのコンポーネントがインストールされている場合、完全な制御面コンポーネントには以下のpodが含まれます.
Service MeshのSidecarモードでは、データ面のユーザPodへのエージェントの注入が要求され、注入されたエージェントコンテナはサービスガバナンス分野の様々な「汚れ疲れ」を処理し、ユーザコンテナが業務ロジックに専念できるようにする.
上の図から分かるように、Istio制御面自体は複雑なマイクロサービスシステムであり、このシステムは複数のコンポーネントPodを含み、各コンポーネントはそれぞれの役割を果たし、単一のコンテナPodもあれば、複数のコンテナPodもあり、単一のプロセスコンテナもあれば、複数のプロセスコンテナもあり、各コンポーネントは異なるコマンドを呼び出し、各コンポーネントの間でRPCを通じて書く.データ面のユーザーサービスに対する管理制御を共同で完成する.
2.Istioソース、ミラー、コマンド
Isitoプロジェクトコードは主に以下の2つのgit倉庫から構成されています.
倉庫住所
言語
モジュール
https://github.com/istio/istio
Go
istio制御面を含むほとんどのコンポーネント:pilot,mixer,citadel,galley,sidecar-injectorなど、
https://github.com/istio/proxy
C++
istioが使用するエッジエージェントを含み、このエッジエージェントにはenvoyとmixer clientの2つの機能が含まれています.
2.1 istio/istio
https://github.com/istio/istio主なミラーとコマンド:
コンテナ名
ミラー名
スタートアップコマンド
ソースエントリ
Istio_init
istio/proxy_init
istio-iptables.sh
istio/tools/deb/istio-iptables.sh
istio-proxy
istio/proxyv2
pilot-agent
istio/pilot/cmd/pilot-agent
sidecar-injector-webhook
istio/sidecar_injector
sidecar-injector
istio/pilot/cmd/sidecar-injector
discovery
istio/pilot
pilot-discovery
istio/pilot/cmd/pilot-discovery
galley
istio/galley
galley
istio/galley/cmd/galley
mixer
istio/mixer
mixs
istio/mixer/cmd/mixs
citadel
istio/citadel
istio_ca
istio/security/cmd/istio_ca
また、2つのコマンドが上図で使用されていません.
コマンド#コマンド#
ソースエントリ
さぎょう
mixc
istio/mixer/cmd/mixc
Mixerサーバと対話するクライアント
node_agent
istio/security/cmd/node_agent
Nodeにセキュリティエージェントをインストールために使用する、これはMesh Expansionの特性で使用される、すなわちk 8 sとvmがオンである.
2.2 istio/proxy
https://github.com/istio/proxyこのプロジェクト自体はミラーを生成することはなく、istioのサイドカーコンテナミラー
istio proxyプロジェクトで使用するコンパイル方式はGoogle製のbazelであり、bazelはコンパイル中に第三者ライブラリを直接導入し、第三者ソースコードをロードすることができる.
このプロジェクトにはEnvoyソースコードへの参照が含まれており、これに基づいて拡張が行われている.これらの拡張はEnvoy filter(フィルタ)の形式で提供されている.このような目的は、サイドカーエージェントがMixerにポリシー実行決定を委託することであるため、istio proxyというプロジェクトには2つの機能モジュールがあることが理解できる. Envoy:Envoyに使用する全機能 mixer client:測定と遠隔測定に関するクライアント実現、Envoyに基づいて拡張し、RPCとMixer serverによって相互作用を行い、戦略管理制御と遠隔測定 を実現する.
次に、以上の各モジュール、コマンド、およびそれらの間の協力について探究する.
3.Istio Podの概要
3.1データ面ユーザーPod
データ面ユーザPod注入の内容は以下の通りである. initContainer に転送する. sidecar container
プライマリ・ポート: に渡される. なお、上記パラメータは、起動時に親プロセス
3.2 istio-sidecar-injector
単一容器を含む、
プロセスは
3.3 istio-galley
単一コンテナ
プロセスは 以上のポートは、k 8 sサービス
3.4 istio-pilot
pilotコンポーネントのコアPod、ドッキングプラットフォームの適合層、抽象サービス登録情報、流量制御モデルなど、統一的なAPIをカプセル化し、Envoy呼び出しの取得に供する.
次のコンテナが含まれます. sidecar container container プライマリ・リスニング・ポート: 15010:grpcによって提供されるxds取得インタフェース 15011:httpsによって提供されるxds取得インタフェース 8080:httpが提供するxdsによってインタフェースを取得し、v 1バージョンと互換性があり、またhttp readinessプローブ にある. 以上のポートはk 8 sサービス
3.5 istio-telemetryとistio-policy
mixerコンポーネントには2つのpod、istio-telemetry、istio-policyが含まれています.istio-telemetryはリモート測定機能、istio-policyはポリシー制御を担当しています.これらにはそれぞれ2つのコンテナが含まれています. sidecar container プライマリ・リスニング・ポート: 9091: grpc-mixer 15004: grpc-mixer-mtls 3.7 istio-citadel
安全と証明書管理を担当するPodは、単一コンテナ
起動コマンド 以上のポートは、k 8 sサービス
その後、各コンポーネントを逐一分析します.
以下はistio 1.1の公式アーキテクチャ図です.
Istioは複数のプラットフォームをサポートするが、それをKubernetesと組み合わせて使用すると、その優位性がより大きくなり、IstioはKubernetesプラットフォームに対するサポートも最も完備しており、本稿ではIstio+Kubernetesに基づいて展開する.
grafana,prometheus,kiali,jaegerなどのコンポーネントがインストールされている場合、完全な制御面コンポーネントには以下のpodが含まれます.
% kubectl -n istio-system get pod
NAME READY STATUS
grafana-5f54556df5-s4xr4 1/1 Running
istio-citadel-775c6cfd6b-8h5gt 1/1 Running
istio-galley-675d75c954-kjcsg 1/1 Running
istio-ingressgateway-6f7b477cdd-d8zpv 1/1 Running
istio-pilot-7dfdb48fd8-92xgt 2/2 Running
istio-policy-544967d75b-p6qkk 2/2 Running
istio-sidecar-injector-5f7894f54f-w7f9v 1/1 Running
istio-telemetry-777876dc5d-msclx 2/2 Running
istio-tracing-5fbc94c494-558fp 1/1 Running
kiali-7c6f4c9874-vzb4t 1/1 Running
prometheus-66b7689b97-w9glt 1/1 Running
Service MeshのSidecarモードでは、データ面のユーザPodへのエージェントの注入が要求され、注入されたエージェントコンテナはサービスガバナンス分野の様々な「汚れ疲れ」を処理し、ユーザコンテナが業務ロジックに専念できるようにする.
上の図から分かるように、Istio制御面自体は複雑なマイクロサービスシステムであり、このシステムは複数のコンポーネントPodを含み、各コンポーネントはそれぞれの役割を果たし、単一のコンテナPodもあれば、複数のコンテナPodもあり、単一のプロセスコンテナもあれば、複数のプロセスコンテナもあり、各コンポーネントは異なるコマンドを呼び出し、各コンポーネントの間でRPCを通じて書く.データ面のユーザーサービスに対する管理制御を共同で完成する.
2.Istioソース、ミラー、コマンド
Isitoプロジェクトコードは主に以下の2つのgit倉庫から構成されています.
倉庫住所
言語
モジュール
https://github.com/istio/istio
Go
istio制御面を含むほとんどのコンポーネント:pilot,mixer,citadel,galley,sidecar-injectorなど、
https://github.com/istio/proxy
C++
istioが使用するエッジエージェントを含み、このエッジエージェントにはenvoyとmixer clientの2つの機能が含まれています.
2.1 istio/istio
https://github.com/istio/istio主なミラーとコマンド:
コンテナ名
ミラー名
スタートアップコマンド
ソースエントリ
Istio_init
istio/proxy_init
istio-iptables.sh
istio/tools/deb/istio-iptables.sh
istio-proxy
istio/proxyv2
pilot-agent
istio/pilot/cmd/pilot-agent
sidecar-injector-webhook
istio/sidecar_injector
sidecar-injector
istio/pilot/cmd/sidecar-injector
discovery
istio/pilot
pilot-discovery
istio/pilot/cmd/pilot-discovery
galley
istio/galley
galley
istio/galley/cmd/galley
mixer
istio/mixer
mixs
istio/mixer/cmd/mixs
citadel
istio/citadel
istio_ca
istio/security/cmd/istio_ca
また、2つのコマンドが上図で使用されていません.
コマンド#コマンド#
ソースエントリ
さぎょう
mixc
istio/mixer/cmd/mixc
Mixerサーバと対話するクライアント
node_agent
istio/security/cmd/node_agent
Nodeにセキュリティエージェントをインストールために使用する、これはMesh Expansionの特性で使用される、すなわちk 8 sとvmがオンである.
2.2 istio/proxy
https://github.com/istio/proxyこのプロジェクト自体はミラーを生成することはなく、istioのサイドカーコンテナミラー
name = "Envoy"
にADDされるistio/proxyv2
のバイナリプログラムをコンパイルすることができる.istio proxyプロジェクトで使用するコンパイル方式はGoogle製のbazelであり、bazelはコンパイル中に第三者ライブラリを直接導入し、第三者ソースコードをロードすることができる.
このプロジェクトにはEnvoyソースコードへの参照が含まれており、これに基づいて拡張が行われている.これらの拡張はEnvoy filter(フィルタ)の形式で提供されている.このような目的は、サイドカーエージェントがMixerにポリシー実行決定を委託することであるため、istio proxyというプロジェクトには2つの機能モジュールがあることが理解できる.
次に、以上の各モジュール、コマンド、およびそれらの間の協力について探究する.
3.Istio Podの概要
3.1データ面ユーザーPod
データ面ユーザPod注入の内容は以下の通りである.
istio-init
:iptablesを構成することによってPod中のトラフィックをハイジャックしenvoy istio-proxy
:2つのプロセスを含み、親プロセスpliot-agentはenvoyを初期化し、管理し、子プロセスenvoyは原生envoyの機能を含むほか、mixer clientの論理を加えた.プライマリ・ポート:
--statusPort
status serverポート、デフォルトは0で、起動しないことを示し、istio起動時に通常15020 --proxyAdminPort
エージェント管理ポート、デフォルト1500pliot-agent
に渡すが、実際には上記ポートを傍受するプロセスはサブプロセスenvoyである.3.2 istio-sidecar-injector
単一容器を含む、
sidecar-injector-webhook
:httpサーバを起動し、kube apiサーバのAdmission Webhook要求を受け、ユーザpodにsidecar注入を行う.プロセスは
sidecar-injector
で、主なリスニングポート:--port
Webhookサービスポート、デフォルト443、k 8 sサービスistio-sidecar-injector
を通じて対外的にサービスを提供します.3.3 istio-galley
単一コンテナ
galley
を含む:istioにおける構成管理サービスを提供し、IstioのCRDリソースの正当性を検証する.プロセスは
galley server ......
で、主なリスニングポート:--server-address
galley gRPCアドレス、デフォルトはtcp://0.0.0.0:9901 --validation-port
httpsポート、crdの正当性を検証するサービスを提供するポート、デフォルト443.--monitoringPort
httpポート、self-monitoringポート、デフォルト15014 istio-galley
を介して対外的にサービスを提供する.3.4 istio-pilot
pilotコンポーネントのコアPod、ドッキングプラットフォームの適合層、抽象サービス登録情報、流量制御モデルなど、統一的なAPIをカプセル化し、Envoy呼び出しの取得に供する.
次のコンテナが含まれます.
istio-proxy
discovery
:プロセスpilot-discovery discovery ......
/ready
もこのポート--monitoringPort
http self-monitoringポート、デフォルト15014 istio-pilot
を通じて対外的にサービスを提供している.3.5 istio-telemetryとistio-policy
mixerコンポーネントには2つのpod、istio-telemetry、istio-policyが含まれています.istio-telemetryはリモート測定機能、istio-policyはポリシー制御を担当しています.これらにはそれぞれ2つのコンテナが含まれています.
istio-proxy
mixer
:プロセスmixs server ……
--monitoring-port
:http self-monitoringポート、デフォルト15014、livenessプローブ/version
安全と証明書管理を担当するPodは、単一コンテナ
citadel
を含む起動コマンド
/usr/local/bin/istio_ca --self-signed-ca ......
主なリスニングポート:--grpc-port
citadel grpcポート、デフォルト8060 --monitoring-port
:http self-monitoringポート、デフォルト15014、livenessプローブ/version
istio-citadel
を介して対外的にサービスを提供する.その後、各コンポーネントを逐一分析します.