仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

話題のk3sを触ってみた

Rancher Labsがまた面白いものを開発していたので、早速k3sを試してみました。

k3s.io

使い方を3行で

  • 対応するアーキテクチャー用のk3sバイナリーをダウンロード
  • k3s server &を実行してちょっと待つ
  • k3s kubectl get noでノードの情報が出てきたら構築完了

使うまでの流れ

それでは早速使ってみます。まず、ARMv7かARM64か、もしくはx86_64のLinuxをインストールします。 本例では64bit版のUbuntu Serverを使いました。

あとは公式サイトGitHub k3s Projectにあるようにコマンドを実行するだけです。この記事を書いた時点で最新のv0.1.0を導入する流れを書いてみます。

ノードが構築されるまで、少々時間を要します。

$ sudo -i
# wget https://github.com/rancher/k3s/releases/download/v0.1.0/k3s
# chmod +x k3s
# mv k3s /usr/local/bin
# k3s server & 
...
# k3s kubectl get no
NAME         STATUS   ROLES    AGE   VERSION
ubuntu-k3s   Ready    <none>   13m   v1.13.3-k3s.6

試しにPodを作ってみましょう。

# cat hello.yml 
apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
    - name: busybox
      image: busybox
      tty: true

# k3s kubectl apply -f hello.yml

Podが作られたのが確認できます。

# k3s kubectl get -f hello.yml 
NAME          READY   STATUS    RESTARTS   AGE
hello-world   1/1     Running   0          6m12s

# k3s kubectl exec -it hello-world -- hostname
hello-world

kubectlコマンドで操作するには

k3sで構築したKubernetesのKubeconfigは/var/lib/rancher/k3s/server/cred/kubeconfig-system.yamlに存在しました。 なので、次のように処理するとkubectlコマンドを使って操作可能です。

デプロイされたKubernetesはv1.13.3だったのが先にコマンドを実行した結果わかっているので、対応するkubectlコマンドをダウンロードします。今回はx86_64で動かしているので、64bit版のLinux用kubectlをダウンロードします。

# curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.13.3/bin/linux/amd64/kubectl
# chmod +x kubectl 
# mv kubectl /usr/local/bin/
# cat /var/lib/rancher/k3s/server/cred/kubeconfig-system.yaml > ~/.kube/config
# kubectl get no
NAME         STATUS   ROLES    AGE   VERSION
ubuntu-k3s   Ready    <none>   32m   v1.13.3-k3s.6

ちなみに書き忘れていましたが、シングルノードではシステムを再起動してもk3s server &を再実行したら元の状態に戻せました。