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選
以前お話しした4Pと4Cを覚えていますか?それぞれの特徴は主に4Pが製品中心、4Cが顧客中心であるこ...
2020年初頭にCOVID-19パンデミックが発生したとき、企業にとっての最優先事項は、業務が正常に...
この記事は、私が Windows で Vagrant を半年間使用し、突然 Mac に切り替えた後に...
ウェブサイトの最適化を軽視する SEO 担当者が増えています。インデックスがない、またはインデックス...
[51CTO.com からのオリジナル記事] 今日、クラウド コンピューティングは IT 業界全体の...
1. 3Q戦争の2番目の事件が今日審理される。最高裁判所の副長官が裁判長を務める。 12月4日早朝、...
[[261393]] Oracle NetSuite は本日、さまざまな業界の組織が成長を加速するた...
毎年、整理し、まとめ、努力し、そしてまた始める必要があります。 2020年、今年はさらに振り返る価値...
多くの場合、ウェブサイトの関連性がウェブサイトの品質を決定します。私たちが普段接する多くのウェブサイ...
現在、ウェブサイトの最適化は基本的に Baidu 最適化、つまり Baidu 検索エンジンを中心とし...
【原文は51CTO.comより】6月26日午後、「デジタルメディア分野におけるクラウド技術の革新と実...
Ultravps に新しいニュースがあります。米国 (ダラス、ロサンゼルス)、ドイツ (デュッセルド...
ウェブサイトのキーワードのランキングは、SEO 担当者にとって常に最も関心の高い問題であり、ウェブマ...
SEO 業界の敷居がどんどん低くなるにつれて、競争もますます激しくなっています。では、このような激し...
初心者が優れたコピーを書くにはどうすればいいでしょうか?この記事の著者は、コピーライティングの要素を...