Kubernetesは、コンテナ化されたアプリケーションを管理するためのプラットフォームです。これを実現するために、コンテナ化されたアプリケーションのデプロイ、スケーリング、構成を制御および管理できるAPIが提供されています。Kubernetesはオンプレミスまたはクラウドで使用でき、現在、コンテナ化されたアプリケーションを管理するための最も一般的なプラットフォームです。
Kubernetesの重要な利点の1つは、アプリケーションをスケールする機能です。Kubernetesは、CPU使用率、メモリ使用量、その他の指標に基づいて、アプリケーションを自動的にスケールできます。これにより、アプリケーションが常に使用可能になり、ユーザーのニーズを満たすことができます。
Kubernetesは、Dockerコンテナの管理と調整に役立つ強力なツールです。Kubernetesを使用することで、アプリケーションの実行に必要なすべてのものを含む自己完結型の環境を作成できます。この環境は、アプリケーション、依存関係、ライブラリ、および設定ファイルで構成できます。
また、Kubernetesは、必要に応じてアプリケーションをスケールアップまたはスケールダウンできるため、アプリケーションの効率的な実行に必要なリソースが常に確保されます。さらに、Kubernetesは、ローリング更新や正常性チェックなど、Dockerコンテナを簡単に管理するのに役立つ多数の機能を備えています。
Kubernetesでは、アプリケーションを管理するためのさまざまなリソース、サービス、ツールを利用できます。最もよく使用されるいくつかのオプションを以下に示します。
Kubernetesには、Ingressと呼ばれるリソースがあり、ロード・バランサなど、さまざまな機能に使用されます。Ingressを使用したロード・バランサにより、一連のポッド間でトラフィックを分散し、それらのポッドを単一のサービスとして公開できます。これにより、アプリケーションの可用性とパフォーマンスの両方が向上します。
ロード・バランサは、受信した各リクエストのヘッダーを調べます。ロード・バランサは、リクエストのあて先と定義されたルールに基づいてポッドを選択します。その後、そのポッドにリクエストを転送します。
ロード・バランサは正常性チェックもサポートしており、ロード・バランサがリクエストを送信する前にポッドが満たす必要がある一連の条件を指定できます。ポッドが要件を満たさない場合、ロード・バランサはリクエストの送信を停止します。
ロード・バランサを使用すると、リクエストのソースIPアドレスに基づいてトラフィックをルーティングすることもできます。これは、アプリケーションへの特定ソースからのアクセスを制限する場合に便利です。
Kubernetesネットワーキングは、ポッドとサービスを作成することで機能します。ポッドは、1つ以上のコンテナのグループであり、それらのコンテナは、まとめてデプロイされ、ネットワーク・ネームスペースとIPアドレスを共有します。
ポッド内のコンテナは、localhostを使用して相互に通信できます。
サービスは、1つ以上のポッドを外部に公開するために使用されます。サービスはロード・バランサとして実装されており、複数のポッドにわたってトラフィックを負荷分散できます。
Kubernetesスケジューラは、Kubernetesシステムの重要な部分です。ポッドにリソースを割り当てたり、ポッドの正常な動作を実現したりする役割を担います。
スケジューラは、各ポッドに優先順位を割り当て、ポッドを扱うのに十分なリソースがあるノードを探します。リソースを使用できない場合、スケジューラは、優先順位が高いポッドをノードに割り当てることができます。また、ポッドのさまざまな優先順位を考慮して、割り当てを行います。一般に、ポッドをノードに割り当てる際には、最も優先順位の低いノードを使用して中断とプリエンプションを最小限に抑えます。十分なリソースを持つノードがない場合、スケジューラは、リソースが使用可能になるまで待機します。
また、スケジューラは、失敗したポッドの再起動も行います。ポッドが失敗した場合、スケジューラはそのポッドを別のノードで続行させます。これにより、ポッドは、正常に動作するのに必要なリソースに常にアクセスできます。
Kubernetes自動スケーリングは、CPU使用率やその他の指標に基づいてポッドを自動的にスケールアップまたはスケールダウンできる優れた機能です。自動スケーリングは、クラスタ内に最適な数のポッドを維持し、アプリケーションのパフォーマンスと安定性を向上させるのに役立ちます。
Kubernetes自動スケーリングには、水平と垂直の2つのタイプがあります。
水平自動スケーリングでは、クラスタのノードを追加または削除することによって、ポッドをスケールアップまたはスケールダウンします。一方、垂直自動スケーリングでは、個々のポッドのCPUまたはメモリの制限を変更することで、ポッドをスケールアップまたはスケールダウンします。
Kubernetes自動スケーリングは、スケーリング・トリガーとスケーリング・ポリシーの2つの概念に基づいています。スケーリング・トリガーは、Kubernetesがポッドをスケールアップまたはスケールダウンする条件です。スケーリング・ポリシーは、スケーリング・トリガーが発生したときにKubernetesが実行するアクションです。
DNS(ドメイン・ネーム・システム)は、人間が判読できるドメイン名をコンピュータで使用される数値形式のIPアドレスに変換するために使用されるシステムです。KubernetesはDNSを使用してサービスを管理します。Kubernetesの各サービスには、一意のDNS名があります。サービスを作成すると、Kubernetesは、そのサービスのDNSレコードを作成します。DNSレコードには、サービスのIPアドレスとポート番号が含まれます。Kubernetesでは、この情報を使用してトラフィックをサービスにルーティングします。
サービスのDNS名は、次の2つの部分で構成されます。
ドメイン名は、DNS名のうち、ドメイン内のすべてのサービスに共通する部分です。サービス名は、DNS名のうち、各サービスに固有の部分です。
Kubernetesを使用することで、Oracle Container Engine for Kubernetesによってプロセスを効率化し、クラウドネイティブ・アプリケーションの開発予算を削減できます。Oracle Container Engine for Kubernetesは、Oracle Cloud Infrastructureの一部であり、追加コストを必要とせずに強力な機能を利用できます。無料のOracle Cloud Infrastructure試用版を今すぐお試しください。