データ回復力におけるNo.1 グローバルリーダー
CrowdStrikeのコンテンツ更新によって影響を受けるお客様向けのVeeamのガイダンス

Kubernetesクラスターとは

Kubernetesクラスターは、サーバーや仮想マシンなど、Kubernetesコンテナオーケストレーションシステムによって管理されるコンピューティングリソースの集合です。Kubernetesは、アプリケーションコンテナのデプロイとスケーリングをシンプルかつ簡単にするオープンソースのコンテナ化プラットフォームです。さまざまな環境やインフラストラクチャ間でコンテナを管理するための使いやすいAPIが提供されます。適切にオーケストレーションされたKubernetes環境には、信頼性の高いデータ保護も必要です。Kubernetesを既に利用している、または近い将来利用することを検討している場合、Veeamのネイティブ バックアップソリューション なら、クラスターと重要なワークロードの保護を維持できます。

Kubernetesクラスターのコンポーネント

Kubernetesクラスターは、次の2つのノード タイプで構成されます。マスターノードとワーカーノード。マスターノードは、クラスターの望ましい状態の維持、アプリケーションのスケジューリングとデプロイ、クラスターのネットワークの管理など、クラスターの全体的な状態を管理する役割を担うコントロールプレーンコンポーネントです。高可用性のKubernetesクラスターでは、フォールトトレランスのために複数のマスターノードが存在する可能性があります。

一方、ワーカーノードは、実際のコンテナ化されたアプリケーションが実行されるコンピューティング・リソースです。これらのノードはKubernetesに導入できる最小単位であり、少なくとも1つのコンテナが含まれるポッドをホストします。ワーカーノードはマスター・ノードと通信して、すべてが意図したとおりに実行されていることを確認します。

Kubernetesには次の2つのタイプのコンポーネントが存在します:コントロールプレーンコンポーネントとノードコンポーネント。コントロールプレーンのコンポーネントは、次のもので構成されています。

  • Kube-apiserver:APIサーバーは、Kubernetesコントロールプレーンの主要な制御メカニズムです。Kubernetes APIへのアクセスを提供し、要求と操作を処理してクラスターの状態を更新します。
  • Kube-scheduler:このコンポーネントは、リソース要件やサービス品質、その他の要件や制約に基づいてポッドをノードに配置する役割を担います。ノード容量、アフィニティ/アンチアフィニティのルール、その他の要因を考慮して、スケジュールに関する判断を行います。
  • Kube-controller-manager:このコンポーネントは、クラスターの全体的なステートを管理するコントローラープロセスを実行します。コントローラーの例としては、指定したアプリケーションで希望する数のレプリカが実行されていることを確認するレプリケーションコントローラーや、アプリケーションのロードバランスを管理するサービスコントローラーなどがあります。
  • etcd:これは、設定データやシステムの全体的なステートなど、Kubernetesによってクラスターの管理に必要なすべてのデータを格納するために使用される、一貫した分散型のキー値ストアです。

一方、個々のノードには、以下に示すコンポーネントが含まれます。

  • クベレット:このエージェントは各ワーカー ノードで実行され、コンテナがポッドで実行されていることを確認し、ノードと実行中のポッドの状態をコントロール プレーンに報告します。APIサーバーと通信して、アプリケーションの望ましい状態が維持されるようにします。
  • Kube-proxy:このコンポーネントはそれぞれのワーカーノードで実行されるネットワークプロキシであり、ネットワークルールを維持して、トラフィックが適切なポッドに正しく転送されるようにすることで、サービスの抽象化を可能にします。
  • コンテナランタイム:このソフトウェアは、Docker、containerd、CRI-Oといったコンテナを実行する役割を担います。Kubernetesでは、コンテナランタイムインターフェイスを介してさまざまなコンテナランタイムをサポートしています。

これらの両方のカテゴリがクラスター内で組み合わさることで、コンテナ化されたアプリケーションを導入して管理するための信頼性の高い一貫したプラットフォームがそれらを通じて提供されます。具体的には、Kubernetesクラスターにより、コンテナ化されたアプリケーションを大規模に管理するために必要な抽象化と自動化が提供され、開発者はコーディングに、運用チームはより効率的なインフラストラクチャの管理に専念できるようになります。

Kubernetesクラスターをどのように活用すべきか?

