Trending keywords: security, cloud, container,

MicroK8s とは?基本の使い方を解説

SHARE:

MicroK8sは、軽量のKubernetesディストリビューションの一種で、ローカルシステムで実行するように設計されています。

機能軽量版ということで、標準のKubernetes の機能すべては実装されていませんが、一般的な本番環境クラスターに必要な機能のほとんどをカバー。基本的なOS システムで実行できるため、他の類似ツールと比べ、設定とホストが簡単な傾向です。

この記事では、MicroK8sの基本として、概要や使い方などを解説しましょう。

関 連 記 事

Kubernetesとは?Kubernetesセキュリティ
の基礎
Kubernetesアーキテクチャの
設計方法
AWSのEKS
(Elastic Kubernetes Service)
Kubernetesの
クラスターとは?
 
Kubernetes のノードとは?
KubernetesのPodとは?KubernetesのHelmとは?クラウドセキュリティと
ランタイムインサイト

MicroK8s とは?

MicroK8sとは、ローカルシステムで実行するように設計された、軽量の Kubernetes ディストリビューションです。

主な開発者であるオープンソース企業のCanonicalは、MicroK8sを「Low-Opsの最小限の本番環境のKubernetes ディストリビューション」と表現しています。複数のサーバーをデプロイしたり、複雑な構成を管理したりせずに、本番環境グレードの高可用性 Kubernetes クラスターを設定したいと思ったことがある場合は、最適なプラットフォームとなるでしょう。

MicroK8s には、標準の Kubernetes のすべての機能は用意されていませんが、本番環境グレードのクラスターの実行に必要な最小限の機能を提供するように設計されています。また、MicroK8s は基本的な Linux、Windows、macOS システムで実行できるため、他のほとんどの Kubernetes バリアントよりも設定とホストがはるかに簡単です。

MicroK8sの用途

ローカルマシン(Minikube K8s など)で実行するように設計された他のほとんどの Kubernetes ディストリビューションと異なり、MicroK8s の用途はテストだけではありません。標準の PC またはラップトップでホストされている場合でも、本格的な本番環境グレードのクラスターをサポートできるように設計されています。

とは言うものの、MicroK8s はテストや実験にも役立ちます。Minikube K8s でサポートされているものよりも複雑な Kubernetes 環境を構築したいけれども、クラウドまたは物理サーバーのクラスターで Kubernetes を実行する必要がないユーザーにとって、MicroK8s は特に役に立ちます。

MicroK8s と Kubernetesの違い

MicroK8s は、本格的な CNCF 認定の Kubernetes ディストリビューションですが、RancherOpenShiftEKS など、「より重い」Kubernetes ディストリビューションとは、いくつかの重要な点で異なります。

MicroK8s

その他の標準の Kubernetes ディストリビューション

インストールプロセス

1 2 個のコマンドまたはインストーラパッケージ

複雑な複数ステップのインストール

ローカル マシンで実行できますか?

はい

実際は実行できません(理論的には可能ですが、サポートされているユースケースではありません)。

サポートされているオペレーティングシステム

LinuxWindowsmacOS

Linux(ワーカーノードは Windows で実行できます)

サポートされているコンテナランタイム

ContainerdKata

すべての主要なランタイム

ネットワーキングサポート

CalicoCiliumCoreDNSTraefikNGINXAmbassadorMultusMetalLB

CNI 準拠のすべての主要なネットワーキングプラグイン

ストレージオプション

Hostpath ストレージ、OpenEBSCeph

CSI 準拠のすべての主要なストレージ設定

まとめると、MicroK8s は、高度なネットワーキングやストレージ構成など、すべての主要な Kubernetes 機能と機能領域に本番環境グレードのサポートを提供するとも言えますが、この点に関しては、他の Kubernetes ディストリビューションほど多くのオプションを提供していません。

MicroK8s の機能のセットが少ないことのメリットは、他のほとんどのディストリビューションよりもインストールがはるかに簡単であり、LinuxWindowsmacOS システムでも実行できることです。

MicroK8s のインストール方法

繰り返しになりますが、MicroK8s LinuxWindowsmacOS で実行できます。ただし、MicroK8s のインストールプロセスは、これらのプラットフォームごとに異なります。

Linux でのインストール

Linux では、Snap パッケージを使用して MicroK8s をインストールします。Snap は、Ubuntu Ubuntu ベースの Linux ディストリビューションでデフォルトで有効になっています。その他のディストリビューションの場合、MicroK8s をインストールする前に Snap をインストールする必要があります。

Snap がインストールされている状態で、次のコマンドをスーパーユーザーとして(root または sudo を使用して)実行し、MicroK8s をダウンロードしてインストールします。

snap install microk8s --classic

Windows でのインストール

Windows では、MicroK8s インストーラをダウンロードして実行するだけです。

macOS でのインストール

macOS では、Homebrew を使用して MicroK8s をインストールします。Homebrew をシステムにまだ設定していない場合は設定し、MicroK8s パッケージを取得してインストールします: 

brew install ubuntu/microk8s/microk8s
microk8s install

MicroK8s の起動

MicroK8s インストーラを実行すると、MicroK8s が自動的に起動します。MicroK8s が実行されていることを確認するには、次のコマンドを実行します: 

microk8s status --wait-ready

ただし、MicroK8s クラスターが実行されていても、まだ使用できる状態ではありません。デフォルトでは、MicroK8s は最小限のサービスセットしか実行しません。追加のサービスと機能を有効にするには、次のようなコマンドで指定する必要があります: 

microk8s enable dashboard dns registry istio

これにより、MicroK8s ダッシュボード、DNS、コンテナレジストリ、Istio が起動します。利用可能なすべてのサービスを表示するには、次のコマンドを実行します: 

microk8s enable --help

