Skip to Content

Kubernetes クラスタとは?

青色のスレッドは、暗い背景でさまざまなノードをクロスして接続し、ネットワーク図に似ています。
※このページの内容が日本語である場合は、機械翻訳システムで翻訳したものです。

Kubernetes は、デプロイメント、スケーリング、運用を自動化する堅牢なシステムを提供することで、コンテナ化されたアプリケーションの管理方法に革命をもたらしました。Kubernetes の中核にあるのは、効率的なコンテナ・オーケストレーションに不可欠なクラスタの概念です。Kubernetes クラスタを理解することは、コンテナ技術を最大限に活用しようとする組織にとって非常に重要です。

この記事では、Kubernetes クラスタとは何か、そのコンポーネント、設定方法、管理のベストプラクティスについて解説します。

Kubernetes クラスタとは?

Kubernetes クラスタは、コンテナ化されたアプリケーションの実行と管理のために連携するマシン(ノード)のグループです。Kubernetes クラスタの主な目的は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化することです。これは、次のようなユーザーにとって重要なメリットをもたらします。

  • スケーラビリティの向上:Kubernetes クラスタは、柔軟なスケーラビリティを提供します。必要に応じてノードを追加または削除することで、アプリケーションのスケールアップやスケールダウンを簡単に行うことができます。例えば、ピーク・トラフィック期間中にノードを追加して、増加した負荷を処理することができます。逆に、低需要期間にクラスタをスケールダウンしてリソースを節約できます。
  • 耐障害性の向上:Kubernetes クラスタは、高可用性を実現するように設計されています。レプリケーションを通じて、重要なアプリケーションを複数のノード間で複数のポッドで実行します。ノードに障害が発生した場合、Kubernetes は障害が発生したコンテナを自動的に再起動し、正常なノードで再スケジュールします。これにより、ノード障害が発生した場合でも、アプリケーションの可用性と運用性が維持されます。
  • シンプルな管理:Kubernetes クラスタは、コンテナ化されたアプリケーションの管理を合理化します。Kubernetes は、個々のノードの構成を手動で管理するのではなく、YAML で記述された宣言的な構成ファイルを使用します。これらのファイルはアプリケーションの望ましい状態を指定し、Kubernetes は状態が維持されるよう管理します。

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

Kubernetes クラスタは、コントロール・プレーンとワーカー・ノードの 2 つの主要なコンポーネントで構成されています。これらの各コンポーネントは、クラスタの管理とコンテナ化されたアプリケーションの実行において特定の役割を果たします。

コントロール・プレーン

コントロール・プレーンは、Kubernetes クラスタの頭脳として機能し、決定を行い、ワーカー・ノードにコマンドを発行します。以下の主要なコンポーネントで構成されています。

  • API サーバー:API サーバーは、クラスタの中央通信ハブです。これにより、Kubernetes API が公開されます。Kubernetes API は、全ての管理タスクとクラスタとのインタラクションのエントリー・ポイントとして機能します。kubectl などのユーザーやツールは、API サーバーを介してクラスタと対話し、コマンドの送信、デプロイメントの管理、クラスタ情報へのアクセスを行います。
  • etcd:etcd は、高可用性を備えた分散型キーバリュー・ストアであり、クラスタの状態に関する信頼できる唯一の情報源として機能します。ポッドの定義、サービスの詳細、必要な展開状況など、クラスタ構成に関する重要な情報が保存されます。このデータは複数の etcd ノードにレプリケートされ、一貫性と耐障害性を確保します。
  • スケジューラ:スケジューラは、クラスタ内のワーカー・ノードにワークロード(ポッド)を割り当てる責任があります。リソースの可用性、ノード容量、ポッドのアンチアフィニティ・ルールなどの要素を考慮して、スケジュールを決定します。例えば、スケジューラは、リソースの使用率を向上させるためにポッドを異なるノードに分散させたり、十分な容量を持つノードでリソース要件の高いポッドに優先順位を付けることができます。
  • コントローラ・マネージャーー:コントローラ・マネージャーーは、クラスタ内の全てのコントローラを管理するための中心的なポイントです。コントローラは、クラスタの状態を継続的に監視し、クラスタの実際の状態が構成で定義された希望の状態と一致することを確認するための是正措置を取る責任があります。コントローラ・マネージャーは、複数のコア・コントローラを管理しており、それぞれに特定の目的があります。

