RKSを知る! 連載第17回目 :マネージドKubernetesサービス比較調査 –NodeOS編

テクノロジー

はじめに

「RKSを知る!」の連載第17回目の記事としまして、各マネージドkubernetesサービスにてクラスタを構築した際に、Nodeに対してどのようなOSが使用されるかを調査し、内容について解説したいと思います。

本連載についてはリンクページを用意していますため、概要や連載記事は下記URLからご確認ください。
RKSを知る! 概要&連載リンク集

各クラスタのNodeOS

各マネージドKuberneteサービスにてクラスタを構築した際のNodeOS一覧は以下の表となります。

2021/05/12時点

上記一覧から、各マネージドkubernetesサービスでのNodeに設定されるOSはそれぞれ異なることが分かります。

それぞれの詳細について、後述にて解説したいと思います。

RKSのNodeOS

RKSにてクラスタを構築した際にNodeOSに使用されているのはコンテナワークロード用に開発された「Flatcar Container Linux」が使用されています。

Kinvolk: Flatcar Container Linux
Container Linux

Flatcarは、元々コンテナワークロード用のOSとして利用されてきたCoreOS Container Linuxの派生として2018年3月にKinvolkより公表され、2019年5月より実験版がリリースされました。

派生元であるCoreOS Container Linuxは2020年に廃止となっており、Flatcarは実質の後続製品として稼働しており、CoreOSからの移行もFlatcarはサポートしています。

コンテナを利用するのに特化したOSであるため、コンテナ実行以外の機能は削減しており、他のOSよりも軽量でコンテナセキュリティを重視した堅牢な構成となっています。

RKSでは現状、クラスタ構築時のカスタマイズを行うことが出来ないため、NodeOSとして使用できるのはFlatcarのみとなります。

EKSのNodeOS

EKSのNodeOSは指定がない場合、デフォルトではAmazonLinux2が利用されています。

Amazon EKS 最適化 Amazon Linux AMIs - Amazon EKS
Amazon EKS 最適化された Amazon Linux AMI は 上に構築されAmazon Linux 2、Amazon EKSノードのベースイメージとして機能するように設定されています。AMI は と連携するように設定Amazon EKSされており kubelet 、Docker、、および AWS IAM A...

実際にはEKSに最適化されたAMI(Amazon Machine Image)がクラスタ構築時に設定されており、AMIは都度最新化されるよう、更新されています。

AmazonLinux2はAWSにてEC2インスタンスを構築された際も設定される、AWS用のOSであり、ベースとしてはCentOSが使用されています。

デフォルトやEKSによる自動構築を行った場合は自動的にAmazonLinux2が設定されているAMIにより構築されますが、手動によるセルフマネージド型ノードで構築した場合、以下のOSを使用したAMIを設定することが可能となります。

  • Bottlerocket
    AWSが開発したコンテナワークロード用のイメージです。
    コンテナ実行に必要な機能のみ実装しており、軽量かつ高いセキュリティ性を担保しています。
    EKSのセキュリティベストプラクティスではOSとしてBottlerocketの使用を推奨しているため、より高いセキュリティをEKSに持たせる場合はBottlerocketの利用を考慮に入れる必要があります。
  • Windows Server 2019
    EKSに最適化されたWindowsServerをNodeのOSとして利用することも可能です。
    要件によってはNodeにWindowsにしか導入できないソフトウェアを導入しなければならなかったり、外部サーバーとの連携でWindowsにしなければならない状況もあるため、そういった特異的な状況の場合はWindowsServerをEKSのNodeOSとして利用することが可能となっています。

AKSのNodeOS

AKSの既定のNodeOSとしてはUbuntuが利用されています。

Azure Kubernetes Service (AKS) でのクラスター構成 - Azure Kubernetes Service
Azure Kubernetes Service (AKS) でクラスターを構成する方法について説明します

Azureにて仮想サーバを構築した場合、基本的にUbuntuがLinuxサーバOSとして利用されており、AKSも同じくNodeOSとしてUbuntuが使用されることとなっています。

現状のベースはUbuntu 18.04ですが、AKSのKuberneteバージョンが1.18以前に構築したNodeにはUbuntu 16.04が使用されており、既存クラスタのKubernetesバージョンを1.18以上に上げる場合、NodeOSのバージョンも上げる必要があります。

また、AKSもEKSと同じくWindowsServerをNodeOSとして設定することが可能であり、.NET Framework 上に構築されたものなど、ネイティブの Windowsコンテナアプリケーションの実行をサポートすることが可能となります。

調査結果からの比較

調査の結果から比較したところ、

  • RKSとEKSはコンテナワークロード用のOSをサポートしており、コンテナ実行に最適化されたOS環境を導入することが可能である。
  • EKSとAKSはWindowsServerをNodeOSとして設定することが可能であり、もしWindowsコンテナアプリケーションを実行しなければならない要件が発生した場合、対応することが可能である。
  • RKSはクラスタ構築時にカスタマイズ構築することが出来ないため、Flatcar以外に選択することが出来ない。
  • 全てのマネージドKubernetesサービスにて既定となっているNodeOSはLinuxOSである

ということが分かりました。

あとがき

今回は連載第17回目としまして、各マネージドkubernetesサービスにてクラスタを構築した際に設定されるNodeOSについて調査し、比較・解説をしました!
NodeOSについては各社それぞれに特色があり、既定で使用されているNodeOSはそれぞれ異なることが分かりました!

次回更新もRKSと他のマネージドKubernetesサービスとの比較から、RKSのユニークな点に迫りたいと思います!


ここまでお読みいただき、ありがとうございました!