NotaBene

raspberry pi & k8s | NotaBene

raspberry pi & k8s

February 20, 2020

ハマりまくったので記録

構成

Raspberry PiとあまったPCでクラスタを構成する. めんどくさいのでRaspberry Pi達は無線LANに直接ぶらさげてIPをDHCP固定で払いだす. のちのちにはPXE Bootしたい.

Raspberry Pi側での設定

Hypriot OSの設定

cloud-configでhostの設定を変える

やらないとworkerの名前が被ってnodeがみえない.

dateの修正

sudo apt-get -y remove ntp
sudo systemctl enable systemd-timesyncd
sudo systemctl daemon-reload
sudo systemctl restart systemd-timesyncd

ip tablesをversion down

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

Private Container Registryの設定

localネットワークに Private Container Registry(192.168.10.116)が立っている想定

めんどくさいので証明証はなし

sudo tee /etc/docker/daemon.json<<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "insecure-registries":["http://192.168.10.116:5000"]
}
EOF

k8sの設定

network add onにはflannelがよいようだ

以下を参照

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

ただし flannelとcore dnsがよく壊れるので再起動時に注意

systemctl stop kubelet
systemctl stop docker
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
iptables --flush
iptables -tnat --flush
ip link delete cni0
ip link delete flannel.1
systemctl start kubelet
systemctl start docker

開発マシンでの設定

CPUが違うので直接はDocker Containerをビルドできない

Build Kitを使う

git clone git://github.com/docker/buildx && cd buildx
make -j
make install

以下は再起動するたびに必要

docker run --rm --privileged linuxkit/binfmt:v0.7
systemctl restart docker.service

ビルドは以下のようにする

docker buildx build ...

Private RegistryにPushするときの設定

$ cat /etc/docker/daemon.json
{ "insecure-registries":["http://192.168.10.116:5000"] }

© 2017-2024 mtphl