オープンソース

Kubernetesの永続ストレージ

Kubernetesの永続ストレージ

Kubernetesでは、様々な形式のストレージを利用することが可能です。KubernetesのPodには、StatelessとStatefulという2つ種類があります。Statelessは、ストレージを持たないPodで、Dockerコンテナが破棄されるとデータは消失します。そのため、Dockerコンテナで扱うデータを保管したい場合には、StatefulなPodを使い、永続ストレージを設定して保管する必要があります。ここでは、後者の永続ストレージについて紹介します。

Kubernetesの永続ストレージ画面

Kubernetesの永続ストレージとしては、以下の3種類あります。アクセス方式の違いから次のように用途が異なってきます。

  • NFSサーバ

    Kubernetesの永続ストレージとしてNFSサーバを利用する場合には、Podにマウントして利用します。複数のPodからアクセスすることができ、大規模で負荷分散が必要な場合に利用することができます。そのため、WWWサーバのサービスを提供するストレージの場合には、NFSサーバがよく利用されます。

  • ブロックストレージ

    Kubernetesが扱うデータの整合性を考慮することができます。書き込み要求の排他性により1台のPodのみからアクセスする場合に利用できます。RDBなどの用途に向いています。

  • オブジェクトストレージ

    Kubernetesクラスタ内外からS3 API互換でアクセスする場合に利用できます。HTTPSプロトコルなので、Kubernetes外部への連携も可能です。

Kubernetesで永続ストレージを利用する場合の注意点

Kubernetesでは、マスターノードがPodの状態を管理しています。Kubernetesのマスターノードは、指定した数だけPodのレプリカを動作させます。レプリカが停止した場合には、Kubernetesのマスターノードが自動的に新しいレプリカを起動し、常に指定してした数のPodのレプリカを維持します。

このように、Kubernetesでは、同じDockerコンテナを別々のノードで動作させることができます。これにより冗長性が担保され、ホストが停止した場合の影響を最小限にすることができます。Kubernetesで永続ストレージを利用する場合には、必ずデータの冗長化を考慮する必要があります。

Kubernetesの永続ストレージの冗長化を実現するためには、次のような仕組みが必要になります。

  • Dockerコンテナごとのデータを冗長化できること
  • 大きなストレージをDockerコンテナごとに切り出して利用できること
  • ネットワーク越しにディスクを利用できること

Kubernetesの永続ストレージは用途に合わせて選択可能

NFSサーバ(ファイルストレージ)

Kubernetesの永続ストレージとしてNFSサーバを利用することで、データの冗長性を維持することができます。NFSサーバ専用機器は、一般的に大きなディスク容量を持つ製品が多く、非常に高価です。特に、冗長性を維持できる製品は高価になります。

Ceph(オブジェクトストレージ)

KubernetesのストレージにCephを利用すると、動的に拡張していくことができる高可用ストレージを実現することができます。Cephは、データを任意のサイズに分割して分散配置でき、冗長性も確保することができます。また、ファイルストレージにもブロックストレージにも対応できるという特徴があります。オブジェクトストレージは、ファイルストレージよりも、データの分散管理や複製が行いやすく、大容量のデータを保存するのに適しています。Cephで分散ストレージを構成する場合には、最低3台の構成となります。

DRBD SDS(ブロックストレージ)

DRBDもKubernetesのストレージとして利用可能です。DRBD SDSを使うと、高可用ストレージを作ることができます。Cephとは異なり、ブロックストレージ専用ですが、書き込みと読み込みの性能がCephと比較して高速です。そのためデージーネットでは、ブロックストレージとしては、DRBD SDSを推薦しています。また、Cephが最低3台からの構成なのに対して、DRBD SDSは2台から構成可能なため、スモールスタートにも適しています。

Minio(オブジェクトストレージ)

Minioはシンプルなオブジェクトストレージです。一台から起動可能で容易に利用できます。S3互換のインタフェースからファイルのアップロードが可能です。ただし、ノード追加やストレージ容量の増加ができないため、あらかじめ決まったサイズの中で運用していくことになります。Minioでノードをまたいでデータを冗長化するためには、最低3台の構成となります。

デモのお申込み

もっと使い方が知りたい方へ
Kubernetesの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Kubernetesのデモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方

デモの申し込みイメージ


OSS情報「Kubernetes」

Kubernetes〜コンテナ管理の課題を解決するOSS〜
ここでは、Dockerコンテナの管理を自動化するためのソフトウェア「Kubernetes」を紹介します。
Kubernetesクラスタの構築
ここでは、CentOS7に最小限のKubernetesクラスタを構築する方法について説明いたします。
KubernetesのPod機能
ここではPod機能について説明いたします。
Kubernetesのレプリカセットとデプロイメント
ここではデプロイメントという機能を利用してレプリカセットを作成する方法について説明いたします。
Kubernetesのアーキテクチャ
ここではアーキテクチャについて説明いたします。
Kubernetesのコンテナアップデート
ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について説明いたします。
Kubernetesのローリングアップデート
ここでは、Kubernetesのローリングアップデート機能の概要について説明いたします。
Kubernetesのダッシュボード
ここでは管理用のダッシュボードについて説明いたします。
Kubernetesの永続ストレージ
ここでは永続ストレージについて説明いたします。
Rancher〜Kubernetesの管理ソフトウェア〜
ここでは、Kubernetesの管理ソフトウェアのRancherについて紹介します。
GitLab〜Dockerのプロジェクト管理とレジストリ〜
GitLabは、ウェブ型のGitリポジトリマネージャーです。ここではGitLabのコンテナレジストリについて説明いたします。
DRBD-SDSとKubernetes
ここではDRBD-SDSを利用することでサービスの冗長化を実現させる手法について説明いたします。
Falco〜コンテナの侵入・改ざん検知ツール〜
ここではKubernetesを代表するコンテナ環境をターゲットにしているコンテナランタイムセキュリティソフトウェアのFalcoについて説明いたします。
Trivy〜コンテナイメージの脆弱性診断ツール〜
Trivyは、コンテナイメージの脆弱性診断ツールです。ここではTrivyの機能や特徴などについて説明いたします。
コンテナ型仮想化に関連したOSS
ここでは、コンテナ型仮想化に関連したOSSを紹介いたします。

Kubernetesの永続ストレージの先頭へ