27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

この記事はスタンバイ Advent Calendar 2021の5日目の記事です。
昨日は@ocomeさんの『SilhouetteからPAC4Jに乗り換えてついでにOpenID Connectを使う』でした。

この記事ではRancher DesktopをMacにインストールして触ってみた感想を書きます。

TL;DR

  • Rancher Desktopは簡単にインストールできる
  • Kubernetesのバージョン切り替えも簡単にできて便利
  • nerdctl面白い

Rancher Desktop とは

OSSのデスクトップアプリケーションで、デスクトップ上でKubernetesの作成管理ができます。
macとwinで動くようですが、M1のmacには現在非対応なようです。(執筆時点)

公式:Rancher Desktop: Kubernetes and container management on the desktop

Github:rancher-sandbox/rancher-desktop: Kubernetes and container management to the desktop

デスクトップでKubernetesを作成できるツールといえば、Docker Desktopkindminikubeが有名ですが、それらに新たな選択肢が加わりました。

公式を見ると、VM上にcontainerdを動かして、その上にkubernetes環境を作成するようです。

(以下の図は、Rancher Desktop: Kubernetes and container management on the desktopからの引用です。)
スクリーンショット 2021-11-20 11.23.58.png

インストールしてみる

では、公式手順に従ってインストールしてみましょう!
環境は以下の通りです。

  • macOS Big Sur 11.6
  • CPU 2.4 GHz 8コアIntel Core i9
  • MEM 64GB

zipファイルのダウンロード

リリースページからzipファイルをダウンロードします。

zipを解凍して出てきたファイルを実行します。

スクリーンショット 2021-11-20 11.56.46.png

アプリケーションの起動

起動するとKubernetesのバージョンを聞かれます。とりあえず執筆時点の最新v1.21.6で行きます。

スクリーンショット 2021-11-20 11.59.00.png

初回はイメージのダウンロード等で時間がかかる模様

スクリーンショット 2021-11-20 12.00.34.png

準備完了するとこのようになります。

スクリーンショット 2021-11-20 12.08.35.png

この段階でローカルの ~/.kube/configにRancher Desktopのコンテンツが追記され、向き先も変更されています。

$ kubectl config current-context
rancher-desktop

触ってみる

起動直後の状態

nodeは1つ

$ kubectl get node -A
NAME                   STATUS   ROLES                          AGE   VERSION
lima-rancher-desktop   Ready    builder,control-plane,master   22m   v1.21.6+k3s1

Podは以下の通り、まあ普通ですね(普通とは)

$ kubectl get pod -A
NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
kube-system   local-path-provisioner-5ff76fc89d-nb74z   1/1     Running     0          22m
kube-system   metrics-server-86cbb8457f-pmg5f           1/1     Running     0          22m
kube-system   coredns-7448499f4d-7scfw                  1/1     Running     0          22m
kube-system   helm-install-traefik-crd-skdgx            0/1     Completed   0          22m
kube-system   svclb-traefik-68c5m                       2/2     Running     0          22m
kube-system   helm-install-traefik-lxpmd                0/1     Completed   1          22m
kube-system   traefik-97b44b794-xzrkz                   1/1     Running     0          22m
kube-image    builder-jwbd4                             2/2     Running     0          21m

Kubernetesのバージョンを切り替える

Rancher Desktopの特徴として、「kubernetesのバージョンを簡単に切り替えられる」というのがあります。
コンソールから選択するだけです。

スクリーンショット 2021-11-20 13.14.38.png

試しに、v1.21.6からv1.20.6にしてみます。選択してしばらく待つだけで簡単に切り替わります。

スクリーンショット 2021-11-20 13.16.25.png

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:34:20Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.6+k3s1", GitCommit:"df033fa248bc2c9f636e4c0ff2b782cb8edbbf10", GitTreeState:"clean", BuildDate:"2021-11-04T00:25:14Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
## 変更後
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:34:20Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.6+k3s1", GitCommit:"8d0432824a9fd9474b67138b7630c33f285d332f", GitTreeState:"clean", BuildDate:"2021-04-16T19:04:44Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version dif

これはアップデートの検証に便利そうですね。

Kubernetes環境をリセットする

『あーもう!1回環境消しちゃいたい!』そんな時ありませんか?

コンソールからボタン1つで環境をリセットできます。

スクリーンショット 2021-11-20 13.43.06.png

nerdctlを使う

ドキュメントを読むとこんな一文があります。

Rancher Desktop provides the ability to build, push, and pull images via the NERDCTL project.
Note, nerdctl is put into the path automatically. This occurs during the installer on Windows, and upon first run on macOS.

(意訳:Rancher DesktopはNERDCTLを使ってイメージのbuild/push/pull機能を提供するよ。nerdctlは自動で入ってpathも通ってるよ。これはWinはインストーラがやって、macはアプリの初回起動時に行われるよ)

