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選
企業のデジタル化のペースは長年にわたり止まることなく続いていますが、期待通りの成果を達成するのは困難...
ImpactVPS では、安価な VPS プロモーションを実施しています。通常の VPS とは異なり...
はじめに:アメリカのオンライン雑誌「Slate」は本日、Farhad Manjoo 氏による記事を掲...
最近、私自身の個人ブログも大幅にダウングレードされました。キーワードランキングが一晩ですべてトップ1...
1. プライベートクラウドの開発背景と動向新しいインフラストラクチャなどの政策や企業のデジタル変革に...
ロシアのホスティング会社、King Servers BV をご紹介します。同社の主な業務は、仮想ホス...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています大規模交通...
マイクロソフトは最近、競合他社のデータセンターを含む自社所有ではないデータセンターでクラウドコンピュ...
WalkMe は、ユーザーが Web サイトの使用方法を理解するのに役立つツールです。同社は本日、S...
今日、「年齢を重ねるほどSEOとしての価値が高まる」という話題が突然出てきて、私は深く考え込んでしま...
[[396376]]この記事はWeChatの公開アカウント「Ask Qi」から転載したもので、著者は...
6月から数か月にわたる調整を経て、百度の新しいアルゴリズムは基本的に安定した状態になった。しばらく前...
機密情報プラットフォームは市場で増加しており、特に58に代表される類似プラットフォームが目立っていま...
戦いの中で、遅れをとる者もいれば、台頭する者もいた。 2018年、情報フロー製品の王座をめぐる熾烈な...
多くの人にとって、量子コンピューティングは、数十年にわたる高額な研究にもかかわらず、大きな可能性を秘...