ワーカー・ノード

ワーカー・ノードは、クラスタの主力となる存在です。コンテナ化されたアプリケーションを実際に実行するマシンです。各ワーカー・ノードには、コンテナの管理と実行を担当する複数のコンポーネントがあります。

  • Kubelet:kubelet は、各ワーカー・ノード上で実行されるエージェントです。ノード上のコントロール・プレーンの代表として機能し、ノードに割り当てられたポッドのライフサイクルを担当します。Kubelet は、ポッド内のコンテナが、ポッドの仕様に従ってダウンロード、構成、実行されるようにします。また、コンテナの健全性を監視し、障害が発生したコンテナを再起動し、コンテナが安全に実行するために必要なシークレットを取得します。

  • Kube-proxy:Kube-proxy は、各ワーカー・ノードで実行されるネットワーク・プロキシです。クラスタ用に定義されたネットワーク・ポリシーを実装し、ポッドが相互に通信し、外部サービスと通信できるようにします。Kube-proxy は、ネットワーク・ルーティング・ルールを維持し、サービス名をポッド IP アドレスに変換することで、ポッドがクラスタ内のサービスを検出して通信できるようにします。

コントロール・プレーンとワーカー・ノード内のこれらのコンポーネントを連携させることで、Kubernetes はコンテナ化されたアプリケーションを大規模に効果的に管理し、オーケストレーションを行うことができます。

Kubernetes クラスタの設定

Kubernetes クラスタは、管理対象の Kubernetes サービスを使用するか、手動で展開するかの 2 つの主要な方法で設定できます。

マネージド Kubernetes サービス

Google Cloud Platform(GCP)とGoogle Kubernetes Engine(GKE)、Amazon Web Services(AWS)とElastic Kubernetes Service(EKS)、Microsoft Azure と Azure Kubernetes Service(AKS)などのクラウド・プロバイダは、マネージド Kubernetes サービスを提供します。これらのサービスは、Kubernetes クラスタ・インフラのプロビジョニング、構成、管理の複雑さに対応します。クラスタ構成を定義するだけで、サービスが重い作業を処理するため、コンテナ化されたアプリケーションの展開に集中できます。

手動デプロイメント

Kubernetes クラスタは、kubeadm などのツールを使用して手動でデプロイできます。Kubeadm は、Kubernetes クラスタをブートストラップするためのツールキットです。この方法では、指定されたマスター・ノードに kubeadm をインストールし、クラスタ内の全てのワーカー・ノードに kubelet エージェントをインストールします。

Kubernetes クラスタの手動設定

前提条件

  • インフラ:仮想マシンやクラウド・インスタンスなど、十分なインフラを確保します。
  • コンテナの実行時間:全てのノードにコンテナや Docker のようなコンテナ・ランタイムをインストールします。

ステップ 1:kubeadm、kubelet、kubectl のインストール

全てのマシン(マスター・ノードとワーカー・ノード)で、ディストリビューションのパッケージ・マネージャーを使用して、必要な kubeadm ツールをインストールします。

# Update package lists (replace 'your_package_manager' with your actual package manager like apt-get or yum)
 $ sudo your_package_manager update
 
 # Install kubeadm, kubelet, and kubectl
 $ sudo your_package_manager install -y kubeadm kubelet kubectl

注記:一部のシステムでは、インストール後に追加の構成が必要になる場合があります。選択したオペレーティング・システム固有の詳細については、Kubernetes の公式ドキュメントを参照してください。

FlashArray をテストドライブ

ピュア・ストレージはブロック/ファイル・ストレージをシンプルにします。ハンズオンでお試しいただけます。

テストドライブのご用命

ステップ 2:コントロール・プレーンの初期化(マスター・ノード)

マスター・ノードとして機能するマシンを 1 つ選択します。マスター・ノードで次のコマンドを実行し、コントロール・プレーンを初期化します。このプロセスは、構成ファイルを生成し、ワーカー・ノードにジョイン・コマンドを提供します。

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • kubeadm init:このコマンドは、マスター・ノード上のコントロール・プレーンを初期化します。
  • --pod-network-cidr=10.244.0.0/16:このオプションは、ポッド・ネットワークの CIDR 範囲を指定します。この値は、ネットワーク構成のニーズに応じて調整できます。

