Ubuntu 26.04 を Kubernetes ノードとして使う場合、kubeadm init や kubeadm join の前に、OS 側の前提をそろえておく必要があります。特に container runtime、swap、kernel module、sysctl、Kubernetes 用APTリポジトリ、kubelet と kubeadm の version 管理が重要です。
この記事では、Kubernetes ノードの事前準備として、Kubernetes 公式APTリポジトリを追加し、kubelet と kubeadm を導入して hold する流れをまとめます。
- Kubernetes ノード準備で確認する範囲
pkgs.k8s.ioのAPTリポジトリ- APT keyring と source list の配置
kubeletとkubeadmの導入apt-mark holdによる version 固定
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| APT key | /etc/apt/keyrings/kubernetes-apt-release.key |
| keyring | /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
| source list | /etc/apt/sources.list.d/kubernetes.list |
| 主な package | kubelet、kubeadm |
事前準備の範囲を分ける
Kubernetes ノード準備は、すべてを kubeadm の作業としてまとめない方が安全です。OS の前提、container runtime、Kubernetes package、クラスタ参加操作を分けて確認します。
- container runtime は別に確認する
- swap は Kubernetes の前提に合わせて無効化する
- kernel module と sysctl を先に確認する
- Kubernetes package は version を固定する
- control plane と worker の操作を分ける
Kubernetes の minor version を決める
Kubernetes のAPTリポジトリは、v1.34 のように minor version 単位で指定します。クラスタ全体で使う minor version を決めてから、control plane と worker node の準備を合わせます。
k8s_minor="1.34"
repo_base="https://pkgs.k8s.io/core:/stable:"
repo_url="${repo_base}/v${k8s_minor}/deb"
echo "$repo_url"APT keyring ディレクトリを作成する
Kubernetes 公式リポジトリの Release key を保存し、gpg --dearmor でAPT用 keyring を作成します。
sudo install -d -o root -g root -m 0755 /etc/apt/keyrings
curl -fsSL -o /tmp/kubernetes-apt-release.key "${repo_url}/Release.key"
sudo install -o root -g root -m 0644 /tmp/kubernetes-apt-release.key /etc/apt/keyrings/kubernetes-apt-release.key
sudo gpg --dearmor --yes -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg /etc/apt/keyrings/kubernetes-apt-release.key
sudo chmod 0644 /etc/apt/keyrings/kubernetes-apt-keyring.gpgAPT source list を配置する
signed-by で Kubernetes 用 keyring を指定し、専用の source list として配置します。
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /printf '%s\n' "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] ${repo_url}/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 0644 /etc/apt/sources.list.d/kubernetes.list
sudo apt updatekubelet と kubeadm を導入する
kubelet は各ノード上でPodを動かすためのエージェントです。kubeadm はクラスタ初期化やノード参加のためのツールです。
sudo apt install -y kubelet kubeadm
kubelet --version
kubeadm version -o shortpackage を hold する
Kubernetes の component は、OS の通常更新で意図せず上がらないように hold します。更新するときは、control plane、worker、addon の順序を決めて計画的に行います。
sudo apt-mark hold kubelet kubeadm
apt-mark showhold | grep -E 'kubelet|kubeadm'proxy 環境を確認する
proxy 環境では、Release key 取得、APT update、image pull、control plane への接続がそれぞれ影響を受けます。必要な場合は HTTP_PROXY、HTTPS_PROXY、NO_PROXY を確認します。
printenv HTTP_PROXY
printenv HTTPS_PROXY
printenv NO_PROXY
sudo apt update
curl -I "$repo_url/Release" OS 側の前提を確認する
Kubernetes package を入れるだけではノード準備は完了しません。container runtime、swap、kernel module、sysctl の前提を合わせて確認します。
systemctl status containerd --no-pager
swapon --show
lsmod | grep -E 'overlay|br_netfilter'
sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-iptableskubeadm 実行前の確認
control plane では kubeadm init、worker では kubeadm join を実行します。どちらの場合も、事前に version と runtime の状態を確認します。
kubeadm version -o short
kubelet --version
crictl info
systemctl is-enabled kubelet
systemctl status kubelet --no-pager確認ポイント
- Kubernetes の minor version をクラスタ全体で決めている
/etc/apt/keyrings/kubernetes-apt-keyring.gpgを使っている/etc/apt/sources.list.d/kubernetes.listが意図した minor version を指しているkubeletとkubeadmを導入しているapt-mark holdで自動更新を抑制している- container runtime、swap、kernel module、sysctl を別途確認している
まとめ
Ubuntu 26.04 を Kubernetes ノードとして使う場合、kubeadm の実行前に OS 側の前提をそろえることが大切です。container runtime、swap、kernel module、sysctl を確認した上で、Kubernetes 公式APTリポジトリから kubelet と kubeadm を導入します。
また、Kubernetes component は不用意に自動更新されるとクラスタ運用に影響します。apt-mark hold で version を固定し、control plane と worker node の更新順序を決めてから進めるのが安全です。

