今回は、第3回で紹介できなかった以下の3つの学習用サービスを紹介します。

  • MicroK8s
  • k3s
  • Katacoda

MicroK8sとk3sは軽量なKubernetes環境に位置付けられ、単なる学習用(下表No.3)としてだけではなく、IoT環境のように容量に制限がある環境など、さまざまなシーンでの活用が期待されています。

Kubernetesの3つのユースケース(第3回の再掲)

また、Katacodaはブラウザベースでクラウドネイティブ技術を学べる無料総合学習サイトで、Kubernetesを動作させることができるだけでなく、無料の学習コースも用意されています。

MicroK8s

MicroK8sは軽量なKubernetes環境です。Minikubeとは異なり、VirtualBoxを必要としないため、仮想サーバ上でも動作します。シングルノードで軽量に動作し、IstioやKnativeやKubeflowが動作するなど本格的な機能を備えているため、Kubernetesの学習をするにはうってつけです。

では早速、MicroK8sを使ってみましょう。公式サイトにアクセスし、「Get started」ボタンをクリックします。

MicroK8sの公式サイト

ここでは「macOS」を選択し、「Download Multipass for macOS」ボタンをクリックしてインストーラをダウンロードします。

Multipassのインストーラのダウンロード

コンソールからmultipassを起動し、multipassに入ります。その後snapを使ってmicrok8sをインストールしましょう。

$multipass launch --name microk8s-vm --mem 4G --disk 40G
Launched: microk8s-vm
$multipass shell microk8s-vm
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-70-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Nov 25 19:15:38 JST 2019

  System load:  0.03              Processes:             103
  Usage of /:   2.5% of 38.60GB   Users logged in:       0
  Memory usage: 3%                IP address for enp0s2: 192.168.64.3
  Swap usage:   0%


0 packages can be updated.
0 updates are security updates.


To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

multipass@microk8s-vm:~$ sudo snap install microk8s --classic
2019-11-25T19:33:10+09:00 INFO Waiting for restart...
microk8s v1.16.3 from Canonical✓ installed

MicroK8sの起動状況を確認します。

multipass@microk8s-vm:~$ sudo microk8s.status --wait-ready
mAicrok8s is running
addons:
cilium: disabled
dashboard: disabled
dns: disabled
fluentd: disabled
gpu: disabled
helm: disabled
ingress: disabled
istio: disabled
jaeger: disabled
juju: disabled
knative: disabled
kubeflow: disabled
linkerd: disabled
metrics-server: disabled
prometheus: disabled
rbac: disabled
registry: disabled
storage: disabled

標準的なサービスを起動し、セットアップは完了です。

multipass@microk8s-vm:~$ sudo microk8s.enable dns dashboard registry
Enabling DNS
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
clusterrole.rbac.authorization.k8s.io/coredns created
clusterrolebinding.rbac.authorization.k8s.io/coredns created

〜中略〜

Applying registry manifest
namespace/container-registry created
persistentvolumeclaim/registry-claim created
deployment.apps/registry created
service/registry created
The registry is enabled

Minikubeと同様、kubectlを試してみます。以下では、「get nodes」や「get services」を実行しています。

multipass@microk8s-vm:~$ sudo microk8s.kubectl get nodes
NAME          STATUS   ROLES    AGE     VERSION
microk8s-vm   Ready       4d19h   v1.16.3
multipass@microk8s-vm:~$ sudo microk8s.kubectl get services
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.152.183.1           443/TCP   4d19h

MicroK8sを停止するには、「microk8s.stop」を実行します。

multipass@microk8s-vm:~$ sudo microk8s.stop
Stopped.

k3s

k3sは軽量なKubernetes環境であり、Kubernetesの公認ディストリビューションです。Rancher Labsにより開発され、40MB未満のバイナリで提供されています。軽量なことから、エッジコンピューティング、IoT、CIなどの用途に期待されています。

2019年11月18日にv1.0がリリースされ、2020年4月15日現在はv1.17.4+k3s1が最新バージョンとなっています。サポートされているOSはUbuntuやRaspbian Busterとなっており、Macでは動作しないのでご注意ください

k3s公式サイト

インストールは以下のコマンドを実行するのみで完了し、kubectlコマンドなどが利用可能な状態になります。

$curl -sfL https://get.k3s.io | sh -
[INFO]  Finding latest release
[INFO]  Using v1.17.4+k3s1 as release
[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

$ sudo kubectl get nodes
NAME              STATUS   ROLES    AGE    VERSION
ip-172-xx-xx-xx   Ready    master   112s   v1.17.4+k3s1

Katacoda

KatacodaはKubernetesやDockerやTensorflowなどのクラウドネイティブ技術の総合無料学習サイトで、「Play with Kubernetes Classroom」のようにブラウザのみで学習することができます。

EKSやGKEのようなクラウド環境をお持ちでない方や、Minikubeなどのインストール作業をせずにすぐに試してみたい方にお勧めです。

Kubernetesなどさまざまな無料コンテンツが用意されている

例えば、「Kubernetes Introduction」の「Start Course」を選択してみてください。「Launch A Single Node Cluster」コースでは、左ペインに表示された手順に沿って、右ペインにてコマンドを打っていくだけで簡単に学習を進めることができます。

Kubernetesの「Launch A Single Node Cluster」の例

* * *

今回はMicroK8s、k3s、Katacodaを紹介しました。MicroK8sとk3sは非常に簡単に環境構築でき、かつ軽量に動作します。また、Katacodaについてはブラウザのみですぐに学習を開始することができるのが利点です。 「Kubernetesを使い始めたいけれど、ハードルが高い」と感じられている方は、ぜひ試してみてください。

著者紹介


正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長

2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。

最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。3児のパパ。