初期化コマンドを実行した後、kubeadm はワーカー・ノードの結合コマンドを出力します。ステップ 5 で必要となるため、このコマンドに注意してください。

ステップ 3:kubectl の構成

マスター・ノードで、生成された管理構成ファイルをローカルの kubectl 構成ディレクトリにコピーします。これにより、kubectl コマンドを使用してクラスタを管理できます。次のコマンドで実行できます。

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

ステップ 4:ポッド・ネットワークの展開

ポッド・ネットワーク・プラグインは、クラスタ内のポッド間の通信を可能にします。Flannel は、ポピュラーなポッド・ネットワーク・オプションです。次のコマンドを使用して、マスタノードに Flannel を展開できます。

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

ステップ 5:クラスタへのワーカー・ノードの参加

各ワーカー・ノードで、マスター・ノードの初期化ステップ(ステップ 2)中に kubeadm が提供する結合コマンドを実行します。このコマンドは、ワーカー・ノードをコントロール・プレーンに登録し、コンテナ化されたワークロードを実行する準備をします。join コマンドは通常、次のように表示されます。

$ sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • <master_ip_address>:マスター・ノードの IP アドレスに置き換えます。
  • <token>:マスター・ノードの初期化プロセス中に生成されたトークンに置き換えます。
  • <hash>:これを、kubeadm init コマンド出力によって提供される検出トークン CA 証明書ハッシュに置き換えます。

ステップ 6:クラスタの健全性を確認する

全てのワーカー・ノードがクラスタに加わったら、kubectl コマンドを使用してクラスタの健全性を確認します。

$ kubectl get pods -n kube-system
Evergreen//One

Evergreen//One でリスクを軽減

ダウンタイムはありません。ピュア・ストレージは、容量のニーズに常に確実に応えます。

Evergreen//One について詳しく見る

Kubernetes クラスタの管理

Kubernetes クラスタの効果的な管理は、性能と信頼性を維持するために不可欠です。これには、クラスタ内のノードのスケーリング、アップグレード、更新が含まれます。

クラスタのスケーリング

Kubernetes は水平スケーリングを提供し、ワークロードの需要に応じてワーカー・ノードの数を簡単に調整できます。

  1. ノードの追加(スケールアップ)
    1. 新しいノードを準備する:新しいノードが、目的の Kubernetes バージョンの推奨システム要件を満たしていることを確認します。Docker やコンテナ化されたコンテナの実行時間、kubelet エージェントなど、必要なソフトウェアをインストールします。オペレーティング・システムに基づくインストール手順について詳しくは、Kubernetes の公式ドキュメントを参照してください。
    2. ノードをクラスタに参加させる:既存のクラスタに参加するには、新しいノードで kubeadm join コマンドを使用します。クラスタの初期セットアップでは、以下の情報が必要になります。
      • マスター・ノードの IP アドレス:マスター・ノードの IP アドレスです。
      • 参加トークン:このトークンは、コントロール・プレーンの初期化中に生成され、出力で提供されます。

以下は、kubeadm join コマンドの例です。

$ sudo kubeadm join <master_ip_address>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

  • マスター・ノードの<master_ip_address>実際の IP アドレスに置き換えます。
  • コントロール・プレーンの<token>初期化中に生成されたトークンに置き換えます。
  • コントロール・プレーンの<hash>初期化出力のディスカバリ・トークン CA 証明書ハッシュに置き換えます。

ノードの削除(スケールダウン):
ノードを削除する前に、まずノードをドレインすることが重要です。ドレインは、ノードからポッドを優雅に取り出し、健全なノードでスケジュールすることで、アプリケーションのダウンタイムを保証します。

ノードのドレイン:kubectl drain コマンドを使用して、削除するノードをドレインします。このコマンドは、DaemonSets(重要なシステム・サービス)の実行を継続させながら、ノードからポッドを削除します。

$ kubectl drain <node-name> --ignore-daemonsets

