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)

2020/3/21追記 rasbianOSを64bitにする。

まだ安定版ではないですが、k3sが動作することは確認できました。こっちの方が簡単です。

sudo rpi-update
sudo vi /boot/config.txt

arm_64bit=1

以前の手順

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)

無事起動!

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

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