Kubernetesのセットアップ、構成、保守は、ほぼ全てKubernetes APIで行われています。このAPIは、システム機能を公開し、プログラムによるクラスターとノードの管理を可能にします。Kubernetes APIを操作するには、次のようないくつかの方法があります。

  • kubectl:Kubernetes APIを操作する主な方法は、kubectlコマンドライン ツールを使用することです。コマンドをAPI呼び出しに変換し、APIサーバーに送信します。
  • RESTful API呼び出し:curl、wgetなどのツールや、HTTPリクエストをサポートする任意のプログラミング言語を使用して、Kubernetes APIサーバーに対してRESTful APIコールを直接行うことができます。API呼び出しを認証および承認するには、適切なログイン情報とトークンを使用する必要があります。
  • クライアントライブラリ:Kubernetesは、Go、Python、Java、JavaScriptなどのさまざまなプログラミング言語用のクライアントライブラリを提供します。これらのライブラリは、好みの言語でKubernetes APIを操作するためのより便利で慣用的な方法を提供します。

Kubernetesでは、望ましい状態は、クラスター内のリソースの予想される状態を宣言的に表現したものです。ポッド、導入、またはデバイスを更新する際、そのステートはYAMLまたはJSON設定ファイルを使用して定義されます。その後、Kubernetesでは、リソースの実際のステートを、設定ファイルで指定されているステートに調整する作業が行われます。

望ましいステートには、コンテナイメージ、導入のレプリカの数、ポッドの環境変数などの情報が含まれます。また、サービスに使用される負荷分散の種類も含まれます。Kubernetesコントローラーは、これらのファイルを継続的に監視して、コンテナの 望ましい状態 に一致するように調整します。

この宣言型アプローチには、ポッドがクラッシュしたりノードがアクセス不能になったりした場合に自己修復するKubernetesの機能など、いくつかのメリットがあります。Kubernetesは、目的の状態を復元するための是正措置を自動的に実行します。また、クラスター リソースを使い慣れたバージョン管理ワークフローに沿って維持するのにも役立ち、ロールバックが簡単になります。

Kubernetesクラスターを設定する方法

最初は複雑に思えるかもしれませんが、Kubernetesならパワフルな抽象化と一貫性のあるAPIを利用できるため、大規模な アプリケーションの管理 作業がはるかに楽になります。とはいえ、インフラストラクチャに関してKubernetesクラスターの設定は独特であるため、プロセスの概要を把握しておくと役に立ちます。詳しく確認する前に、その導入要件を把握しておきましょう。

Kubernetesは、さまざまなハードウェアとVM設定で実行できます。正確な要件は、アプリケーションの規模とリソースの需要によって異なりますが、最小のクラスターであれば、各ノードには少なくとも2つのCPUコアと2GBのRAM、高性能の安定したネットワーク接続、そしてローカルストレージ、NAS、またはAmazon EBS、Google Persistent Disk、Azure Diskといったクラウドベースストレージにおける十分なストレージスペースが必要になります。

Kubernetesクラスターをセットアップする

Kubernetesクラスターは、オンプレミス、パブリッククラウド、あるいはGoogle Kubernetes Engine、Amazon Elastic Kubernetes Service、Azure Kubernetes ServiceなどのマネージドKubernetesサービスの使用など、ほぼ全ての環境に導入できます。マネージド型のルートを選択するとプロセスはシンプルになりますが、自己管理型のKubernetesではインフラストラクチャをより細かく制御できます。

セットアップには、Kubernetes APIと対話するコマンドライン ツールであるkubectlをインストールする必要があります。HTTP経由で接続し、ローカル コンピューターからインストールされ、クラスターに接続するように構成されます。

アプリケーションコンポーネントの定義

Kubernetesでコンテナ化されたアプリケーションは、アプリケーションコンポーネントの望ましいステートを定義する宣言型YAMLまたはJSON設定ファイルを使用して作成されます。主なコンポーネントは次のとおりです。

  • ポッド:1つ以上のコンテナを実行する、導入可能な最小単位
  • サービス:アプリケーションをネットワークまたはクラスターの他の部分に公開する方法を定義する
  • 導入:アプリケーションの望ましい状態を定義し、ローリング更新を管理する
  • ConfigMapとシークレット:コンテナイメージとは別に、設定データと機密情報を格納します

アプリケーションをデプロイする

