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選
実際、法的意識の弱さと遊び心により、インターネット企業のセキュリティに携わる技術スタッフやセキュリテ...
ウェブサイトの関連性は、ウェブサイトで注目すべき領域であり、ユーザーエクスペリエンスの焦点でもありま...
-- IBMの市場シェアは2009年第1四半期に4%増加し、2000年以降14%増加している。ニュー...
クリプトデータセンター傘下のVPSブランド、ioncloudが6月のプロモーションを実施。サンノゼと...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン2014年に成都で行われた最初の集会には...
1. 新しいサイトのトラフィックを素早く増やす方法ウェブサイトを構築したばかりのウェブマスターは、編...
分散 Web プログラミングでは、高い同時実行性と内部分離を解決するための重要なテクノロジはキャッシ...
intensevps.com はクロアチアの非常に新しい VPS 販売業者で、おそらく個人で運営され...
著者: Weiwuism {WeChat 公開アカウント: weiwuzy}電子商取引がいつから「お...
11月3日から4日にかけて、2021年テンセントデジタルエコシステムカンファレンスが武漢で正式に開催...
lisahost は現在、より特徴的な米国 VPS を提供しています: 米国ネイティブ IP 付き ...
インターネット社会がますます発達し、私たちが物と接する方法も変化し多様化しています。商品のプロモーシ...
「接続された」デバイスの数が増えると過剰なデータが生成されますが、モノのインターネット (IoT) ...
buyvm から VPS を購入し、その後 buyvm からブロック ストレージ (Block St...
この記事は、GOPS 2022 上海での Yu Tao 教授の講演に基づいてまとめられています。さら...