Ingress の役割は何ですか?クラスター外部からクラスター内のサービスへのアクセス (通常は HTTP リクエスト) を管理します。負荷分散、SSL 終了、ドメインベースの仮想ホスティング アクセスを提供できます。これらの機能は比較的簡単に実装できることがわかりました。クラスター内のサービスをクラスター外に公開するには、「NodePort」タイプのサービスを使用し、HAProxy を使用して負荷分散を実現し、7 層のリバース プロキシを使用して SSL 終了機能を展開することができます。ドメイン名ベースの仮想ホスト アクセスも実装が比較的簡単です。では、Kubernetes が Ingress API オブジェクトを導入するのはなぜでしょうか? Ingressの可能性冒頭でも述べたように、Ingress の機能は他の技術を使って実装することも可能ですが、実際に運用してみると、それほど単純ではないことがわかります。 Ingress が参加しない場合、クラスター内のサービスは「NodePort」タイプのサービスを使用してクラスターの外部に公開されます。このタイプのサービスは、マイクロサービスごとに作成する必要があります。サービスが多数ある場合、トラブルシューティングは非常に複雑になり、ホスト ポートの使用を調整するのも面倒になります。クラスターの外部に Nginx または Apache を展開することで、SSL ターミネーションとドメイン名ベースの仮想ホスト アクセスを実現できますが、サービス検出と構成管理が課題となります。クラスター外の Nginx と Apache はクラスター内のサービスの増減を認識できず、手動での構成が必要になります。これはクラスター管理者にとっては悪夢です。幸いなことに、Ingress はここにあります。 インストールKubernetes にサービスをインストールするのは通常簡単で、単に「kubectl apply」に続けて yaml ファイルを使用するだけです。もちろん、Kubernetes のパッケージ管理ツールである Helm を使用することもできます。 「nginx ingress」には、環境に応じて 3 つのインストール方法があります。
著者は、この記事で紹介した方法を使用して Kubernetes クラスターをインストールします。ここでは、2 番目の方法を使用して「nginx ingress」をインストールします。以下のコマンドを実行します(バージョンアップが速いため、実際の展開は公式サイトを参照してください)。 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml インストールにより、「k8s.gcr.io」イメージ リポジトリからイメージが取得されます。プルが失敗した場合は、Alibaba Cloud などを選択できます。 追加されたクラスター リソースを表示します。 [ root @master ~] # kubectl get all - n ingress-nginx クラスターは独自に構築されているため、「ingress-nginx-controller」のサービス タイプは「NodePort」です。サービスにアクセスするには、次の方法が必要です: NodeIP+30305/31330+Path。 使用前の操作が正常に実行されたら、Ingress タイプの API オブジェクトを作成できます。著者のクラスターには事前に Web サービスがデプロイされています。サービス情報は以下の通りです。 [ ルート@master ~] # kubectl get svc Ingress API オブジェクトを作成します。 1 > --- 以前にインストールした nginx ingress をデフォルトの Ingress として設定しなかった場合は、行 10 を追加する必要があります。そうしないと、Ingress リソースが API サーバーに送信されても、「nginx ingress コントローラー」は応答しません。 「ingressClassName」の値を取得します。 [ root @master ~] # kubectl get ingressclass 作成された Ingress を表示します。 [ root @master ~] # kubectl get ingress Ingress を介して Web サービスにアクセスします (ドメイン名が解決されない場合は、/etc/hosts ファイルを変更します)。 [ root @master nginx ] # curl mynginx .example .com : 30305 / testpath 原理Nginx Ingress の導入と使用は難しくありません。最も重要なことは、問題に遭遇したときにすぐにそれを特定できるように、その動作原理に精通することです。 「ingress-nginx-controller」ポッドで実行されているコンテナは 1 つだけですが、このコンテナには複数のデーモンが含まれており、そのうち 2 つ (controller と nginx) が重要です。 Pod に入り、 ps コマンドを実行して以下を表示します。 [ root @master ~] # kubectl exec -it ingress -nginx-controller-687578654b-f92bq -n ingress -nginx -- / bin / bash コントローラは、下図に示すように、サービス検出と自動構成機能を実装するマネージャです(公式サイトからダウンロード)。 nginx ingressの仕組み この図は複雑に見えますが、一言でまとめると、「Ingress Controller」(図の IC) はシステム管理者に相当します。要求者は Ingress リソースを API サーバーに送信し、IC は API サーバーから Ingress リソースを取得します。 IC は Ingress リソースと Nginx の両方を理解するため、Ingress の「変換」を完了し、Nginx 構成ファイルを更新してリロード操作を実行します。これが核となるロジックです。 上記では、「nginx」サービス用の Ingress リソースを作成し、アクセス パスを「/testpath」として設定しました。ここで、「ingress-nginx-controller」ポッドに入り、Nginx 構成ファイル /etc/nginx/nginx.conf を確認します。 仮想ホスト「mynginx.example.com」には 200 行を超える構成があります。無関係なものは削除してください。 # # サーバーmynginx .example .com を起動します 設定ファイルからは、「/testpath」に送信されたリクエストが 1 回のジャンプを完了した後に最終的に「upstream_balancer」に送信されていることがわかります。 Nginx 構成ファイルでの定義は次のとおりです。 アップストリームアップストリームバランサー{ Nginx 構成ファイルは Lua に大きく依存しているため、ここで表示される情報は直感的ではありません。バックエンド サービスを表示するには、コメントに従って、kubectl の「ingress-nginx」プラグインをインストールします。以前の Nginx 構成ファイルには、次の行があります。 $ proxy_upstream_nameを"test-nginx-80" に設定します。 ドメイン名「mynginx.example.com」のバックエンド名が「test-nginx-80」であることを示します。 Ingress のバックエンドを表示します (無関係な行は無視します)。 [ root @master ~] # kubectl ingress-nginx バックエンド- n ingress-nginx 出力から、バックエンドは実際には「nginx」という名前のサービスに対応するエンドポイントであり、その IP は「10.244.1.26」であることがわかります。 [ root @master ~] # kb エンドポイントを取得 ここで強調しておきたいのは、Nginx Ingress はトラフィックを nginx サービスに転送するのではなく、バックエンドの Pod に直接転送するということです。転送戦略も Ingress コントローラによって完全に決定されます。これにより、DNAT が 1 つ削減されるだけでなく、より豊富な負荷分散戦略も可能になります。 Ingress リソースに表示されるサービス オブジェクトは、バックエンド エンドポイントを選択するためだけに使用されます。 要約するこの記事では、Nginx Ingress について紹介します。 Kubernetes には多くの Ingress オプションが用意されており、読者はニーズに応じて選択できます。 |
<<: 企業はどのようなタイプの PaaS サービスを選択すべきでしょうか?
>>: Meituan Cluster スケジューリング システムのクラウド ネイティブ実践
5月23日、広東省人民政府の指導の下、広東省経済情報化委員会とテンセントの主催により、2018年テン...
OpenCL は、マルチコア CPU、GPU など、ホストのすべてのコンピューティング リソースを統...
現在、中国のモバイル動画分野のアクティブユーザー数は小幅減少傾向にある。Analysys Qianf...
Zhihu のトピックディスカッションより: 「Facebook や Taobao など、それほど複...
ウェブサイトサーバーの構築に Windows プラットフォームを使用するかどうかは、ウェブサイト管理...
有能な SEO 担当者として、あなたは「スプロケット」の基本的な SEO 概念についてよく理解してい...
多くの場合、個人のウェブサイトは検索エンジンに大きく依存しており、大量のトラフィックを獲得できるかど...
VPS はさまざまな目的で使用されます。最も一般的なのは、Web サイトの構築とプログラムの実行です...
11月2日、ByteDanceのインフラストラクチャチームは、NVMe-oF(NVMe over F...
マーケティング手法には SEO が含まれており、SEO はマーケティングの一部です。SEO 分野で何...
シンガポール データ センターにある bgpto のシンガポール CN2 サーバーが 25% オフ、...
arebzの新製品「マルチIPクラウドサーバー」は、ハイエンドのリソースと複数のIPを備えたクラウド...
真のプライベートクラウドとプライベートクラウド「真のプライベート クラウド」と「プライベート クラウ...
デジタル変革が深まるにつれ、クラウドコンピューティング、人工知能、ビッグデータ、モノのインターネット...
Baidu web2.0 のスパム対策アップグレードが完了した今、ウェブマスターはウェブマスターとし...