Edited at

RaspberryPiに入れたk3sをRancherサーバーから見えるようにした

Qiita初投稿です。

よろしくお願いします。

k3sをラズパイに入れてRancherでマルチクラスタ管理したらかなり強力だと思って、家のRaspberryPiで実験してみました。

色々ハマったので時系列に動くまでのメモ。


まず最初に何も考えずにやった(2月の終わり)

k3sのインストールは超簡単

$curl -sfL https://get.k3s.io | sh -

$k3s server


  • k3sは問題なく動いた

  • rancher-agentがarmでは動かない

うん。そらそうか。


dockerhubにarm版のrancher-agentがでた(3/14)

rancher-agentのimageを変更して試してみた

rancherの画面からクラスタのimportを選び、表示されたURLのYAMLを一旦保存

$curl --insecure -sfL https://35.200.55.75/v3/import/XXXXX.yaml  > rancher.yaml

imageを変更(2箇所)

apiVersion: extensions/v1beta1

kind: Deployment
metadata:
name: cattle-cluster-agent
namespace: cattle-system
...
containers:
...
- name: CATTLE_K8S_MANAGED
value: "true"
image: rancher/rancher-agent:v2.2.0-rc4-arm64
...
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: cattle-node-agent
...
containers:
- name: agent
image: rancher/rancher-agent:v2.2.0-rc4-arm64

前回とは違うエラーだけど、やっぱり動かない。

よくよく考えたら、rasbianは32bitだってことに気づく。。。


ラズパイのOSから書き換えてみる(3/15)

OSはOpenSUSEのLeap15.0を使用


https://en.opensuse.org/HCL:Raspberry_Pi3


(うちの環境だと、Tumbleweedはwifiモジュールを認識しなかった。ラズパイ用のUbuntuもwifiがうまく動かなかった。)

OS作成(macから)


注)ddで書き込む先はよく確認して行ってください。

$xzcat openSUSE-Leap15.0-ARM-JeOS-raspberrypi3.aarch64-2018.07.02-Buildlp150.1.1.raw.xz  | dd bs=4m of=/dev/rdisk2 ;sync

最初と同様にk3sを導入後、起動

$k3s server

...
INFO[2019-03-16T14:41:03.713645166Z] Waiting for containerd startup: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial unix /run/k3s/containerd/containerd.sock: connect: connection refused"

なんか、rasbianでは見なかったエラーが出た。。。

原因は調べられてないけど、opensuseの場合、serverとagentを別々に起動したらうまくいった

(resolv.confとかネットワーク周りだろうと勝手に想像)

$k3s server --disable-agent

$cat /var/lib/rancher/k3s/server/node-token
→表示されるtokenをメモ
$k3s agent -node-name raspberrypi3 --token <token> --server https://<ラズパイのIP>:6443

あとは、3/7と同じようにrancher-agentをインポート(3/15時点でrc6)


無事起動!

スクリーンショット 2019-03-16 21.32.31.png

podの状態

$kubectl get po -n cattle-system

B8-27-EB-98-2F-9B:~/kubernetes # kubectl get po -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-686954759-z7xjn 1/1 Running 0 2m13s
cattle-node-agent-jzl8n 1/1 Running 0 2m9s

いろいろ組み合わせのマジックがあるみたいで、またバージョン上がると動かないとかいろいろありそうだけど、とりあえずやれそうな気はしてきた。