ブラウザ上で無料で試せるkubernetes環境一覧


学習用途やちょっとした実験用のkubernetes環境はサクッと準備したいですよね。
そんな時に便利な、ブラウザ上で使える無料のkubernetes環境を紹介します。

## kubernetes公式

まずは公式ドキュメントに記載されているkubernetes環境を紹介します。

### hello minikube

[Hello Minikube - Kubernetes](https://kubernetes.io/ja/docs/tutorials/hello-minikube/#create-a-minikube-cluster)

`Launch Terminal`ボタンをクリックするとブラウザ上で[minikube](https://github.com/kubernetes/minikube)が使えます。

minikubeは開発用のkubernetes環境で、現在はシングルノードクラスタです。
本記事執筆時点のクラスタバージョンは`v1.17.0`でした。

```sh
Your Interactive Learning Environment Bash Terminal

$ start.sh
Starting Kubernetes...minikube version: v1.6.2
commit: 54f28ac5d3a815d1196cd5d57d707439ee4bb392
* minikube v1.6.2 on Ubuntu 18.04
* Selecting 'none' driver from user configuration (alternates: [])
* Running on localhost (CPUs=2, Memory=2461MB, Disk=47990MB) ...
* OS release is Ubuntu 18.04.3 LTS
* Preparing Kubernetes v1.17.0 on Docker '18.09.7' ...
  - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
* Pulling images ...
* Launching Kubernetes ...
* Configuring local host environment ...
* Done! kubectl is now configured to use "minikube"
* dashboard was successfully enabled
Kubernetes Started
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:12:17Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
$
```

### Learn Kubernetes Basics

[Learn Kubernetes Basics](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/)

こちらもkubernetes公式ドキュメントに記載されているチュートリアルです。
`Interactive Tutorial`のページに進むとブラウザ上でminikubeを操作できます。
アプリのデプロイ・公開手順やスケール・アップデート手順を学ぶことができます。

以下のようなシナリオが用意されています。

- [Creating a Cluster](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/)
- [Deploying an App](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/)
- [Exploring Your App](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/explore/explore-interactive/)
- [Exposing Your App](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/expose/expose-interactive/)
- [Scaling Your App](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/scale/scale-interactive/)
- [Updating Your App](https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/update/update-interactive/)


本記事執筆時点のクラスタバージョンは`v1.17.0`でした。

## Play with Kubernetes

[Play with Kubernetes](https://labs.play-with-k8s.com/)

4時間の時間制限がありますが5ノードまで追加できます。
マルチノードクラスタを試したい場合に便利です。

### マルチノードクラスタの構築手順

node1をmasterノードとして初期化します。

```sh
[node1 ~]$ kubeadm init --apiserver-advertise-address $(hostname -i)
[node1 ~]$ kubectl apply -n kube-system -f \
    "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
[node1 ~]$
```

workerノードをクラスタにjoinさせるコマンドは`kubeadm init`コマンド結果に記載されていますのでクリップボードにコピーしておきます。

そのコマンドをnode2〜5上で叩き、workerノードとしてクラスタにjoinさせます。

```sh
[node2 ~]$ kubeadm join 192.168.0.28:6443 --token cz22wg.64gcoic3ewgpfbbb \
    --discovery-token-ca-cert-hash sha256:ab56003009cc5110c7878f3de4c1ac3fe2b0a1101d0b79d803853d25b9f08f22
```

master + worker4台構成のクラスタが構築できました。

```
[node1 ~]$ kubectl get no
NAME    STATUS   ROLES    AGE     VERSION
node1   Ready    master   8m32s   v1.14.9
node2   Ready    <none>   6m7s    v1.14.9
node3   Ready    <none>   5m9s    v1.14.9
node4   Ready    <none>   3m15s   v1.14.9
node5   Ready    <none>   3m12s   v1.14.9
[node1 ~]$
```

## Katacoda

様々な技術をブラウザ上で学習できるサイトです。
TwitterやGithubなどのアカウントでログインすると進捗が管理できて便利です。

kubernetesのコースも豊富に用意されていて、ブラウザ上で様々なシナリオを試せます。
[Interactive Browser Based Labs, Courses & Playgrounds | Katacoda](https://www.katacoda.com/learn?q=kubernetes)

例えばこちらのコースには20シナリオが用意されています。
Helm(v2です)やKomposeの使い方も学べます。
[Learn Kubernetes using Interactive Browser-Based Labs | Katacoda](https://www.katacoda.com/courses/kubernetes)


## まとめ

以上、ブラウザ上で無料で試せるkubernetes環境一覧を紹介しました。
学習用途やちょっとした実験に役立ていただけたら幸いです。

他にも使えそうな環境がありましたら、見つけ次第アップデートします。

- [TryK8S](https://tryk8s.com/) : メンテ中なのか使えなかった。

追記 : コメントに有益な情報をいただいていますので、是非ご覧くださいませ。