ry's Tech blog

Cloud Native技術などについて書いていきます。

入門 Rancher Desktop

Rancher Desktopとは

Rancher Desktopとは、インストールして起動するだけで、Windows 10やmacOS上に簡単にKubernetes環境を展開することができるオープンソースのアプリケーションです。

rancherdesktop.io

Control Planeにk3s, CRIにcontainerdを用いたClusterを、

上に展開します。

Installation

では、さっそくインストールをしていきたいと思います。

踏むのは何と1stepだけです! 以下のlink先からアプリケーションをダウンロードして起動してください。

github.com

今回、windowsを使って確認をしていきます。

起動

起動をすると、以下のようにアプリケーションが動きます。

rancher-1

Kubernetes Settings」というtabを押していただき、以下のようにゲージが止まり「Reset Kubernetes」が押せる状態になると、Kubernetes Clusterの展開が完了しています。

rancher-2

Mac版では、リソースの指定もできます。

rancher-desktop-mac
rancher-desktop-mac

使い方

Kubernetes Clusterの立ち上げが完了すると、WindowsではUserディレクトリの直下にconfigファイルが生成されています。

では、Nodeの情報を見ていきます。

$ kubectl get nodes -o wide
NAME         STATUS   ROLES            AGE    VERSION         INTERNAL-IP       EXTERNAL-IP   OS-IMAGE   KERNEL-VERSION                   CONTAINER-RUNTIME
w10dyh79c3   Ready    builder,master   17m    v1.19.10+k3s1   <Internal IP>     <none>        Unknown    5.4.72-microsoft-standard-WSL2   containerd://1.4.4-k3s1

初期で動いているNamespace、及びPodは以下のようになっています。

$ kubectl get ns
NAME              STATUS   AGE
default           Active   18m
kube-system       Active   18m
kube-public       Active   18m
kube-node-lease   Active   18m
kube-image        Active   18m

$ kubectl get pods -A
NAMESPACE     NAME                                     READY   STATUS      RESTARTS   AGE
kube-system   coredns-66c464876b-zt485                 1/1     Running     0          18m
kube-system   local-path-provisioner-7ff9579c6-dzvg2   1/1     Running     0          18m
kube-system   metrics-server-7b4f8b595-lmsh2           1/1     Running     0          18m
kube-system   helm-install-traefik-zzbcw               0/1     Completed   0          18m
kube-system   svclb-traefik-wcg8k                      2/2     Running     0          17m
kube-system   traefik-5dd496474-sbb4b                  1/1     Running     0          17m
kube-image    builder-xzrlf                            2/2     Running     0          17m

StorageClassに関しても、以下のように作成されます。

$ kubectl get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  18m

以下のようなmanifestを適用してみます。

$ cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: demo-pvc
  namespace: default
spec:
  storageClassName: local-path
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 5Gi

この時点では、StorageClassのvolumeBindingModeが WaitForFirstConsumer であるため、 PodからPVCを指定されるまで、容量の確保がされないようになっています。

$ kubectl apply -f pvc.yaml
persistentvolumeclaim/demo-pvc created

$ kubectl get pvc -n default
NAME       STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
demo-pvc   Pending                                      local-path     61s

では、このpvcを使うPodを立ち上げてみます。

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: 

nginxが問題なく動きました。

$ kubectl apply -f nginx.yaml
pod/demo-pod created

$ kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
demo-pod   1/1     Running   0          4m22s

$ kubectl get pvc
NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
demo-pvc   Bound    pvc-1222f2ff-7afd-4254-b352-640c906b5804   5Gi        RWO            local-path     8m28s

Appendix

k3sのバイナリは以下に配置されています。

# /mnt/c/Users/uwatsr/AppData/Local/xdg.cache/rancher-desktop/k3s
/v1.19.10+k3s1/k3s -h
NAME:
   k3s - Kubernetes, but small and simple

USAGE:
   k3s [global options] command [command options] [arguments...]

VERSION:
   v1.19.10+k3s1 (72e8196c)

COMMANDS:
   server         Run management server
   agent          Run node agent
   kubectl        Run kubectl
   crictl         Run crictl
   ctr            Run ctr
   check-config   Run config check
   etcd-snapshot  Trigger an immediate etcd snapshot
   help, h        Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug        (logging) Turn on debug logs [$K3S_DEBUG]
   --help, -h     show help
   --version, -v  print the version