Ingress/IngressController/IngressClass の違いを 5 分で理解する

Ingress/IngressController/IngressClass の違いを 5 分で理解する

一言でまとめると、Ingress は Ingress ルール、IngressController、IngressClass の 3 つの部分で構成されます。入力リソースは、一連のルーティング転送構成にすぎません。ルーティング ルールを有効にするには IngressController を使用する必要があります。IngressClass は IngressController の特定の実装です。使用原則: 最初に IngressController をデプロイし、次に Ingress リソースをデプロイします。

1. 理論

1.1 イングレスの概念

Ingress の前に、Service の nodePort を通じてサービスを公開し、コンテナ ポートを Service の nodePort にマップできます。この方法では、クラスター内の任意のノードの IP:nodePort にアクセスすることでクラスターにアクセスできます。この形式のサービス公開は TCP/IP 層で機能します。または、Pod ポートを HostPort にマップします。

ただし、これには、ノード ポートが多すぎることやドメイン名を転送できないことなど、多くの欠点があります。

そこで、Ingressという概念が導入されました。 Ingress は、Nginx に似た 7 層のルーティング フォワーダーです。ルーティング転送に Ingress を使用する場合、ingressController は Ingress ルールに基づいて、クライアント要求をサービスに対応する Pod に直接転送します。これにより、kube-proxy によって設定されたルーティング転送ルールがスキップされ、ネットワーク転送の効率が向上します。

1.2.イングレス構成

Ingress リソースは一種の仮想リソースとルール定義であり、有効にするには ingressController と連携する必要があります。したがって、Ingress リソースが機能するには、クラスターで ingressController が実行されている必要があります。

Ingress は、Ingress ルール、IngressController、IngressClass の 3 つの部分で構成されます。 Ingress ルールは、有効にするために IngressController で使用する必要のある一連の構成にすぎず、IngressClass は IngressController の特定の実装です。関係は次のようになります。

1.3. Ingress の機能とワークフロー

ingressController の実装は Ingress-Nginx、Traefik、Kong Ingress など多数あるため、YAML オーケストレーション ファイルで ingressClass を指定する必要があります。

Ingress リソースが正常にデプロイされ、作成されると、IngressController は構成されたルーティング ポリシーを監視し、それを Nginx 構成ファイルに更新して有効にします。

まとめると、IngressController の機能は次のとおりです。

  • 外部トラフィックを受け入れ、内部で実行されているポッドへのリクエストを負荷分散する
  • イングレスルーティングと転送ルールをデプロイする
  • Kubernetesで実行中のPodを監視し、Podが追加または削除されたときに負荷分散ルールを自動的に更新します。

Ingress のワークフローは次のとおりです。

2. 練習

2.1、IngressClassのインストール

この記事では ingress-nginx を使用していますが、自分で練習することもできます。

公式ウェブサイトアドレス: https://kubernetes.github.io/ingress-nginx/deploy/#quick-start

helm または kubectl を通じてインストールできます。この記事では kubectl を使用してインストールします。 yaml ファイルには多くのコンテンツが含まれているため、ダウンロードして自分で読むことができます。インストールするには、次のコマンドを実行します。

 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

2.2. YAMLのアレンジ

IngressController がデプロイされたら、YAML の配置を開始します。

コンテナ イメージが Nginx である Pod は YAML で定義され、Service を通じて Pod に関連付けられ、Ingress ルールを通じてアクセスされます。

 apiVersion: v1 kind: Pod metadata: name: web-app namespace: demo labels: app: web-app spec: containers: - name: web-app image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: web-service namespace: demo labels: app: web-service spec: selector: app: web-app # ClusterIP | LoadBalancer | NodePort,使用Ingress就没必要设置成NortPort type: ClusterIP clusterIP: None ports: - name: web-service-port protocol: TCP port: 80 targetPort: 80 --- # 创建Ingress策略apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: / name: web-ingress namespace: demo spec: # 指定ingressClass ingressClassName: nginx rules: - host: web-ingress.mangod.top http: paths: - path: / pathType: Prefix backend: service: name: web-service port: number: 80

2.3 展開テスト

YAML を配置したら、kubectl apply コマンドを使用してデプロイします。デプロイ後、ドメイン名と K8S-Node ノード間のマッピング関係をローカルの /etc/hosts で設定します (もちろん、本番環境でのアクセス リンクはこれよりも長くなりますが、これについては後で説明します。この記事では、簡単にテストできるように、DNS をローカルで直接設定します)。マッピング関係は次のようになります。

 10.20.1.23 web-ingress.mangod.top

