デバッグ用の Kubernetes Ingress ログを取得する

Debaggu Yongno Kubernetes Ingress Roguwo Qu Desuru



Get Kubernetes ingress log for debugging が何であるか知っていますか?展開がますます大規模になるにつれて、ネットワークの問題を診断するのがますます難しくなっています。このチュートリアルでは、ingress-nginx kubectl プラグインを使用して、イングレス コントローラーを介したアプリケーションへのアクセスをデバッグする方法を示します。最初に、主要なトピックをよりよく理解するために重要な Kubernetes イングレスの定義を見てみましょう。

Kubernetes Ingress とは?

侵入の定義は、文字通りの意味での「侵入」です。







Kubernetes コミュニティでも、それは真実です。クラスターに入るトラフィックはイングレスと呼ばれ、クラスターを出るトラフィックはエグレスと呼ばれます。




ネイティブの Kubernetes リソースとして、イングレスはポッド、デプロイメントなどに匹敵します。イングレスを使用して DNS ルーティング構成に遅れずについていくことができます。イングレス コントローラーは、ルーティングを実行するものです。これは、etcd に格納されているイングレス オブジェクトから直接ルーティング ルールを読み取ることによって行われます。 Kubernetes イングレスがなければ、デプロイにサービス タイプのロード バランサーを含めることで、アプリケーションを外部に公開できます。



Kubernetes Ingress はどのように機能しますか?

明確にする必要がある重要なことが 2 つあります。これらは:





Kubernetes Ingress リソース

このリソースは、クラスター内のすべての DNS ルーティング ルールの維持を担当します。 DNS ルーティング ルールは、ネイティブ Kubernetes リソースである Kubernetes Ingress リソースで指定されます。つまり、外部 DNS トラフィックを内部の Kubernetes サービスの宛先にマッピングします。



Kubernetes イングレス コントローラー

イングレス リソースによって実装されている DNS ルールにアクセスすることで、Kubernetes イングレス コントローラー (Nginx/HAProxy など) がルーティングを担当します。

Ingress Controller の実装は、Kubernetes 固有のものではありません。その結果、これをクラスターのデフォルトにすることはできません。

イングレス ルールが機能するには、イングレス コントローラーを構成する必要があります。市場には、多くのオープンソースおよびビジネス イングレス コントローラーがあります。リバース Web プロキシ サーバーのクラスターのバージョンは、イングレス コントローラーとして機能します。この Kubernetes ベースのリバース プロキシ サーバーは、ロード バランサー サービスに公開されます。

イングレス コントローラーとは

Ingress Controller と呼ばれるクラスター実行プログラムは、Ingress リソースに従って HTTP ロード バランサーを構成します。ロード バランサーは、外部に展開されたハードウェアまたはクラウド ロード バランサーの場合もあれば、クラスター内でソフトウェアとして機能する場合もあります。さまざまなロード バランサーには、さまざまなイングレス コントローラーの実装が必要です。

NGINX を使用する場合、ロード バランサーとイングレス コントローラーは両方ともポッドにデプロイされます。

Ingress リソースが機能するには、クラスター内にアクティブな Ingress コントローラーが存在する必要があることに注意してください。

kube-controller-manager バイナリのコンポーネントとして機能する他のタイプのコントローラーとは対照的に、Ingress コントローラーはクラスターで自動的に起動されません。

前提条件:

Kubernetes クラスターが必要であり、クラスターに接続するように kubectl コマンドライン ツールを構成する必要があります。 kubectl コマンドライン ツールを使用して、Kubernetes クラスターにコマンドを発行できます。アプリケーションをデプロイしたり、クラスター リソースを検査および管理したり、kubectl を使用してログを表示したりできます。

現在クラスターがない場合は、Minikube を使用してクラスターを構築できます。 Minikube は、Kubernetes の学習と開発を簡単にすることを目的としたローカル Kubernetes です。

仮想マシン環境または Docker (または同様に互換性のある) コンテナー環境があれば、コマンド 1 つだけで Kubernetes にアクセスできます。それでは、段階的なプロセスを始めましょう。

ステップ 1: Minikube を起動する

minikube ツールを使用すると、Kubernetes をローカルで実行できます。 Minikube は、日常の開発作業や Kubernetes (Windows、Linux PC、macOS を含む) のテストのために、コンピューター上でオールインワンまたはマルチノードのローカル Kubernetes クラスターを実行します。 minikube を起動するコマンドは次のとおりです。

> ミニキューブを始める



ステップ 2: Ingress コントローラーを有効にする

このステップでは、NGINX Ingress コントローラーを有効にする方法を示します。次のコマンドを実行します。

> minikube addons 有効 進入



ステップ 3: NGINX Ingress Controller が機能しているかどうかを確認する

ここで、NGINX コントローラーがアクティブかどうかを確認することが重要です。次のコマンドを使用して、次のことを確認できます。

> kubectl でポッドを取得 -n イングレス-nginx



これらのポッドが正常に動作していることに最大 1 分間気付かない場合があることに注意してください。出力は前の画像に表示されています。

ステップ 4: Hello World アプリを作成する

ここでは、次のコマンドを使用してデプロイを作成します。

> kubectl create deployment web - 画像 =gcr.io / Google サンプル / こんにちはアプリ: 1.0



実行されるコマンドとその結果は、前の画像に添付されています。出力では、「hello-app」が表示されます。

ステップ 5: デプロイメントを公開する

次に、特定のデプロイメントを公開するコマンドを示します。コマンドは次のように記載されています。

> kubectl が展開を公開する Kalsoom - -タイプ =ノードポート - 港 = 8080



前の画像では、「service/kalsoom exposed」出力を確認できます。

ステップ 6: NodePort 経由でサービスにアクセスする

これは、NodePort を介して作成されたサービスにアクセスする方法を示す重要なステップです。この目的を達成するためのコマンドは、次のとおりです。

> minikube サービス Kalsoom --url



コマンドと出力は、前の画像に添付されています。

これで、Minikube の IP アドレスと NodePort により、サンプル アプリを簡単に表示できるようになりました。次の手順で、Ingress リソースを使用してアプリにアクセスできます。

ステップ 7: Ingress を作成する

ここでは、サービスにトラフィックを送信する Ingress を作成します。コマンドは次のように記載されています。

> kubectl 適用 -f https: /// k8s.io / / サービス / ネットワーキング / 例-ingress.yaml



ご覧のとおり、コマンドは正常に実行されます。

ステップ 8: IP アドレスを確認する

IPアドレスが設定されているかどうかを確認します。そのために、次の特定のコマンドを使用します。

> kubectl get ingress



出力の ADDRESS 列に IPv4 アドレスが表示されます。

結論

この記事では、NGINX Ingress Controller のロギングの概要を説明します。要約すると、NGINX のアクセス ログとエラー ログは、NGINX 構成を作成し、NGINX をリロードして適用するイングレス コントローラー プロセスからのログと共に、NGINX イングレス コントローラーによって利用可能になります。