Kubeのインストールubuntu24版
なぜ今更
24.04版は散らばってそうだったので
microk8sとかNomadとかnimikubeとかは逃げなきがしたので。男らしい手法で。
クライアント状況によってはこのままだといまいち動かないかもしれませんので怪しい部分あるので良しなに。
kubeのインストール
sudo apt update
sudo apt upgrade -y
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
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
sudo sysctl --system
sudo vim /etc/fstab
'''
#/swap.img none swap sw 0 0sudo swapoff -a
'''
sudo swapoff -a
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /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.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
cri-oのインストール(なんてcri-oがいいのかはよくわかってないです。)
※ここはファイル弄ったりするのでルートが良さげ
export OS=xUbuntu_24.04
export CRIO_VERSION=1.31:/1.31.2
export VERSION=1.31:1.31.2
KUBERNETES_VERSION=v1.30
PROJECT_PATH=prerelease:/main
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/$PROJECT_PATH/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/$PROJECT_PATH/deb/ /"|tee /etc/apt/sources.list.d/cri-o.list
sudo apt-get update
sudo apt-get install -y cri-o buildah
sudo mv /etc/cni/net.d/10-crio-bridge.conflist.disabled /home/ubuntu
sudo systemctl daemon-reload
sudo systemctl enable crio
sudo systemctl start crio
-------ここまでやったものが雛形になる。
プラグインも入れておくとりあえずcalicoで
※クラスタ生きてないとだめかも。その場合はクラスタ上げた後で。
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.1/manifests/custom-resources.yaml
※Podが無いので、 crictl info とかしてもNetworkがTrueにならないので気にしないこと。
なおIPは固定しておいた方がいいかも。
vim /etc/netplan/99-installer-config.yaml
network:
ethernets:
ens18:
dhcp4: false
addresses:
- 192.168.x.xx/xx #固定ip
routes:
- to: default
via: 192.168.x.x
nameservers:
addresses:
- 192.168.x.x
version: 2
よくファイル名を00始まりにしてる人居るみたいだけど、
多分ログ読まないでコピペして動かねーとか言う勢。
hostnameは適宜。
hostnamectl hostname kube-master
起動
この辺もrootが良さそう
kubeadm init --apiserver-advertise-address=192.168.x.xx --pod-network-cidr=172.20.0.0/16
固定したIPを指定(一応IPが複数あることを想定して指定)
打てと言われるのでmasterで打つ(起動するとLOGに出る)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown
追加するノードで打つ(起動するとLOGに出る)
sudo kubeadm join 192.168.X.X:6443 --token hogehoge
--discovery-token-ca-cert-hash sha256:hogehoge
24時間しか持たないので、もし追加するときはcreateでtokenを再発行する
うまくいくと、
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
が表示されるので、
masterに戻って
kubectl get nodesでノードを確認。
できたら
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
実行してカップ麺。
しばらくするとReadyになるはず。
終わりに
別件でproxmox上に上記の手順で環境を作ってみたけどKube自体の検証環境としてメッチャ調子いいなと思ったので、家にも環境作りたいなーみたいなところからでした。
基本的に、WSL2+Docker(AnsibleでControl)みたいな環境を手元に置いていたんですが飽きたのでK8sに手出すか~みたいな狙いもあり、OCIのalwaysFree(Ampere取れたら話は変わるんですが)と手元にあったラズパイ32台でk3sが1GB要らないという情報を頼りに構築してみたんですが、しっかり全然たりず要件見たら1.2GBくらいほしい、に変わっててどうしたもんかなと思い、結局は実際は古いマックが余ってたので、Fusionがタダになったのでそこ上にProxmox(MAC自体のKube化とかos飛ばして直接ハイパーバイザーぶっこむとかは後で戻せる自信もBKUPもなかったのです。)を入れて中でVM入れて構築、って感じにしたかったんですが、ISOを読み込んでくれないんで諦めてfusionで直接構築しました。消費電力がなぁ、、って感じなんですよね。
誰かいい方法教えてください。
Discussion