SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

Nutanix Karbon とは?

ストレージ / HCI
2021.02.03

Nutanix Karbon は、Nutanix HCI にてマネージド Kubernetes クラスタを提供するソリューションです。このブログでは、Nutanix Karbon の概要について、実機スクリーンショットも含めてご紹介します。

※この記事は Nutanix Karbon 2.2.0 をベースとしています。その後の製品アップデート等については最新のメーカー ドキュメント等もご確認ください。

Kubernetes と仮想化基盤の関係

まず、Nutanix HCI による仮想化基盤と、Kubernetes がどのような関係にあるのかご説明します。

Kubernetes は、多数のコンテナを管理できる仕組みです。Google によってオープンソースとして公開されたもので、大規模な分散システムのワークロードに対応できるように作られています。複数台の「コンテナ ホスト」でクラスタを構成して、コンテナの自動配置、障害発生時の再起動、スケールアウトやスケールインといったオーケストレーターとして機能します。

また、一般的な Kubernetes クラスタを構成するコンポーネントは、おおまかに分けると、クラスタを管理する「制御プレーン」と、本来の目的となるアプリケーションのコンテナを起動する「ワーカー」があります。

nutanix-karbon-01.PNG

アプリケーションの基盤を検討する際に、ハイパーバイザー上で「仮想マシン」を稼働させるサーバー仮想化技術と、「コンテナ ホスト」とで、どちらを利用すべきか比較されることがあります。
しかし、現実的にはこの2つの技術要素は、組み合わせて利用されるケースが多くあります。これは、コンテナ ホストとなるサーバの用意においても、「物理マシンよりも仮想マシンであるほうが運用しやすい」ことなどが理由と考えられます。

たとえば、既存のオンプレミス仮想化基盤やパブリッククラウドに、ゲスト OS として Linux をインストールした仮想マシンを用意します。そこに Docker のようなコンテナのランタイムをインストールすると、コンテナ ホストになります。これらが Kubernetes のノードとしても利用されるということです。(ただし、Kubernetes のコンテナ ホストで必ずしも Docker が利用されるというわけではありません)

さらに、Kubernetes の制御プレーンやワーカーとして動作するソフトウェア群が、コンテナとして起動される実装方式もあります。これから紹介する Nutanix Karbon でも、その方式が採用されています。

そうした背景もあり、オンプレミスで Kubernetes クラスタを用意したい場合には、ノードとなる多数の仮想マシンを稼働させる仮想化基盤として、拡張性の高い HCI も選択肢のひとつとなります。

Nutanix Karbon とは

Nutanix Karbon は、Nutanix HCI にてマネージド Kubernetes クラスタを提供するソリューションです。Kubernetes クラスタの作成、アップデート、削除といったライフサイクルを、シンプルな手順で管理できるようになります。

Kubernetes クラスタの構築、増築、アップデートといった作業は、技術的に簡単とは言えません。そして、Kubernetes のソフトウェア更新頻度も短く、定期的にアップデートが必要となります。Nutanix Karbon を利用することで、「Kubernetes のインフラ運用」をシンプルにできます。

それでは、Karbon の特徴をいくつかご紹介します。

Kubernetes ノードの OS イメージのライフサイクル管理ができる

Kubernetes ノードの仮想マシンで利用される Linux OS イメージは、Nutanix にて作成・提供されます。OS イメージのダウンロード、HCI でのイメージ管理、作成済みの Kubernetes クラスタの OS イメージ アップデートといった運用が Karbon の機能で実施できます。なお、Karbon 2.2 の時点で提供されている OS イメージは CentOS 7 ベースです。

Kubernetes クラスタのライフサイクル管理ができる

シンプルな Web UI REST API から Kubernetes クラスタを作成でき、当然ながらクラスタの削除もできます。作成後の Kubernetes クラスタのアップデートにも対応しています。
Kubernetes はアップストリーム版のソフトウェア(Nutanix が特別なカスタマイズをしていないソフトウェア)を利用しており、開発者は一般的な Kubernetes クラスタとして扱うことができます。

作成するクラスタの種類は、Development(開発)またはProduction(商用)のいずれかを選択できます。Production であれば複数ノードでの冗長構成となり、ローリング アップデートが可能です。

運用にむけて Kubernetes クラスタがセットアップされる

