Raspberry Pi 4Bにk8sクラスタを立てる
public.icon
参考: home-kubernetes-2020/how-to-create-cluster-logical-kubeadm at master · CyberAgentHack/home-kubernetes-2020 · GitHub
Raspberry Piをかき集めてKubernetesを体感する | フューチャー技術ブログ
メモ
Dockerのインストールコマンドが古くて使えない
code:shell
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
ref: Install Docker Engine on Debian | Docker Documentation
k8sのインストール
code:sh
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
ref: kubeadmのインストール | Kubernetes
missing required cgroups: memoryが発生
/boot/firmware/cmdline.txtじゃなくて/boot/cmdline.txtにcgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memoryを追記
Kubelet: running with swap on is not supported, please disable swapと怒られる
code:sh
sudo swapoff --all
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
systemctl status dphys-swapfile
ref: Raspberry Pi swap の無効化 - let's raspberry pi
initした後にこれを実行する必要あり
code:sh
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
node接続時にcontainer runtime is not runningで怒られる
code:sh
rm /etc/containerd/config.toml
systemctl restart containerd
ref: kubeadm / containerd で Kubernetes - Qiita
node接続時にerror execution phase preflight: couldn't validate the identity of the API Server: invalid discovery token CA certificate hash: invalid hash, expected "format:hex-value". Known format(s) are: sha256で怒られる
discovery-token-ca-cert-hashの先頭にsha256をつける
ref: kubernetes kubeadmで構築した後トークン失効後にworkerノードを追加する - zaki work log
node接続時にconnection refusedで怒られる
kubeadm resetしてinitからやり直す
kubeadm reset | Kubernetes
Flannel
code:sh
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
ダッシュボードUI
code:sh
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
ref: Web UI (Dashboard) | Kubernetes
sudo adduser ubic docker
コンテナランタイムとしてdockerが非推奨になってた...
CRI-Oを使うと良いらしい
RaspberryPiでコンテナを始める~Podman編~ | SIOS Tech. Lab
CRIのインストール | Kubernetes
code:sh
VERSION=1.23
OS=Debian_11
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key |sudo apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -
sudo apt update && sudo apt upgrade -y
sudo apt install cri-o cri-o-runc
sudo systemctl daemon-reload
sudo systemctl start crio