CNCF Platform Certified KubernetesなNutanixのマネージドKubernetesサービスKarbonがGAリリース

![image.png](https://qiita-image-store.s3.amazonaws.com/0/84474/cf86403a-03bc-fbf9-5f07-15c0f4286637.png)

#はじめに
昨日（3月26日）、NutanixのマネージドなKubernetesサービスであるKarbonがTech Previewを経て、ついにGAとなりました。速報でGA版のKarbonデプロイについて紹介します。
動作要件としては以下のとおりです。

- Prism Central 5.10.2以降
- Prism Central 5.10.2に対応するAOSバージョン
- データサービスIPが設定済みであること

#Karbonの有効化
Tech Preview時点と同様にKarbonは、デフォルトでは有効になっていません。そのためKarbonを使い始めるには、まずKarbonの有効化が必要です。Karbonの有効化はとても簡単で、Prism Centralの```メインメニュー＞サービス＞Karbon```を選択してEnableをクリックするだけです。

#Tech PreviewからGAバージョンへのアップデート
一方で、既にTech PreviewでKarbonの0.8を使っている場合は、Prism CentralのLCMでKarbonをGAバージョンの1.0にしておく必要があります。KarbonをGAバージョンの1.0にするには、まず、Prism CentralのLCMでライフイクル管理を選択し、Prism Central内のコンポーネントの更新を行います。

Prism CentralではCalmなどのコンポーネントを始め、Prism Central自体のアップデートとは独立して、個々の機能（コンポーネント）をLCMで個別にアップデートすることが可能です。

例えば、Calmに関連するコンポーネントはDockerコンテナで提供されているため、Prism CentralのアップデートではなくLCMからCalm単体をアップデートすることでCalmのバージョンアップが可能です。今回は、LCMのインベントリ更新を行うことで、GAバージョンへのKarbonのアップデートを行っていきます。
![スクリーンショット 2019-03-28 02.17.15.png](https://qiita-image-store.s3.amazonaws.com/0/84474/12b48ec4-c8f7-97e5-d00f-8b72d3b9ee0c.png)

インベントリの実行を行うと、Prism Central上の各種コンポーネントの現在バージョンを取得し、その上で、それらコンポーネントの最新バージョンの有無を確認します。
![スクリーンショット 2019-03-27 23.26.46.png](https://qiita-image-store.s3.amazonaws.com/0/84474/1c31200e-22fa-14ab-a25f-fbe9de16ad1e.png)

インベントリの更新が終わると、更新対象のコンポーネントが表示されます。アップデート対象の一覧からKarbonを選択し右上の「選択の保存」ボタンをクリックします。併せてCalm及びEpsilon（ともにCalmを構成するコンポーネント）もアップデートする場合は、こられにもチェックを入れておきます。
![スクリーンショット 2019-03-27 23.30.42.png](https://qiita-image-store.s3.amazonaws.com/0/84474/068e3f36-5a2c-c9f7-0482-ba3e7ec0fb15.png)

アップデート対象のコンポーネント選択が終わったら、アップデートを開始します。今回は、Karbonのみのアップデートのため```1件のみのアップデートを適用```と言うボタンをクリックしアップデートを開始します。
![スクリーンショット 2019-03-27 23.47.52.png](https://qiita-image-store.s3.amazonaws.com/0/84474/f82a812c-060a-f3bb-7dd7-34757f5afb70.png)

なお、LCMでKarbonを0.8系からGAバージョンの1.0にアップデートする場合は、Tech Preview時に作成したKubernetesクラスターを削除しておく必要があります。この制約は、Tech PreviewからGAにバージョンアップする際のみのもので、今後1.0から1.x以降等にアップデートする場合には不要な操作です。

>You cannot upgrade to a GA version of Karbon without first deleting clusters created during technical preview. An error message shows up

#KarbonからKubernetesクラスターをデプロイ
LCMによるアップデートが終わったら、再度、```Prism Centralのメインメニュー＞サービス＞Karbon```を選択します。そうすると別ページに飛ぶので、まずはKarbon上においてKubernetesのMasterやWorkerのノードとなるベースのCentOSイメージをダウンロードします。
![スクリーンショット 2019-03-28 01.02.41.png](https://qiita-image-store.s3.amazonaws.com/0/84474/368d71c9-5684-31d0-e19a-2b440a90d8b6.png)

NutanixのKarbonは、マネージドで提供する形式をとっているためKubernetesのMasterやWorkerのホストのベースイメージについては、OSのディストリ、バージョン、Container Runtimeを含むコンテナ関連のコアコンポーネントについて、すべてNutanixが準備したものを利用する形になります。ベースイメージのダウンロードが完了するとKarbonのClusterメニューに```+ Create Kubernetes Cluster```のボタンが表示されます。ここから簡単5ステップでKubernetesクラスターがデプロイ可能です。
![スクリーンショット 2019-03-28 01.09.04.png](https://qiita-image-store.s3.amazonaws.com/0/84474/0d8e8f32-ea53-c381-5d6f-65fc50949027.png)

Nutanixは、基本的に物理のホストを最小3ノードで構成し、仮想化インフラストラクチャを提供するため、そのインフラストラクチャでは割と潤沢なクラスターリソースが提供されます。そのため、KarbonのKubernetesクラスターについても、デフォルトのまま最小構成で3ノード（Master x1、Worker x1、etcd x1）の構成、商用利用を想定したクラスターの場合だと、デフォルトで8ノード（Master x2、Worker x3、etcd x3）と、余裕を持った構成で組まれることになります。もちろん、このノード数やノードあたりに割り当てるvCPU、メモリ、ディスクサイズについてもカスタマイズも可能です。
![スクリーンショット 2019-03-28 01.11.18.png](https://qiita-image-store.s3.amazonaws.com/0/84474/ac1e6e25-2dde-88bc-9f06-e11ad6cc9946.png)

今回はこの潤沢なリソースを無駄遣いしてマルチMaster構成のKubernetesクラスターをデプロイしていきます。Karbonでは基本的に、最新3バージョンのKubernetesに対応するポリシーですが、Kubernetesの1.14が出たのとほぼ同時でのGAとなったため、GA時点で選択可能なKubernetesのバージョン1.13.4が最新となっています。
![スクリーンショット 2019-03-28 01.15.58.png](https://qiita-image-store.s3.amazonaws.com/0/84474/95a06af4-eddf-ffcb-7785-93a5fc4bab82.png)

Masterノードは、商用利用を想定したKarbonのクラスターを構成する場合、必ずマルチMaster構成を取りますが、Active-PassiveかActive-Activeの構成のいずれかから選択します。今回は、Active-Passiveで構成し、デフォルトから特にWorkerのノード数やetcdのノード数は変更せずにウィザードを進めます。
なお、現時点でActive-Activeの構成の場合、外部のロードバランサーが必要となります。
![スクリーンショット 2019-03-28 01.29.26.png](https://qiita-image-store.s3.amazonaws.com/0/84474/0e170cf7-f7e9-a338-aa8e-dcd12ef252e5.png)

Network Provider（CNI）については事前にアナウンスがあったとおり、GA時点ではFlannelのみの対応となっています。今後、CNIプラグインは徐々に拡充されていく予定です。こちらもデフォルトから特に変更せずにウィザードを進めます。
![スクリーンショット 2019-03-28 01.24.28.png](https://qiita-image-store.s3.amazonaws.com/0/84474/5b73eab2-a4d9-8a6c-32a6-0d4aea24a126.png)

最後に、Nutanixのクラスターアクセスのためのクレデンシャル（Prismのadmin及びそのパスワード）を設定して、```Create```をクリックし、Kubernetesクラスターのデプロイを開始します。
なお、こちらのウィザードではPVCのReclaim PolicyやFile System（ext4かxfs）を選択することができますが、今回はデフォルトまま進めています。
![スクリーンショット 2019-03-28 01.27.24.png](https://qiita-image-store.s3.amazonaws.com/0/84474/ce2fad0c-1b54-8fee-b49d-25ea3939c60c.png)
![スクリーンショット 2019-03-28 01.29.41.png](https://qiita-image-store.s3.amazonaws.com/0/84474/507e8735-bbc9-b0f3-b2c9-87263bb3ab6b.png)

10分程で無事にKubernetesクラスターがデプロイされました。後は、Kube.cfgをダウンロードして環境変数にexportしてアクセスすることができます。
![スクリーンショット 2019-03-28 01.43.55.png](https://qiita-image-store.s3.amazonaws.com/0/84474/dd536c2d-5a43-2595-5c87-3bfb6a3180e6.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/84474/83ea047d-88ff-df0e-f969-0dbc1c27f303.png)

#まとめ
Tech Preview時から基本的にはあまり変わらないUI/UXで、僅かなステップと15分程度の時間でマルチMaster構成のKubernetesクラスターとCSI、EFKスタック及びリソースアラートのためのPrometheusがビルトインでデプロイされてきます。まだ構成が少しイケてない部分やCNIがFlannelしか選択できない、Tech Preview時点に比べてPrometheusもデフォルトでビルトインでデプロイされてくるようになったもののGrafanaとセットではなく、リソース等のアラートのためだけにデプロイされているなど、まだまだ物足りない部分もありますが、今後このへんはどんどんアップデートが行われていく予定です。

Nutanix Karbonは、オンプレミスで、細かいKubernetesや各種コンテナランタイムを含むコンテナ関連コンポーネント等のスタックを気にせずにコンテナプラットフォームを手に入れたいと言うユースケースにお勧めのマネージドKubernetesとなっています、是非お試し下さい。