Karbon で作成された Kubernetes クラスタのソフトウェアとしてはアップストリーム版のものが利用されていますが、Nutanix HCI 上で稼働するうえでの便利な機能がいくつか自動セットアップされます。たとえばデフォルトで、CNI (Container Network Interface)、Nutanix CSI (Container Storage Interface) などが設定され、クラスタのログを確認できるダッシュボードも利用できるようになります。

Nutanix Karbon の構成要素

ここからは、Karbon の主な構成要素をご紹介します。まず、Karbon の構成要素をおおまかに図示すると下記のようになります。

nutanix-karbon-02.PNG

Nutanix HCI と Prism Element

Karbon は、Nutanix HCI 上に Kubernetes クラスタを作成します。Nutanix HCI 自体はマルチ ハイパーバイザー対応ですが、Karbon(バージョン 2.2 時点)に対応するハイパーバイザーは AHV のみです。

Nutanix HCI を実現する「CVM (Controller VM)」のソフトウェアである AOS には複数のエディションがあり、StarterProUltimate の順で利用可能な機能が追加されます。Karbon はそのうち最も基本的な「Starter」から利用可能です。

Nutanix HCI では、ハイパーバイザーをインストールしたノードで「Nutanix クラスタ」を構成し、仮想化基盤を、このクラスタ単位で管理することになります。Nutanix クラスタ単位での管理ツール「Prism Element」は、CVMWebブラウザからアクセスして利用します。

Prism Central

Prism Central は、Nutanix クラスタを統合管理できる仮想アプライアンスです。複数の Nutanix クラスタ、つまり前述の「Prism Element」を管理することができる、Prism Element と同様の操作感をもつ Web コンソールを提供します。

そして、Nutanix のソリューションの多くは、Prism Central をベースとして提供されています。たとえば、マイクロセグメンテーションを提供する Nutanix Flow や、アプリケーション ライフサイクル管理をする Nutanix Calm といった機能も、Prism Central をベースとしています。Karbon も、Prism Central に組み込まれている機能であり、Prism Central Web コンソールから有効化し、操作することになります。

Prism Central の解説については、下記ブログも参考にしてください。

Karbon

前述のとおり、この投稿の主役であるマネージド Kubernetes ソリューションです。実体としては、Prism Central の仮想アプライアンスに組み込まれています。Karbon の有効化は、Prism Central で「Karbon を有効にする」ボタンをクリックするだけです。

ちなみに Karbon の サービス と UI は、Prism Central の仮想アプライアンス内部では Docker コンテナとして起動されています。そのためコンポーネントごとに独立性が高く、Karbon 自体もアップデートしやすい実装となっていると考えられます。

nutanix-karbon-03.PNG

Kubernetes ノードの OS イメージ

Kubernetes ノードになる仮想マシンの OS イメージは、Karbon UI からダウンロードできます。これは Nutanix によって提供されるもので、CentOS ベースで作成されています。
OS イメージの管理には、ISO イメージ ファイルや OS ディスク イメージを管理する、Nutanix AHV の「イメージ サービス」とよばれる機能が利用されています。

nutanix-karbon-04.PNG

Kubernetes クラスタ

Karbon による Kubernetes クラスタは、ハイパーバイザー上で稼働する仮想マシンとして作成されます。
Kubernetes クラスタは、つぎの 3種類のノードで構成されます。

  • 制御プレーンにあたる「Master ノード」
  • 構成情報を管理する「etcd ノード」
  • ワークロードを稼働させる「Worker ノード」

クラスタ作成時に「Development Cluster」(開発用)を選択すると各種類1ノードずつ、つまり合計3台の仮想マシンがデプロイされます。そして「Production Cluster」(いわゆる本番用)を選択すると、全種類のノードがそれぞれ複数デプロイされ、冗長構成となります。なお、OS イメージは、各ノードで、共通のものが使用されます。

Nutanix CSI (Container Storage Interface)

一般的にコンテナによるアプリケーション展開では「コンテナを削除してもデータを残す」といった、データ永続化が課題となります。Kubernetes には、コンテナが扱うデータの永続化のために Persistent VolumePV) とよばれるストレージの利用方法が用意されています。

Nutanix では PV のバックエンドとして、Nutanix Volumes による iSCSI ボリューム、または Nutanix Files による NFS 共有が利用できます。Karbon によって作成される Kubernetes クラスタでは、この機能連携が自動的に設定されます。

Nutanix Volumes および Nutanix Files の紹介については下記ブログも参考にしてください。