削除する<node-name>ノードのホスト名または IP アドレスに置き換えます。

 

ノードの削除:一旦ドレインされると、kubectl delete node コマンドを使用してクラスタからノードを安全に削除できます。

 

$ kubectl delete node <node-name>

削除する<node-name>ノードのホスト名または IP アドレスに置き換えます。

また、コントロール・プレーンのアップグレード、ワーカー・ノードのアップグレード、ローリング・アップグレードなど、他の管理操作も実行できます。

最高の性能を維持:監視、ロギング、ストレージ

Kubernetes クラスタを健全に保つためには、効果的な監視とログ記録が不可欠です。Prometheus や ELK Stack などのツールは、リソースの利用率、ポッドの健全性、全体的な性能に関する深い知見を提供し、アプリケーションに影響を与える前に問題をプロアクティブに特定して対処できるようにします。Kubernetes は、さまざまなサードパーティ・ソリューションとも統合され、柔軟性を提供します。

効率的なデータ管理は、ステートフルなアプリケーションにとって重要です。ピュア・ストレージの Portworx は、Kubernetes クラスタとシームレスに統合できる、強力でコンテナネイティブなソリューションを提供します。

Portworx は、ワークロードのストレージを合理化します。

  • 永続的なボリュームの提供:ポッドの再起動時や再スケジュール時でも、データを確実に保持します。
  • データ保護とディザスタ・リカバリの提供:スナップショットとレプリケーションを提供し、インシデント中のダウンタイムを最小限に抑えます。
  • 管理の簡素化:ストレージ・リソースのプロビジョニング、監視、管理のための使いやすいインターフェースを提供します。

まとめ

Kubernetes クラスタは、最新のコンテナ・オーケストレーションに不可欠であり、スケーラビリティ、耐障害性、アプリケーション管理の簡素化を提供します。Kubernetes クラスタのコンポーネント、セットアップ・プロセス、管理方法を理解することは、その可能性を最大限に引き出すために不可欠です。ピュア・ストレージの Portworx は、Kubernetes とシームレスに統合し、コンテナ化されたワークロードの全体的な効率性と信頼性を向上させる堅牢なストレージ機能を提供します。

こちらの資料もご覧ください!

02/2025
Deploying Portworx on Google Distributed Cloud Anthos with vSphere
This Portworx reference architecture contains a validated architecture and design model to deploy Portworx on Anthos running on vSphere.
リファレンス・アーキテクチャ
28 pages

おすすめのリソースとイベント

アナリストレポート(日本語版)
シンプルを極めたストレージで IT を変革

NAND Research レポート:業界をリードするデータ・ストレージ・プラットフォームが、あらゆるワークロードをサポート。IT 部門の管理負荷とコストの削減を可能にします。

レポートを読む
テックトーク
API でストレージの可能性を最大化

API が可能にするシームレスな性能管理。ピュア・ストレージの API は、自動化と最適化を容易にします。是非詳しくご覧ください!

Web セミナーを視聴する
リソース
ストレージの未来形:AI 時代の新原則

AI をはじめとする新潮流がデータ・ストレージのニーズを変えています。成功のための考え方と最新の対策を解説します。

eBook をダウンロード
リソース
ストレージの購入から、プラットフォームの導入へのシフト

エンタープライズ・ストレージ・プラットフォームの選び方を、要件、構成要素とともに解説しています。

レポートを読む
ご相談・お問い合わせ
ご質問・ご相談

ピュア・ストレージ製品および認定についてのご質問・ご相談を承っております。ご連絡をお待ちしております。

デモのご用命

ライブデモのご用命を承っております。ピュアがいかにしてデータを成果に変えるお手伝いができるかをご説明します。 

ピュア・ストレージ・ジャパン株式会社

〒100-0014 東京都千代田区永田町 2 丁目 10-3 東急キャピトルタワー 12 階

 

一般: info-japan@purestorage.com

メディア: pr-japan@purestorage.com

03-4563-7443(総合案内)

閉じる
このブラウザは現在サポートされていません。

古いブラウザには、セキュリティ・リスクが存在する場合があります。ピュア・ストレージの Web サイトをより快適にご利用いただけるよう、最新のブラウザにアップデートしてください。