Kubernetes EndpointSlices を作成する

Kubernetes Endpointslices Wo Zuo Chengsuru



エンドポイント スライスを使用すると、Kubernetes クラスターに接続されているネットワークのエンドポイントを追跡できます。 Kubernetes 環境での EndpointSlices について詳しくは、私たちが作成したこの記事をご覧ください。このチュートリアルでは、Kubernetes クラスター内の EndpointSlice とは何か、および Kubernetes で EndpointSlice を作成する方法について学習するのに役立ちます。 Kubernetes クラスターにエンドポイントを作成できる kubectl コマンドをいくつか紹介します。

Kubernetes の EndpointSlice とは?

Kubernetes の EndpointSlice は、ネットワーク エンドポイント トラッカーです。これにより、Kubernetes クラスター内のネットワーク エンドポイントを監視できます。簡単に言えば、割り当てられた各ポッドから IP アドレスを取得するオブジェクトです。 Kubernetes サービスは、このオブジェクトを参照して、通信用のポッドの内部 IP アドレスのレコードを取得します。さらに、これらのエンドポイントは、ポッド自体をサービスに公開するために使用されます。

Kubernetes レルムでは、これらのエンドポイントは抽象化レイヤーとして機能し、Kubernetes サービスがクラスター内のポッドへのトラフィックの分散があることを確認するのに役立ちます。ただし、トラフィックの負荷が増加すると、トラフィックのスケーリングの問題が発生します。これは、1 つのエンドポイントが各サービスのすべてのネットワーク エンドポイントを保持するためです。そして、これらのソースが許容できないサイズに成長すると、Kubernetes のパフォーマンスに悪影響が及びます。つまり、ネットワーク エンドポイントの数が非常に増えると、展開をスケーリングする Kubernetes の機能に悪影響が及びます。次のグラフィック イメージを使用して、これを理解してみましょう。









ここでは、エンドポイントにクラスター内のすべてのポッドが含まれており、EndpointSlices が既存のエンドポイントに代わる拡張可能でスケーラブルな代替手段であることがわかります。サービス全体に対して 1 つのエンドポイント リソースしかありませんが、同じサービスに対して複数の EndpointSlices があります。 EndpointSlices は、この方法でネットワーク リソースをスケーリングするのに役立ちます。このスケーラビリティの問題がどれほど重要かを理解するために、例を挙げてみましょう。



たとえば、Kubernetes サービスには約 9,000 個のポッドがあり、最終的に 2MB のエンドポイント リソースになります。単一のエンドポイントには、サービスのこれらすべてのエンドポイント リソースがあります。エンドポイントでネットワーク エンドポイントが変更された場合、エンドポイントのリソース全体をクラスター内の各ノードに分散する必要があります。 3000 のノードを持つクラスターを扱う場合、膨大な数の更新を各ノードに送信する必要があるため、大きな問題になります。したがって、単一のエンドポイントだけでさらにスケーリングすると、ネットワークのスケーリングが難しくなります。





ただし、EndpointSlices は、Kubernetes が必要なだけスケーリングできるようにすることで、この問題を解決します。 IP アドレスとそれに関連付けられたポート番号の膨大なリストを含む単一のエンドポイントを使用する代わりに、複数の EndpointSlices を使用します。これらの EndpointSlices は、巨大な単一のエンドポイントの小さなチャンクです。これらのスライスははるかに小さいですが、巨大なエンドポイントによって引き起こされる負荷を軽減します. 1 つの EndpointSlice に最大 100 個の Pod を格納できます。これらの EndpointSlices は、サービスを特定のポッドに配布するのに役立ちます。ネットワーク エンドポイントが変更された場合、最大 100 個のポッドを含む EndpointSlice に更新を送信するだけで済みます。ネットワーク内の他のすべてのポッドは変更されません。

それでは、Kubernetes EndpointSlice を作成する方法を学びましょう。



EndpointSlices は Kubernetes でどのように作成されますか?

Kubernetes EndpointSlices は、Kubernetes クラスター内の単一のエンドポイントに代わる最良の方法です。すべてのネットワーク エンドポイントを簡単かつ効率的に追跡するのに役立つだけでなく、単一のエンドポイントと比較してパフォーマンスが向上します。また、スケーリングの信頼性を提供しながら、ネットワーク トラフィックが少ないことも示しています。さらに、複数の EndpointSlices を使用すると、Kubernetes クラスター内のコントロール プレーンとノードにかかる労力を軽減できます。

次の例では、Kubernetes クラスターで EndpointSlices を作成する方法を学習できる手順を確認できます。

ステップ 1: Minikube クラスターを起動する

最初のそして最も重要なステップは、minikube クラスターがアクティブであることを確認することです。非アクティブな minikube クラスターでは、Kubernetes 環境で作業を実行することはできないため、アクティブ モードであることを確認してください。 minikube クラスターが稼働中であることを確認するには、次のコマンドを使用します。

> ミニキューブを始める

minikube クラスターが以前に開始されていない場合、またはスリープ モードになっている場合、このコマンドはクラスターを起動して実行します。これで、アクティブな minikube クラスターができました。 Kubernetes 環境で EndpointSlice を作成する準備ができました。

ステップ 2: YAML ファイルを使用してデプロイメントを作成する

YAML ファイルは、デプロイを作成するために Kubernetes で最も一般的に使用されます。既存のデプロイメント YAML ファイルを使用するか、次のコマンドで新しいファイルを作成できます。

> ナノエンドポイント.yaml

これにより、構成用のデプロイメント定義を保存できる「endpoint.yaml」という名前の新しい YAML ファイルが作成されます。次のスクリーンショットの展開定義を参照してください。

ステップ 3: YAML ファイルを使用して EndpointSlice を作成する

デプロイ定義を含む YAML ファイルができたので、それを使用して Kubernetes クラスターに EndpointSlices を作成します。 Kubernetes クラスターに EndpointSlices を配置できるように、構成ファイルをデプロイする必要があります。次のコマンドを使用して、構成ファイルをデプロイします。

> kubectl create -f endpoint.yaml

Kubernetes 環境では、「kubectl create」コマンドを使用してリソースを作成します。したがって、「kubectl create」コマンドを使用して、YAML 構成ファイルから EndpointSlices を作成します。

結論

Kubernetes 環境で EndpointSlices を調査しました。 Kubernetes の EndpointSlice は、Kubernetes クラスター内のすべてのネットワーク エンドポイントを追跡するために使用されるオブジェクトです。これは、スケーラビリティと拡張性のオプションが向上するため、Kubernetes クラスター内の巨大で単一のエンドポイントに代わる最良の方法です。これらの EndpointSlices により、Kubernetes クラスターは、ノードとコントロール プレーンにかかる労力を減らすことで、パフォーマンスを向上させることができます。例の助けを借りて、Kubernetes クラスターで EndpointSlices を作成する方法を学びました。