手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Kubernetes ノードの事前準備 – kubelet / kubeadm とAPTリポジトリを構成する

関連する記事

Ubuntu 26.04 を Kubernetes ノードとして使う場合、kubeadm initkubeadm join の前に、OS 側の前提をそろえておく必要があります。特に container runtime、swap、kernel module、sysctl、Kubernetes 用APTリポジトリ、kubeletkubeadm の version 管理が重要です。

この記事では、Kubernetes ノードの事前準備として、Kubernetes 公式APTリポジトリを追加し、kubeletkubeadm を導入して hold する流れをまとめます。

この記事で扱うこと
  • Kubernetes ノード準備で確認する範囲
  • pkgs.k8s.io のAPTリポジトリ
  • APT keyring と source list の配置
  • kubeletkubeadm の導入
  • apt-mark hold による version 固定
対象 OSUbuntu 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
主な packagekubeletkubeadm
参考書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes の基礎、ノード、Pod、Service、運用確認を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

事前準備の範囲を分ける

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.gpg

APT source list を配置する

signed-by で Kubernetes 用 keyring を指定し、専用の source list として配置します。

/etc/apt/sources.list.d/kubernetes.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 update

kubelet と kubeadm を導入する

kubelet は各ノード上でPodを動かすためのエージェントです。kubeadm はクラスタ初期化やノード参加のためのツールです。

sudo apt install -y kubelet kubeadm
kubelet --version
kubeadm version -o short

package を 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_PROXYHTTPS_PROXYNO_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-iptables

kubeadm 実行前の確認

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 を指している
  • kubeletkubeadm を導入している
  • apt-mark hold で自動更新を抑制している
  • container runtime、swap、kernel module、sysctl を別途確認している

まとめ

Ubuntu 26.04 を Kubernetes ノードとして使う場合、kubeadm の実行前に OS 側の前提をそろえることが大切です。container runtime、swap、kernel module、sysctl を確認した上で、Kubernetes 公式APTリポジトリから kubeletkubeadm を導入します。

また、Kubernetes component は不用意に自動更新されるとクラスタ運用に影響します。apt-mark hold で version を固定し、control plane と worker node の更新順序を決めてから進めるのが安全です。

関連する記事
Ubuntu 26.04 Kubernetes ノードの事前準備 – kubelet / kubeadm とAPTリポジトリを構成する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る