クラスターは、設定ファイルを適用するために、アプリケーションの望ましいステートの達成に必要なリソースを作成するようKubernetesに指示するkubectlを使用して導入されます。一方、実際の設定ではかなりの微調整が必要になります。

  • コントロールプレーンを設定します。kube-apiserver、etcd、kube-scheduler、kube-controller-managerなどの必要なコンポーネントを使用してマスターノードを設定します。高可用性設定では、ロードバランサーの背後に複数のマスターノードが必要です。
  • ワーカーノードを構成します。kubelet、kube-proxy、コンテナランタイムなどの必要なコンポーネントを使用してワーカーノードを設定します。好みに応じて、Dockerやcontainerdなどのコンテナ ランタイムを構成する必要がある場合があります。
  • ネットワークを構成します。Kubernetesでは、Calico、Flannel、Weaveといったさまざまなネットワークソリューションをサポートしています。自身のニーズに最も適したソリューションを選択し、プロバイダーが提供するドキュメントに従って設定してください。
  • ストレージを構成します。選択したストレージソリューションに応じてストレージクラスとプロビジョニングを設定します。これには、ローカルボリューム、ネットワーク接続ストレージ、またはクラウドベースのストレージサービスの構成が含まれます。また、 信頼性の高いバックアップソリューションを導入することも重要です。
  • ロールベースのアクセス制御の設定:ユーザーとアプリケーションがKubernetes APIとリソースに安全にアクセスするためのロールと権限を定義します。
  • 監視とロギングの設定:PrometheusやGrafanaなどの監視ツールを設定して、メトリックとログを収集します。
  • セキュリティを構成します。Kubernetes APIサーバーの保護、シークレットの暗号化、ネットワークポリシーによる名前空間の分離の有効化など、セキュリティのベストプラクティスを実装します。

これらは、Kubernetesクラスターをデプロイして構成するための大まかな手順であることに注意してください。厳密なプロセスは、選択した導入オプション、インフラストラクチャ、特定の要件によって異なります。

Kubernetesには学習の処理と時間が必要になりますが、そのパワフルな抽象化機能とツールにより、コンテナ化されたアプリケーションの大規模管理が容易になります。練習と経験を積むことで、時間の経過とともにKubernetesの操作がより直感的になることがわかります。また、このパワフルなコンテナ化技術の学習と習得に役立つ多数のオンラインリソースも用意されています。

Kubernetesクラスターの管理

監視のために、Kubernetesには、クラスターの正常性とパフォーマンスの維持に役立つ組み込みツールが用意されています。一方、高度な監視、ログ記録、アラートを提供する外部およびサードパーティのツールとプラットフォームもあります。

Kubernetesでは、Horizontal Pods Autoscaler(HPAとも呼ばれる)を使用して、手動または自動で、需要に基づいてアプリケーションを簡単にスケールアップまたはスケールダウンできます。アプリケーションをセキュリティで保護し、最新の状態に保つことで、アプリケーションのパフォーマンスを長期間維持できます。Deployment構成を更新することで、ダウンタイムなしでアプリケーションのローリングアップデートを実行できます。

Veeamを今すぐ利用開始する方法

Kubernetesを使い始めるのは大変なことのように思えるかもしれません。しかし、適切なアプローチとリソースがあれば、すぐに熟練度を高めることができます。まずは、Kubernetesエコシステム内の一般的なソリューションとベストプラクティスを確認しましょう。貴社固有のニーズを特定して、KubernetesとVeeamのネイティブバックアップソリューションを組み合わせることで、これらのニーズにどう対処できるかを検討します。

開始する準備が整ったら、Kubernetes専用に設計された次世代のネイティブバックアップソリューション、Veeam Kastenについて確認してください。無償で使用できるCommunity Editionに登録して、バックアップ戦略の構築を今すぐ開始しましょう。適切にオーケストレーションされたKubernetes環境は、信頼できるデータ保護なしでは実現できないことを忘れないでください。Kubernetesを用いたコンテナ化の冒険において、Veeamを信頼できるパートナーにしましょう。

今すぐ開始する

5つの理由

デモを見る

Veeamを通じてあらゆる脅威に対するデータの回復力を実現する方法とは

5つの理由

お問い合わせ

貴社に最適なソリューション選びをサポートします

5つの理由

Veeam R&Dフォーラム

ご利用のVeeam製品やソフトウェアに関するサポートを受けることができます