次に、ブラウザを使用して http://web-ingress.mangod.top/ にアクセスします。インターフェースは次のようになり、Ingress が正常に使用されていることがわかります。

今回は以下のコマンドを使用して、ingressController に対応するポッドに入り、検証を続けます。おなじみの nginx.conf が表示されます。以前に構成されたイングレス ルールは、次のように構成で確認できます。

 kubectl get pods -n ingress-nginx kubectl exec ingress-nginx-controller-nginx-d864d97df-22ljk -it -n ingress-nginx /bin/bash

これで練習のプロセスは終了です。

3. まとめ

要約すると、Ingress は Ingress ルール、IngressController、IngressClass の 3 つの部分で構成されます。入力リソースは、一連のルーティング転送構成にすぎません。ルーティング ルールを有効にするには IngressController を使用する必要があります。IngressClass は IngressController の特定の実装です。使用原則: 最初に IngressController をデプロイし、次に Ingress リソースをデプロイします。

<<:  K8SのPV/PVC/StorageClassをわかりやすく説明する

>>:  エッジコンピューティングが次の大きなキャリアチャンスとなる理由

推薦する

他の人ができるからといって、自分もウェブサイトを運営できるわけではありません。他人の真似は避けるべきです。

あるネットユーザーは知乎でこう質問した。「百度で「淘宝」というキーワードを検索すると、なぜ麦宝宝のウ...

基本的な検索エンジン機能: クロール、インデックス作成、関連性と重要度による並べ替え

検索エンジンには、クロールとインデックス作成、そして関連性と重要度に応じて結果の回答をランク付けする...

trentahost-1.56 USD/KVM/256 MB RAM/8 GB SSD/Windows/1000 MB/無制限/7 データセンター

trentahost.com は 年に設立されたようですが、それについての情報はあまりありません。 ...

#BlackFriday# ドメイン名の登録と更新、SSL 証明書に関する情報がすべて 1 つの投稿にまとめられています。

毎年恒例のブラックフライデー・ゴールデンウィークは、ドメイン名やSSL証明書などを購入するのに最も安...

アリババクラウドが北京冬季オリンピックのクラウドデータセンターを発表、北京はグリーンデジタルオリンピックの「聖火ランナー」に

空を明るくし、木を植えて緑を作り出す、8年前の北京夏季オリンピックで作られた「緑のサンプル」は世界を...

おすすめ: Vpsnet-Auto Scaling を無料で

vps.net の名前は挙げませんが、今月の特別プロモーションをご紹介します。今月 vps.net ...

Linux システム - ファイルシステムと仮想ファイルシステム

[[334629]] 1. ソフトリンクとハードリンクの違いファイルにはファイル名とデータが含まれて...

スマートマーケティング: 欲しいものを考えて、必要なものを提供する

月収10万元の起業の夢を実現するミニプログラム起業支援プラン現代のマーケティングの第一人者、フィリッ...

「公式サイト」という言葉がBaiduにペナルティを受けないようにする方法

現在、インターネットでウェブサイトを運営するのは簡単ではありません。過去数年間、ジャンクウェブサイト...

プロモーションに活用: 検索結果の最初のページに表示されるウェブページを活用して、長期的なプロモーションを行います。

このプロモーション方法の中心的な考え方は、ランク付けされた Web ページを見つけ、それらのページを...

オペレーション兄弟!なぜ Kafka は再び「タイムアウト」したのでしょうか?

現象早朝、運用保守チームが就寝したところ、ビジネス開発チームからの電話で起こされました。「おい!また...

商品が売れない?これらの7つのヒントはあなたのマーケティング能力を向上させます

マーケティング行動は、実際にはすべてのビジネス活動の一部にすぎません。多くのスタートアップ企業は何か...

#クリスマス# Virmach - 年額 25 ドル/Windows/メモリ 2g/SSD 30g/トラフィック 2T

Virmach のクリスマス プロモーションは 4 日前に発表されました。遅れたので、ここで引き続き...

150倍高速なメカニカルディスク、UCloudクラウドホストIO加速技術が公開

現在、CPU の計算能力とディスク アクセスの遅延のギャップは徐々に拡大しており、ユーザーのクラウド...

高級電子商取引サイトZuxiu.comが、実際には偽造品である偽ブランドの女性用靴を販売したとして告発された

■NewbarKが高さんの友人に送った返信メールの冒頭で、高さんが問い合わせた靴は偽物だと明確に書か...