tencent cloud

フィードバック

Nginx Ingressベストプラクティス

最終更新日:2023-04-28 15:30:11

    概要

    Tencent Kubernetes Engine(TKE)はNginx-ingress拡張コンポーネントのインストールをサポートし、Nginx-ingressによってIngressトラフィックにアクセスすることができます。Nginx-ingressコンポーネントのその他の紹介については、Nginx-ingressの説明をご参照ください。ここではNginx-ingressコンポーネントの一般的なベストプラクティス操作ガイドをご紹介します。

    前提条件

    Nginx-ingress拡張コンポーネントをインストール済みであること。

    操作手順

    クラスターに複数のNginx Ingressトラフィックエントリーを公開する

    Nginx-ingress拡張コンポーネントのインストール後、kube-systemにはNginx-ingressのoperatorコンポーネントがあり、このコンポーネントによって複数のNginx Ingressインスタンスを作成することができ、各Nginx Ingressインスタンスはいずれも異なるIngressClassを使用し、かつ異なるCLBをトラフィックエントリーとして使用し、それによって異なるIngressを異なるトラフィックエントリーバインドすることを実現します。実際のニーズに応じて、クラスターに複数のNginx Ingressインスタンスを作成することができます。
    1. TKEコンソールにログインし、左側ナビゲーションバーからクラスターを選択します。
    2. クラスター管理ページで目標のクラスターIDをクリックし、クラスター詳細ページに進みます。
    3. 左側メニューバーのコンポーネント管理を選択し、コンポーネントリストページに進みます。
    4. インストールしたNginx-ingress拡張コンポーネントをクリックし、コンポーネントページに進みます。
    5. Nginx Ingressインスタンスの追加をクリックし、必要に応じてNginx Ingressインスタンスを設定し、各インスタンスに異なるIngressClass名を指定します。
    説明
    Nginx Ingressインスタンスを作成する詳細なステップについては、Nginx-ingressインスタンスのインストールをご参照ください。
    6. Ingressの作成時に具体的な IngressClassを指定してIngressを具体的なNginx Ingressインスタンスにバインドすることができます。コンソールまたはYAMLによってIngressを作成することができます。
    コンソールによるIngressの作成
    YAMLによるIngressの作成
    コンソールによるIngressの作成ステップを参照してIngressを作成します。このうち、
    IngressタイプNginxのCLBを選択します。
    Class:上記のステップで作成したNginx Ingressインスタンスを選択します。
    
    YAMLによるIngressの作成ステップを参照してIngressを作成し、ingressClassのannotation(kubernetes.io/ingress.class)を指定します。下図に示すとおりです。
    

    パフォーマンスの最適化

    LBパススルーPod

    クラスターのネットワークモードがGlobal Routerの場合、デフォルトではLBパススルーPodが有効化されていません。以下のステップに従ってLBパススルーPodを有効化することをおすすめします。
    1. クラスターのVPC-CNIを有効化する。
    2. Nginx Ingressインスタンスを作成する時、CLBを使用してPodに直接接続するにチェックを入れ、トラフィックがNodePortを回避してPodに直接接続できるようにし、それによってパフォーマンスを向上させることができます。下図に示すとおりです。
    
    説明
    Nginx Ingressインスタンスを作成する詳細なステップについては、Nginx-ingressインスタンスのインストールをご参照ください。

    LB帯域幅の上限の引き上げ

    LBはトラフィックエントリーとして、高い同時実行またはスループットを必要とする場合、Nginx Ingressインスタンスを作成する時に、実際のニーズに応じて帯域幅の上限を計画し、Nginx Ingressに高い帯域幅を割り当てます。下図に示すとおりです。
    
    アカウントが非帯域幅シフトタイプ(アカウントタイプの区別 というドキュメントを参照して区別することができます)の場合、帯域幅の上限はノード帯域幅で決まります。以下の状況に応じてノードの帯域幅の上限を調整することができます。
    LBパススルーPodを有効化した場合、LB総帯域幅はNginx IngressインスタンスのPod所在ノードの帯域幅の和です。専用の高パブリックネットワーク帯域幅のノードを計画してNginx Ingressインスタンスをデプロイすることをお勧めします(ノードプールのDaemonSetデプロイを指定します)。
    LBパススルーPodを使用しない場合、LB総帯域幅はすべてのノードのパブリックネットワーク帯域幅の和です。

    Nginx Ingressパラメータを最適化する

    Nginx IngressインスタンスはデフォルトでカーネルパラメータとNginx Ingress自身の設定に最適化されています。詳細については、Nginx Ingressの高同時実行性の実践をご参照ください。カスタマイズする必要がある場合、以下の紹介を参照して自分で変更してください。
    カーネルパラメータの変更
    Nginx Ingress自身の設定を変更する
    デプロイしたnginx-ingress-conntrollerのDaemonsetまたはDeployment(インスタンスデプロイオプションで決まります)を編集し、initContainers(Kubectlを使用して変更し、コンソールはkube-system下のリソースを変更することを禁止します)を変更します。下図に示すとおりです。
    
    Nginx設定で対応するインスタンスを選択し、YAMLの編集をクリックすると、Nginx IngressインスタンスのConfigMap設定を変更することができます。下図に示すとおりです。
    
    説明
    ConfigMap設定の詳細については公式ドキュメントをご参照ください。
    

    Nginx Ingressの監視可能性を向上させる

    ログを有効化する

    説明:
    ログはCLSに依存します。有効化したい場合は、Nginx-ingressのログ設定をご参照ください。
    Nginx Ingressインスタンスを作成した後、インスタンス詳細の運用保守機能エントリー内でインスタンスのログを有効化することができ、インスタンスの各項目の状態指標を確認し、トラブルシューティングを可能にします。下図に示すとおりです。
    
    注意:
    バージョンv0.49.3のインスタンス、ログ収集のインデックス設定ファイルはLogConfigという名前のCRDリソースオブジェクト内に存在し、このリソースオブジェクトを変更した後に、ログ収集機能をオフ/再びオンにした場合、この LogConfigのリソースオブジェクト設定はリセットされます。適時このリソースオブジェクト内のデータをバックアップしてください。Nginx Ingressインスタンス自体の削除およびNginx Ingressコンポーネントのアップグレードはこのインデックス設定ファイルに影響はありません。
    ログをカスタマイズする必要がある場合は、ドキュメントに従って設定してください。

    ログ検索とログダッシュボード

    ログの設定を有効化すると、Nginx Ingressリストページでインスタンス右側の操作その他をクリックし、ポップアップしたメニュー内で対応する機能を選択してログ検索またはログダッシュボードの確認を行うことができます。
    CLSに移動してアクセスログを確認するをクリックしてログサービスにジャンプし、検索分析でインスタンスに対応するログセットとトピックを選択すると、Nginx Ingressのアクセスとエラーログを確認することができます。
    アクセスログダッシュボードの確認をクリックすると、Nginx Ingressのログデータに基づいて統計情報を表示するダッシュボードに直接ジャンプすることができます。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)