nerdctlはcontainerd向けに作られた、コンテナの操作ツールです。containerd用のdockerコマンドと考えてください。(公式:containerd/nerdctl: contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose

nerdctlはdockerコマンドと同じUI/UXを考えて作られています。試しにnginxコンテナを動かしてみましょう。

$ nerdctl run -d -p 9999:80 nginx
55e7859991c3c9de0fc17b0e07bad7a0abb6d3819a68e9a32d937e19ca3eda11

起動を確認してみましょう。ブラウザには親の顔より見た画面が。

スクリーンショット 2021-11-20 14.14.17.png

nerdctlコマンドでコンテナの状態を確認。

$ nerdctl ps
CONTAINER ID    IMAGE                             COMMAND                   CREATED           STATUS    PORTS                   NAMES
55e7859991c3    docker.io/library/nginx:latest    "/docker-entrypoint.…"    15 minutes ago    Up        0.0.0.0:9999->80/tcp

dockerコマンドでは起動を確認できません。

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

nerdctlにはnamespaceの概念があり、今回の環境では以下のようなnamespaceができてます。

$  nerdctl namespace list
NAME        CONTAINERS    IMAGES    VOLUMES
buildkit    0             0         0
default     1             1         0
k8s.io      19            22        0

先ほど作ったnginxはdefaultというnamespaceにいます。

$ nerdctl  --namespace default ps
CONTAINER ID    IMAGE                             COMMAND                   CREATED           STATUS    PORTS                   NAMES
55e7859991c3    docker.io/library/nginx:latest    "/docker-entrypoint.…"    30 minutes ago    Up        0.0.0.0:9999->80/tcp

k8s.ioというnamespaceには、Rancher Desktopで作成したKubernetesのコンテナ群が見えます。

$ nerdctl  --namespace k8s.io ps
CONTAINER ID    IMAGE                                                                      COMMAND                   CREATED              STATUS    PORTS    NAMES
0a3c6883ef0f    sha256:897ce3c5fc8ff8b1ad4fe1e74f725a0942e8e1dad0ee09096cfa7320da889a53    "entry"                   About an hour ago    Up
132e0235d9d4    docker.io/rancher/kim:v0.1.0-beta.6                                        "kim --debug agent -…"    About an hour ago    Up
1bb39f3b47db    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up
1fc1dd02eec4    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up
2dfc58bc1d60    sha256:897ce3c5fc8ff8b1ad4fe1e74f725a0942e8e1dad0ee09096cfa7320da889a53    "entry"                   About an hour ago    Up
387247a2f4eb    sha256:148c19256271909650fb514430c86606775bedaafc30e9fb6af6faad5adf1086    "local-path-provisio…"    About an hour ago    Up
6bfb954aa0f8    docker.io/moby/buildkit:v0.8.3                                             "buildkitd --addr=un…"    About an hour ago    Up
80d7c860bbe3    sha256:aa764f7db3051ee79467eeef28fe6a5f0667ae8af7bd6ead61f9b0ae3d8f638e    "/traefik --configfi…"    About an hour ago    Up
8a030c048cf3    sha256:9dd718864ce61b4c0805eaf75f87b95302960e65d4857cb8b6591864394be55b    "/metrics-server"         About an hour ago    Up
8e72c8c144d6    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up
901b1d009b36    sha256:296a6d5035e2d6919249e02709a488d680ddca91357602bd65e605eac967b899    "/coredns -conf /etc…"    About an hour ago    Up
a35a26ee3aab    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up
d526c08cb6e8    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up
f138ceae1e3e    sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e    "/pause"                  About an hour ago    Up

helmを使ったデプロイ

Rancher Desktopにはhelmも入ってるので、helmを使ってアプリケーションをKubernetesにデプロイしてみます。

$ helm repo add bitnami https://charts.bitnami.com/bitnami                                                                                                               
"bitnami" has been added to your repositories

$ helm install wp bitnami/wordpress
NAME: wp
LAST DEPLOYED: Sat Nov 20 14:44:06 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: wordpress
CHART VERSION: 12.2.0

helmで確認

$ helm ls                                                                                                                                                                
NAME	NAMESPACE	REVISION	UPDATED                             	STATUS  	CHART           	APP VERSION
wp  	default  	1       	2021-11-20 14:44:06.851363 +0900 JST	deployed	wordpress-12.2.0	5.8.2

kubectlで確認

$ kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
svclb-wp-wordpress-qp6pz        0/2     Pending   0          4m11s
wp-mariadb-0                    1/1     Running   0          4m11s
wp-wordpress-7cf6dbc45f-42d45   1/1     Running   0          4m11s

このように内蔵されているnerdctlやhelmでアプリケーションの開発やデプロイが行えます。

感想など

  • Racher Desktopはまだv0.6だけど、荒削り感はない
  • kubernetesのバージョンを簡単に切り替えられるのは便利
  • Docker Desktopが一部有料化という話もあるので、containerd と nerdctl ベースのRancher desktop + nerdctl環境に慣れておくのもいいかも
27
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?