MicroK8s ダッシュボードの使用

MicroK8s では、標準の Web ベースの Kubernetes ダッシュボードを使用して、MicroK8s クラスターを管理するためのグラフィカルインターフェイスを提供しますが、デフォルトでは、ダッシュボードは有効になっていないか、構成されていません。

出典: https://microk8s.io/docs/addon-dashboard

ダッシュボードを使用するには、最初に次のコマンドを実行して有効にします: 

microk8s enable dashboard

Web ブラウザを開いて URL https://127.0.0.1:10443/ に移動すると、ローカルシステムでダッシュボードを使用できるようになります。

ダッシュボードトークンの取得

ダッシュボードにログインするには、アクセストークンが必要です。Linux でトークンを取得するには、Bash シェルで次のコマンドを実行します: 

token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $tokenCode language: PHP (php)

Windows macOS では、CLI で次のコマンドを使用してトークンを見つけます。

multipass exec MicroK8sVM--sudo / snap / bin / microk8s kubectl - n kube - system describe secret $(multipass exec MicroK8sVM--sudo / snap / bin / microk8s kubectl - n kube - system get secret | grep
  default -token | cut - d " " - f1)Code language: JavaScript (javascript)

または、必要な権限を持つユーザーを代わりに作成することで、トークンなしでダッシュボードにアクセスできるように MicroK8s を構成できます。Kubernetes のドキュメントでは、これを実行する方法について説明していますが、このアプローチを機能させるには、MicroK8s RBAC を有効にする必要があることに注意してください: 

microk8s enable rbac

MicroK8s クラスターの管理

デフォルトでは、MicroK8s は起動時に単一ノードクラスターを作成しますが、次のコマンドを実行すると、既存のクラスターにノードを簡単に追加できます: 

microk8s add-node

ノードを削除するには、最初にログインし、次のコマンドを実行します: 

microk8s leave

これにより、ノードからワークロードが削除されます。削除が完了したら、次のコマンドを実行して、クラスターからノードを完全に削除します: 

microk8s remove-node 192.168.1.10Code language: CSS (css)

(必要に応じてノードの IP アドレスを指定します。)

高可用性クラスター

MicroK8s の最も優れた機能の 1 つは、少なくとも 3 つのノードで構成されるクラスターを指定した場合に、自動的に高可用性をサポートすることです。これにより、クラスターのデータストアが各ノードに自動的に複製されます。こうすることで、単一のマスターノードに依存せずにクラスターの稼働を維持できます。

高可用性を有効にするには、add-node コマンドを使用して、少なくとも合計 3 つのノードで構成されるクラスターを作成するだけです(詳細については、上記を参照してください)。次のコマンドを使用すると、MicroK8s が高可用性モードで実行されていることを確認できます: 

microk8s status

出力には、high-availability: yes を読み取るフィールドを含めるようにします。

MicroK8s、K3s、その他のアーキテクチャ

MicroK8s に最も似ている Kubernetes ディストリビューションは K3s です。また、K3s は、軽量環境で実行できる本番環境対応の Kubernetes ディストリビューションになるように設計されています。

ほとんどの点で、MicroK8s K3s は非常に似ています。主な違いは次の 2 つです: 

  • 高可用性サポート:  MicroK8s K3s の両方が高可用性をサポートしていますが、K3s では高可用性が自動的に有効にならないため、明示的に設定する必要があります。MicroK8s では、クラスターのサイズが十分に大きくなると、デフォルトで高可用性が有効になります。
  • 自動更新:  MicroK8s は、Snap パッケージを使用して自動的に更新できます。K3s では、クラスターのアップグレードを実行するためのツーリングが Rancher システムアップグレードコントローラ経由で)提供されますが、手動でアップグレードを実行する必要があります。

一般的には、MicroK8s K3s よりも多くのコンテナランタイム、ネットワーキングとストレージの多くのオプションをサポートします。

MicroK8s のデメリット

MicroK8s は、本番環境にも対応した軽量の Kubernetes ディストリビューションを必要とする開発者にとって優れたソリューションですが、いくつかの欠点があります。

1 つは、Linux でサポートされている唯一のインストールチャネルである Snap パッケージに MicroK8s が依存していることです。デフォルトで Snap をサポートする Ubuntu または別のディストリビューションを使用している場合、Snap は役に立ちますが、他のシステムでは煩雑になります。実際、Ubuntu とその派生以外の Linux ディストリビューションの場合、MicroK8s は最良の選択肢ではないとも言えます。

また、MicroK8s は単一のホストマシンにデプロイされ、そのホストマシンにとどまるように設計されているため、移植性に欠けています。MicroK8s では、実行中のクラスターを PC またはサーバー間で移行するためのネイティブ機能は用意されていません。

MicroK8s には、ほとんどの開発者が「スマート」と考えるであろう多くのデフォルトのオプションと機能がありますが、それらをうまく制御できないことも潜在的な欠点です。たとえば、自動高可用性機能を無効にすることはできません。クラスターに少なくとも 3 つのノードが設定されると、それらが必要かどうかに関係なく、高可用性になります。

最後に、MicroK8s はクラウドで実行するようには設計されていません。クラウドベースの VM を起動して、MicroK8s を問題なくデプロイできますが、クラウドでワークロードをホストする場合は、EKSAKSGKE など、クラウド中心の Kubernetes ディストリビューションを使用する方が理にかなっています。

まとめ

他の一般的な軽量Kubernetes ディストリビューションと比べ、MicroK8sが最も幅広い機能セットを備えているといえます。インストールと構成も簡単です。

ただし欠点もあり、特に提供される構成オプションが限られていることには注意が必要です。ユーザーが望む以上に、Ubuntu エコシステムに密接に結び付いており、構成の選択肢が限られてくるでしょう。