LoginSignup
2
1

More than 1 year has passed since last update.

ラズパイのOSがUbuntuで、KubernetesのCNIを追加したらエラーになった場合の対処法

Last updated at Posted at 2022-07-24

概要

UbuntuをインストールしたラズベリーパイをKubernetesのノードに追加して、CalicoやFlannelでCNI(Container Network Interface)の設定をしようとしたら上手く動かずにハマる…。試行錯誤してようやく解決したので、その方法をご紹介。

環境

  • Kubernetesのバージョン : v1.24.3
  • ノード
    • master
      • Linuxマシン(ラズパイではない)
      • OS : Debian GNU/Linux 10 (buster)
      • CPUアーキテクチャ : x86_64
    • worker
      • Raspberry Pi 4 Model B 4GB
      • OS : Ubuntu 22.04 LTS
      • CPUアーキテクチャ : aarch64

発生現象

ラズパイのノード追加は問題なくできるが、以下記事(自筆)の方法などでPod間通信の設定をしようとすると、上手く行かない。

例えばCalicoで設定しようとした場合に、ラズパイにデプロイされるcalico-nodeというPodが再起動を何度も繰り返す事態となる…。(Flannelの場合は、kube-flannel-dsでPod同様の現象が発生)

原因と解決法

どうやら、ラズパイにVXLANの設定が出来ていなかったことが原因だった模様。

以下の記事を参考にして、linux-modules-extra-raspiをインストールして解決
https://bugs.launchpad.net/ubuntu/+source/linux-raspi/+bug/1947628

インストールと設定手順

$ sudo apt update -y && \
  sudo apt install -y linux-modules-extra-raspi
$ sudo reboot now

再起動したらPod間通信できるようになった!

現時点で確認したのはラズパイをWorkerノードにした場合のみだが、Masterノードにしてもこれで問題なく動くはず。

補足:VXLANのメモ

VXLANについてよくわかっていない上でのメモ。

Kubernetesの異なるノードにPodがデプロイされた際に、それらのPodが「共通に属するネットワーク」を作りたい。そんなネットワークを作ってくれるのがCalicoやFlannel等のCNIと呼ばれるもの。
そのためには、IPアドレスの異なるノードを跨ってネットワークを作る必要があるが、VLAN(Virtual LAN)では実現不可能。
そこでVLANよりも拡張性の高いVXLAN(Virtual Extensible LAN)を使う必要がある。

2
1
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
2
1