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選
Vultr はオセアニア、具体的にはオーストラリアのメルボルンとシドニーにもデータセンターを提供して...
Bandwagonhost は vpsblast の別名であり、アリゾナにデータセンターがあります。...
インターネット マーケティングは一般的なトピックです。多くの場合、基本的で普遍的な知識や経験が多くの...
分散システムでは、次の 3 つの指標に細心の注意を払います。データの一貫性;システムの可用性;ノード...
クラウド セキュリティ戦略により、企業は安全なクラウド環境で機器を運用し、ビジネスを遂行できるように...
hmbcloud(ハーフムーンベイ)は新興企業(米国在住の中国人が運営していると噂)とも言えます。現...
草の根ウェブマスターにとって、ウェブサイトを最適化する際に、単にコアキーワードの最適化に膨大なエネル...
ウェブサイトの最適化について私が理解しているのは、ウェブサイトの運営に問題があり、ユーザーが正常に閲...
zappiehostは2009年に設立され、ARIN、RIPE、APNIC、Afrinicのメンバー...
[[426552]]この記事はWeChatの公開アカウント「Mu Xiaonong」から転載したもの...
オンラインプロモーションは多くのレベルに分かれており、ウェブサイト最適化ランキングは最も一般的なウェ...
あなたのウェブサイトは興味深いコンテンツでいっぱいなのに、トラフィックがひどいですか? 確かにコンテ...
uuuvps は日本の VPS サービスを提供しています。公式発表によると、日本のソフトバンクに接続...
hostsolutions.ro は、今のところルーマニアで最も安い VPS プロバイダーです。20...
regxaは2017年に設立された新興企業です。主に1Gbpsの帯域幅、無制限のトラフィック、高度な...