忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

増えてしまったラズパイでkubernetes環境をつくってみた話

ラズパイって新しいのが出るとついつい買ってしまいますよね。ラズパイ3Bから初めて3B+とラズパイ4が家にあって… 何台もあるけど使っているのは新しい一台だけ。そんな方多いんじゃないでしょうか。

ラズパイをクラスタ化してkubernetesを導入するという試み(というか記事)が多くあったので
思い切ってルータとスイッチングhubを買ってやってみることにしました。





↓有線LANで接続するため、短めのLANケーブルが数本必要です。


こういうのがあったほうがいいかもです




1番参考にした記事はこちらです、 → Raspberry Pi 4 でおうちKubernetesを作ろう(Raspbian Buster Lite対応版)



3台でクラスタ化をしている記事が多いですが、kubernetesを使ってみるだけであればラズパイはマスターとワーカーノードで2台で十分です。(かなり動きがもっさりしますが…) 
今回ラズパイ3B+とラズパイ4でクラスタ化を試みました。

OSのインストールはせず、現在使っている環境でやってみました。
マスター     ラズパイ4    rasbian 10.4
ワーカーノード  ラズパイ3B+  rasbian  9.13

手順としては…

①初めにルーターを家の無線wi-hiにつなぐ
 ・ルーター本体記載のSSIDとパスワードでまずPCから接続。
 ・WEBブラウザを開いてhttp://192.168.13.1/へ接続。設定ウィザードからワイヤレスワンモードにする。
②ラズパイのIPアドレスをマスター192.168.13.101、ワーカー 192.168.13.102にする。

 sudo nano /etc/dhcpcd.conf コマンドで下記を追加(マスターの例) 


interface eth0


static ip_address=192.168.13.101/24 


static routers=192.168.13.1


static domain_name_servers=192.168.13.1 8.8.8.8 fd51:42f8:caae:d92e::1

③物理的に接続

 ルーター、ラズパイ×2をスイッチングhubへLANケーブルで接続します。

④cgroupを有効にする。


sudo nano /boot/cmdline.txt  コマンドで下記を追加します。


cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1


⑤ホスト名変更

sudo hostnamectl set-hostname k8s-master (マスター)  
sudo hostnamectl set-hostname k8s-node1 (ワーカー)              

sudo nano /etc/hosts で


127.0.0.1       localhost


::1             localhost ip6-localhost ip6-loopback


ff02::1         ip6-allnodes


ff02::2         ip6-allrouters


127.0.1.1       k8s-master


192.168.13.101  k8s-master


192.168.13.102  k8s-node1

とする。

⑥iptablesのバージョン変更


sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

※ラズパイ3B+ではできませんでした。(下記エラーがでますが今のところ問題なし)


update-alternatives: エラー: iptables の alternatives がありません

⑦swap無効化
sudo dphys-swapfile swapoff
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile

⑧dockerのインストール

 sudo -i


 wget https://download.docker.com/linux/debian/dists/buster/pool/stable/armhf/containerd.io_1.2.6-3_armhf.deb


 wget https://download.docker.com/linux/debian/dists/buster/pool/stable/armhf/docker-ce-cli_19.03.5~3-0~debian-buster_armhf.deb


 wget https://download.docker.com/linux/debian/dists/buster/pool/stable/armhf/docker-ce_19.03.5~3-0~debian-buster_armhf.deb



 dpkg -i containerd.io_1.2.6-3_armhf.deb


 dpkg -i docker-ce-cli_19.03.5~3-0~debian-buster_armhf.deb


 dpkg -i docker-ce_19.03.5~3-0~debian-buster_armhf.deb

⑨kubernetes関連インストール


apt-get update && apt-get install -y apt-transport-https curl

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -


cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list


deb https://apt.kubernetes.io/ kubernetes-xenial main


EOF

apt-get update

apt-get install -y kubelet kubeadm kubectl

⓾マスターの構築 ※ワーカーはやらなくてOKです

kubeadm init --pod-network-cidr=10.244.0.0/16


上記のコマンドで kubeadm join 192.168.13.101:6443 --token~ をメモって下さい。
ワーカーから接続するときに使用します。
 
⑪kubectの設定


 mkdir -p $HOME/.kube


 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config


 sudo chown $(id -u):$(id -g) $HOME/.kube/config


ここで kubectl get node コマンドでマスター単体の動作確認ができます。

⑫podネットワークAddonのインストール

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/
2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml


⑬ワーカーのクラスタ参加 ※ワーカーのみ
⓾でメモったトークンとハッシュ値を入力しクラスタに参加します。
kubeadm join 192.168.13.101:6443 --token~

error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "ww3i31"
とエラーがでたらトークンの有効期限が切れています。
マスターでkubeadm token createとコマンドを打てばまたもらえます。


うまくいけば下記のようにマスター、ノードともにReadyになります。



ワーカーが1台しかないのでpodが増えると異常に重くなります。レプリカ数を減らすとなんとか動きます。スペックの高いラズパイ4のほうをワーカーにしたほうがよかったかなと後悔…。

もう一台つなげてdocker imageをデプロイしてみました






拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30