PONOS Advent Calendar 2023の21日目の記事です。
昨日は@tequila0725さんの『ChatGptとGASでSlackのメンバー追加をラクにした話』でした。
はじめに
こちらの記事を読んでよっしゃやってみっかと思ってやりました。
普段業務でKubernetesを使ってないので勉強も兼ねてます。
未完!!
未完なのでKubernetesの恩恵を得るところまでいっていません。
インストール大変だった話です。
PCを買う
Beelink Mini S12 Pro
https://www.amazon.co.jp/gp/product/B0BWMWFCSG
CPU: N100
メモリ: 16GB
ストレージ: 500GB
購入時の価格: 22,900円
軽くて小ちゃい。
書いてるときに見たらなんか高くなってました。
Ubuntuを入れる
Ubuntu Desktop 22.04.3 LTSをインストールしました。
最初は画面でポチポチやって、その後はsshで入って作業します。
アドレス固定したり鍵認証に変えたり等々。
こういう作業も久しぶり。
Ubuntuのisoファイルを焼くメディアが手元になかったので急遽購入しました。
Kubernetesを入れる
ディストリビューションは色々あるのですが
とりあえずkubeadmを入れることにしました。
以下のインストール手順を見たり他のサイトを参考にしました。
以下作業ログ
コンテナランタイムはcontainerdを入れた
sudo apt install containerd
curlがなかったのでインストール
sudo apt install curl
kubeadmと周辺ツールのインストール
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
sudo apt-mark hold kubelet kubeadm kubectl
なんかswap止めないといけないらしいので止める
sudo swapoff -a
これだと再起動で復活するので/etc/fstabでswapっぽいところをコメントアウト
再起動してswapが止まってることを確認
free -h
total used free shared buff/cache available
Mem: 15Gi 1.1Gi 12Gi 282Mi 2.3Gi 13Gi
Swap: 0B 0B 0B
マスターノードを起動!!
sudo kubeadm init --node-name master --pod-network-cidr=10.244.0.0/16
エラーが出る
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
コンテナランタイムのところでForwarding IPv4 and letting iptables see bridged trafficをやってないのが原因らしいのでやる
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# sysctl params required by setup, params persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
再度実行...成功
sudo kubeadm init --node-name master --pod-network-cidr=10.244.0.0/16
...
Your Kubernetescontrol-plane has initialized successfully!
成功するとこれをやれっていうのが出るので言われたとおりにやる
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 nodes
エラーが出る
The connection to the server 192.168.x.x:6443 was refused - did you specify the right host or port?
またもやコンテナランタイムのところで必要な設定をやっていないのが原因らしいのでやる
sudo mkdir /etc/containerd
sudo sh -c "containerd config default > /etc/containerd/config.toml
tomlを編集してSystemdCgroupをtrueに変更
SystemdCgroup = true
containerdを再起動してノードもリセットする
sudo systemctl restart containerd.service
sudo kubectl reset
再度init...成功!!!
...NotReady???
sudo kubeadm init --node-name master --pod-network-cidr=10.244.0.0/16
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady control-plane 3m51s v1.29.0
cni plugin not initializedらしい
kubectl describe node
container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
flannelを入れる
sudo sysctl net.bridge.bridge-nf-call-iptables=1
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
成功!
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 9m38s v1.29.0
おわりに
ということでマスターノードを起動するところまでやりました。
コンソールポチポチーとかterraformでーとかできるのは凄くありがたいことだな〜。
以上
明日は@ANIZA_15さんの『「Loco」をCloud Runで実行する』です!!!