1. Ingress の紹介Ingress は、外部リクエストをクラスター内のサービスに送信する Kubernetes のメカニズムです。サービスをクラスター外部の URL にマッピングすることで、サービスの外部アクセスが可能になります。 Ingress は、トラフィック負荷分散やドメイン名ベースの仮想ホスティングなどの機能を提供しながら、外部 URL 経由でアクセスできるようにクラスター内のサービスを構成することをサポートします。 簡単に言えば、Ingress は、Nginx 構成を手動で変更し、ドメイン名とサービスのマッピングを Ingress オブジェクトに構成するという面倒な手順を抽象化します。 YAML ファイルを使用して Ingress オブジェクトを作成および更新することで、Nginx 構成ファイルを手動で操作する必要がなくなり、ドメイン名とサービスの関係をより便利な方法で管理できるようになります。 しかし、これによって「Nginx はこれらの変更をどのように処理すればよいのか」という疑問が生じます。ここで Ingress Controller が登場し、具体的には Nginx がこれをどのように処理するかという問題を解決します。 Ingress Controller は Kubernetes API と対話して、クラスター内の Ingress ルールの変更をリアルタイムで検出します。変更があると、Ingress コントローラーはこれらのルールを読み取り、独自のテンプレートに基づいて対応する Nginx 構成を生成します。次に、この構成を Nginx Pod に書き込み、最後に Nginx のリロードをトリガーして、構成が有効になるようにします。 Ingress と Ingress Controller の連携により、外部アクセスの管理がより柔軟かつ便利になり、Nginx 構成を手動で変更する手間がなくなり、サービスとドメイン名のマッピング関係に集中できるようになり、Kubernetes クラスターの保守性が向上しました。 1. Ingress Controller の概要Ingress Controller は、7 層の負荷分散スケジューラです。これはクライアント要求の最初のストップとして機能し、すべての外部要求を受信して処理します。この 7 層の負荷分散スケジューラの動作により、リクエストはリバース プロキシを通過し、最終的にバックエンド Pod にルーティングされます。一般的な 7 層ロード バランサーには、nginx、traefik などがあります。よく知られている nginx を例にとると、リクエストが nginx に到達すると、nginx はアップストリームを通じてバックエンドの Pod アプリケーションへのリバース プロキシを構成します。 イングレス コントローラ ただし、バックエンド Pod の IP アドレスは動的に変更されます。この問題を解決するために、サービスを導入しました。このサービスは実際のサービスではありませんが、バックエンドのポッドをグループ化するために使用されます。したがって、アップストリームを構成するときは、バックエンド Pod の特定の IP アドレスを気にせずに、サービスのアドレスを入力するだけで済みます。 この設計により、Ingress コントローラーはバックエンド ポッドの変更を柔軟に処理し、リクエストがクラスター内のサービスに正しくルーティングされることを保証できます。このパターンにより、ポッドの IP アドレスが絶えず変更されることで発生する問題を心配することなく、バックエンド サービスの変更をより簡単に管理できるようになります。 2. イングレスリソース最小限の Ingress リソースの例: Ingress では、apiVersion、kind、metadata、spec フィールドを指定する必要があります。 Ingressオブジェクトの名前は有効なDNSサブドメイン名である必要があります[1]。 3. Ingress Controller プロキシ k8s 内部アプリケーションプロセス
Ingress の要件を満たすには、Ingress コントローラが必要です。 Ingress リソースを作成しただけでは効果はありません。 イングレス (1)ingress-nginxをデプロイする ここでのテストには killercoda プラットフォームも使用されます。プラットフォームは、K8S 環境の最新バージョン V1.29.0 を展開します。 この環境では Ingress はデプロイされていません。以下では、ingress-nginx[2]のデプロイメントを例に挙げます。公式の ingress-nginx を調べると、V1.29.0 は Ingress-NGINX の V1.10.0 または v1.9.6 に対応していることがわかります。次のように: Ingress-NGINX バージョン リスト 次のコマンドを実行して、Ingress-NGINX V1.10.0 をデプロイします。 上記のコマンドを実行すると、次の結果が出力されます。 デプロイメントのステータスを表示するには、次のコマンドを使用します。 (2)バックエンドTomcatサービスのデプロイ Tomcat サービスをデプロイして Ingress HTTP プロキシ k8s 内部サイトをテストし、次のリソース リストを記述します。 ポッドが正常にデプロイされているかどうかを確認します。 (3)イングレスルールを書く
ingressClassName: この値は、kubectl get ingressclasses を通じて取得できます。 ingress-myapp の詳細情報を表示します。 次に示すように、ingress-nginx がどのノードにデプロイされているかを確認します。 上図から、ingress-nginx が node1 にデプロイされ、SVC メソッドが LoadBalancer を通じてデプロイされていることがわかります。このバックエンド Tomcat サービスにアクセスする場合は、ドメイン名を解決する必要があります。次のように: 通常のアクセスは次のとおりです。 4. CKAの実際の質問(1)実際のテスト問題のスクリーンショット (2)中国の分析 k8s クラスター環境を切り替えます: kubectl config use-context k8s タスク: 次のように新しい nginx lngress リソースを作成します。 名前: pong 名前空間: ing-internal サービスポート 5678 を使用してパス /hi のサービス hi を公開します。 次のコマンドを使用して、hi サービスが利用可能かどうかを確認できます。curl -kL/hi は hi を返します。 (3)公式参考資料 イングレス[3] (4)質問を解いて答える k8s クラスター環境を切り替えます。 pong.yaml というファイルを作成します。リソースの内容は次のとおりです。
リソースリストを送信: curl -kL<INTERNAL_IP>/hi を実行して、hi が返されるかどうかを確認します。 参考文献:
|
<<: 知らないかもしれないKubernetesのヒント13選
Ant Online は今日、Zhihu の投稿を見ました: Zhihu の「XXX はどのような ...
fast-hosting、この会社は比較的新しいので、これまで見たことがありませんが、E3 または ...
毎日、パソコンの電源を入れると、いつも私たちを取り囲むホットな話題があります。それは「2012年ロン...
Dell EMCは本日、業界をリードする第14世代PowerEdgeサーバーポートフォリオの拡張を発...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン人々の生活水準が向上するにつれて、人々は...
過去1〜2週間、CNNICのCA証明書の問題についてオンラインで多くの議論がありました。しかし、IT...
Hostodo (~) は現在、ラスベガス、スポケーン、マイアミのデータセンターで、少なくとも 5T...
最近、ウェブマスターがBaiduの重み(BR)について非常に懸念していることが分かりました。このBa...
MQ (メッセージ キュー) は、非同期 RPC として理解できるプロセス間通信の方法の 1 つです...
これまで、Baidu でのランキングは Google よりも難しいと感じていました。 Baidu は...
まず、「ブランドとは何でしょうか?」という質問に答えましょう。誰もが知っているのはブランドです。する...
多くの人はオンラインアライアンスプロモーションを理解していません。まずは百度百科事典のオンラインアラ...
ジェレミー・リンは全米バスケットボール協会で急速に人気者となり、「リン・トルネード」もインターネット...
市場全体のダウンロード数は100万を超えており、事業者は政策強化を前に規模拡大を急いでいる。最近、一...
クラウド コンピューティングは、大量のデータを収集するだけでなく、それをリアルタイムの分析に使用する...