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をわかりやすく説明する

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

推薦する

商務省:電子決済をめぐるWTO紛争の部分的判決を歓迎

中国新聞社、北京、7月16日(記者:石燕)世界貿易機関が16日夜発表した、電子決済をめぐる米国と中国...

buyvm: これはおそらく、大容量ハードドライブを備えた最も信頼性が高く安価な VPS であり、トラフィック制限もありません。

buyvm、海外の安価なVPSを使用するほとんどの人は、それについて少しは知っているはずです。このカ...

スワイヤー コカコーラが AWS に完全移行

Amazon グループ会社の Amazon Web Services, Inc. (AWS) は本日...

リンクファクトリーは、ウェブサイトの構築を輸入および輸出し、他人や自分自身を傷つける

ますます多くのウェブサイトが開発の行き詰まりに陥っていますが、彼らは困惑しています。ウェブサイトのコ...

中国オンライン広告年次インサイトレポート

パンデミック後の環境:全体的な環境は非常に不安定ですが、影響は軽減されており、広告主はマーケティング...

キューブクラウド:元旦にすべての VPS が 12% オフ、300M 香港 CN2 GIA、2Gbps ロサンゼルス CN2 GIA、2Gbps ロサンゼルス AS4837

キューブクラウド(~)は新年特別プロモーションを開始し、すべてのVPSが12%割引となります。香港C...

Admin5フォーラムのチャット活動から学んだウェブサイト構築の経験について話します

A5 チャット アクティビティは、毎週木曜日の午後 2 時 30 分から 4 時まで、admin5 ...

UEO時代では、ユーザーのニーズに合わせて最適化する必要がある

一連の主要な検索エンジンのアップデートにより、UEO という言葉はインターネット上で徐々に人気が高ま...

bgpto: 日本の東京データセンターにある独立サーバーの簡単な評価、実際のテストデータを共有

bgp.to の日本サーバーは、東京と大阪の 2 つのデータセンターにあります。異なるデータセンター...

草の根トーク:「ペニーペニー」のさまざまなウェブサイト最適化手法

SEO はウェブサイトのプロモーションの同義語の 1 つになっているようです。さまざまな種類のウェブ...

異なるアプローチで機器ポータルサイトを運営するという同じ目標

計測機器は高価な工業製品であり、その価格は数千元から数万元にもなります。実験室や精密機器、設備の価格...

ウェブサイトの降格の理由とトラブルシューティング

ウェブサイトの降格といえば、6月末のBaiduアルゴリズムの大規模なアップデート(大量のスパムサイト...

コメント: 生鮮食品のEコマース事業を運営する上での難しさとは? 3つの側面から始める方法

2013年6月、COFCO Womai.comはWeiboに「あなたたちはとても弱い」というタイトル...

ユーザー エクスペリエンスは外部リンクの構築から始まります。効果的なクリックが生成されて初めて、外部リンクは高品質になります。

現在、すべてのウェブマスターとSEO担当者は、外部リンクの構築に多大な注意を払っています。彼らは、リ...