Karbon UI での操作イメージ

最後に、Karbon による Kubernetes 運用の入口となる、クラスタ作成の様子をご紹介します。
具体的な手順については、製品ドキュメントである Nutanix Karbon Guide (Karbon 2.2) も合わせてご確認ください。

Karbon UI での Kubernetes クラスタ作成

Karbon UI でのクラスタ作成は、「Create Kubernetes Cluster」から開始します。Kubernetes クラスタの種類として、Development Cluster または Production Cluster を選択できます。

nutanix-karbon-05.PNG

Kubernetes バージョンを選択できます。選択肢にない新しいバージョンの Kubernetes を利用するには、Karbon OS イメージのアップデートが必要となりますが、そのアップデートも Karbon の機能から実施できます。

nutanix-karbon-06.PNG

Kubernetes ノードの仮想マシンを接続するネットワークを選択します。これは、あらかじめ Prism で作成した、Nutanix 組み込みの IPAMIP アドレス管理)が有効化されているものを選択します。

今回の例では「Development Cluster」を選択しているため、Worker ノードのみ複数台指定できます。一方、「Production Cluster」であれば、Master / Worker / etcd ノードを複数台指定できるようになります。

nutanix-karbon-07.PNG

Kubernetes クラスタ内での通信で利用される、2つのネットワーク(サービス ネットワークと Pod ネットワーク)に設定する IP アドレスの範囲を指定します。なお、Karbon 2.2 では、デフォルトの CNIContainer Network Plugin)として Flannel がインストールされますが、Calico を選択することも可能です。

nutanix-karbon-08.PNG

最後に、Kubernetes Nutanix CSI プラグインを利用する「Storage Class」の設定値を入力します。CSI からNutanix クラスタに接続するためのユーザ・パスワードや、ボリュームを配置する Nutanix のストレージ領域などを指定します。ちなみに、Nutanix HCI では仮想マシンやボリュームを配置するストレージ領域を「ストレージ コンテナ」と呼びますが、これは Docker などのコンテナとは関係ない Nutanix 独自の用語です。

この画面で「Create」をクリックすると、実際に Kubernetes クラスタ作成が開始されます。

nutanix-karbon-09.PNG

Kubernetes クラスタ作成の進捗は、Karbon UI から確認できます。処理が完了すると Status が「Healthy」になり、Kubernetes が利用可能になります。

nutanix-karbon-10.PNG

Karbon で作成された Kubernetes クラスタ

この Kubernetesクラスタは「Development Cluster」として作成したので、Master / Worker / etcd の各ノードが 1台ずつ、合計3ノードがデプロイされています。Prism Element または Prism Central の「仮想マシン」メニューなどから、ノードとしてデプロイされた仮想マシンを確認できます。

nutanix-karbon-11.PNG

Karbon で作成された Kubernetes クラスタは、kubectl で操作できます。

nutanix-karbon-12.PNG

このように作成された Kubernetes クラスタは、Kubernetes のソフトウェアや OS イメージのアップデートといった、ライフサイクル管理も Karbon で実施できるようになります。また今回の例は開発環境むけの「Development Cluster」として作成したため各ノードが1台ずつでしたが、「Production Cluster」として作成したクラスタであれば、複数台での構成となるためローリング アップデートにも対応しています。

Karbon は、実際のソフトウェアによる無償オンライン評価環境である「Nutanix Test Drive」でも操作を体験できます。オンプレミスに Kubernetes クラスタが必要となった際の選択肢の一つとして検討してみてはいかがでしょうか。

参考情報

Nutanix Karbon
https://www.nutanix.com/jp/products/karbon

Karbon Test Dive
https://www.nutanix.com/test-drive-kubernetes-management

Nutanix Karbon Guide (Karbon 2.2)
https://portal.nutanix.com/page/documents/details?targetId=Karbon-v2_2:Karbon-v2_2

Karbon Platform Services
今回紹介した Karbon がソリューションの対象とするのは「Kubernetes クラスタを運用する」部分のみです。一方、Nutanix からは、Kubernetes を活用する PaaS として、このソリューションとは別の「Karbon Platform Services」も提供されています。
https://www.nutanix.com/jp/products/karbon/platform-services

関連記事はこちら

著者紹介

SB C&S株式会社
ICT事業本部 販売推進・技術本部 技術統括部 第1技術部 1課
渡辺 剛 - Go Watanabe -

VMware vExpert