k 8 s~直接配置istio

3760 ワード

kubectlではistioをk 8 sに簡単に導入できますが、もちろんhelmを使ってもいいですが、helmバージョンとistioが衝突することがあるので、本稿では主にkubectlを使って導入します
istioの簡単ないくつかの概念
Service Meshでは、Data PlaneとControl Planeの2つの概念を理解する必要があります.
  • Data Plane:グリッド内のサービス間の通信を処理し、サービス発見、負荷均衡、流量管理、健康診断などの機能を完成する.
  • Control Plane:ポリシーを適用し、指標を収集するためにMixersを構成しながら、ルーティングトラフィックの管理と構成を行う役割を果たします.

  • Istioコアコンポーネント
  • Envoy:Istioは、Envoy調停サービスグリッド内のすべてのサービスのインバウンドおよびアウトバウンドトラフィックを使用します.データプレーンに属します.
  • Mixer:サービス・グリッド上でアクセス制御および使用ポリシーを実行し、Envoyおよびその他のサービスから自動的に監視されるデータを収集します.
  • Pilot:Envoy sidecarにサービス発見機能を提供し、スマートルーティング(A/Bテスト、カナリア導入など)と弾力性(タイムアウト、再試行、ヒューズなど)に流量管理機能を提供する.コントロールプレーンに属します.
  • Citadel:アクセス制御とユーザー認証機能を提供します.

  • Istioビジュアル化管理コンポーネント
  • Vistio:アプリケーションとクラスタ間のネットワークトラフィックをほぼリアルタイムで監視するために使用されます.
  • Kiali:サービス・グリッド・トポロジの可視化、ブレーカ、リクエスト率などの機能を提供します.KialiにはJaeger Tracingも含まれており、開梱用の分散追跡機能を提供することができます.
  • jaeger:istioマイクロサービス呼び出しチェーン関係、およびマイクロサービス動作状態モニタリングを示すために使用されます.本番環境では、Elasticsearchまたはcassandraを使用してjaegerデータを永続化して格納する必要があります.

  • istioインストールパッケージのダウンロード
    curl -L https://git.io/getLatestIstio | sh -
    
    namespaceの作成
    kubectl create namespace istio-system
    
    CRDリソースのインストール
    for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
    
    結果を表示
    kubectl get crds | grep 'istio.io' | wc -l
    
    コアコンポーネントの配備
    kubectl apply -f install/kubernetes/istio-demo.yaml
    
    このプロセスでは、コンテナを起動する前にミラーをダウンロードするのに時間がかかります.
    [root@i-pcwovafu istio-1.5.1]# kubectl -n istio-system get pods
    NAME                                      READY   STATUS              RESTARTS   AGE
    grafana-7797c87688-9nwd9                  0/1     ContainerCreating   0          11m
    istio-citadel-f5974cc7d-tqglf             0/1     ContainerCreating   0          11m
    istio-egressgateway-5757854ddd-x6cq9      0/1     Running             0          11m
    istio-galley-6799449b85-tnlpm             1/1     Running             0          11m
    istio-grafana-post-install-1.5.1-h7ph2    0/1     Completed           0          11m
    istio-ingressgateway-7dcf45496f-2cwcm     0/1     Running             0          11m
    istio-pilot-7897f5dc-j9jzr                0/2     ContainerCreating   0          11m
    istio-policy-5b579b8889-gs4j9             0/2     ContainerCreating   0          11m
    istio-security-post-install-1.5.1-xlx2n   0/1     Completed           0          11m
    istio-sidecar-injector-5d97f8cb99-rh22f   0/1     ContainerCreating   0          11m
    istio-telemetry-d79f68d7d-cnpn2           0/2     ContainerCreating   0          11m
    istio-tracing-797d4c8d48-fmrlh            1/1     Running             0          11m
    kiali-74fdc898b9-d5w5z                    0/1     ImagePullBackOff    0          11m
    prometheus-c8fdbd64f-fh7vs                0/1     ContainerCreating   0          11m
    
    これらのpodが起動するのを待つ必要があります.あなたのistioは起動します.
    istioコアコンポーネントの説明
  • grafana-*//モニタデータ可視化ツール
  • istio-citadel-*//証明書管理
  • istio-egressgateway-*//出口流量ゲートウェイ
  • istio-galley-*//構成チェック
  • istio-ingressgateway-*//入口流量ゲートウェイ
  • istio-pilot-*//Envoyサービス発見、外部化構成
  • istio-policy-*//Mixerミキサーポリシーチェック
  • istio-sidecar-injector-*//辺車注入
  • istio-telemetry-*//Mixerミキサー指標収集
  • kiali-*//service Mesh可視化ツール
  • prometheus-*//モニタアラーム
  • 指定したnamespaceにistioを注入するsidecar機能
    # kubectl label namespace default istio-injection=enable
    
    istioへの注入を禁止するsidecar機能
    # kubectl label namespace default istio-injection-
    
    istioのsidecarの情報を表示
    kubectl get namespace -L istio-injection
    
    今日は主にこちらをご紹介しますが、次回は具体的なistioのコンポーネントの使用についてお話しします.