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"] }