Skip to content
2026年2月4日
  • サイトマップ
  • 旅行の思い出
  • プライバシーポリシーと免責条項
  • 運営者情報とご連絡先

cosicosilife.com

旅行の思い出を共有します。都会や先進国は後回し、発展途上国や田舎の素晴らしさを優先して配信

Primary Menu
  • サイトマップ
  • 旅行の思い出
  • プライバシーポリシーと免責条項
  • 運営者情報とご連絡先
  • Home
  • 未分類
  • Ubuntu server初期状態からのkubernetes導入ガイド
  • 未分類

Ubuntu server初期状態からのkubernetes導入ガイド

david 2026年1月22日

この記事の目次(クリックしたらジャンプ)

Toggle
  • はじめに
    • 📌 前提環境とバージョン方針
  • 1. 初期セットアップ
    • パッケージ更新と必須ツールの導入
    • 時刻同期の設定(超重要)
  • 2. カーネルとネットワークの調整
    • Swapの完全無効化
    • ネットワーク設定(iptablesとフォワーディング)
  • 3. コンテナランタイム(containerd)の準備
    • Cgroup設定の変更(忘れずに!)
  • 4. Kubernetesコンポーネントのインストール
  • 5. クラスタの初期化 (kubeadm init)
  • 6. ネットワークプラグイン (Cilium) の導入
  • 7. 動作確認
    • 💡 運用のためのTips
  • 最後に

はじめに

最近、自宅のラボ環境(VMware Workstation)でKubernetesの検証をしようと思ったのですが、ネット上の記事が古かったり、手順通りにやってもエラーが出たりして、かなり時間を溶かしてしまいました…。

特に v1.24以降の変更(dockershim廃止) や v1.30系の最新手順 がまとまっている記事が少なかったので、「これをコピペすれば絶対動く!」という自分用の完全メモを残しておくことにしました。

こんな人におすすめです

  • CKA/CKADの勉強用に、手元で壊せるクラスタが欲しい人
  • VMware Workstationなど、オンプレミス環境で構築したい人
  • kubeadm を使った標準的な構築手順を知りたい人

📌 前提環境とバージョン方針

  • 仮想化ソフト: VMware Workstation(ネットワークはブリッジモード推奨)
  • OS: Ubuntu Server(インストール直後のまっさらな状態)
  • コンテナランタイム: containerd(Dockerではありません)
  • Kubernetesバージョン: v1.30系(※URLの数値を書き換えればv1.29等も対応可)

1. 初期セットアップ

まずはOSの足回りを整えます。ここをサボると後で謎のエラーに悩まされるので、しっかりやっておきましょう。

パッケージ更新と必須ツールの導入

# まずはシステムを最新の状態へ
sudo apt-get update
sudo apt-get -y upgrade

# 必要なツール群を一括インストール
sudo apt-get install -y ca-certificates curl gnupg lsb-release apt-transport-https software-properties-common vim git

時刻同期の設定(超重要)

Kubernetesは証明書の有効期限を厳密に管理するため、時刻がズレていると正常に動作しません。必ずJST(日本時間)に合わせて同期を有効化しておきます。

# タイムゾーンを東京に設定
sudo timedatectl set-timezone Asia/Tokyo

# 同期サービスを有効化
sudo systemctl enable --now systemd-timesyncd

# 確認
timedatectl

2. カーネルとネットワークの調整

ここがKubernetes構築の最大の「ハマりポイント」です。

Swapの完全無効化

Kubernetesは、パフォーマンスの予測可能性を保つためにSwapの使用を禁止しています。これを忘れると kubelet が起動しません。

# 一時的に無効化
sudo swapoff -a

# 再起動後も無効化されるようにfstabから削除
sudo sed -i.bak '/\sswap\s/d' /etc/fstab

ネットワーク設定(iptablesとフォワーディング)

Pod間の通信ができるように、カーネルモジュールとパラメータを設定します。

# 必要なモジュールをロード
cat <<'EOF' | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# カーネルパラメータの設定
cat <<'EOF' | sudo tee /etc/sysctl.d/99-kubernetes.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 設定を即時反映
sudo sysctl --system

3. コンテナランタイム(containerd)の準備

現在はDockerではなく、containerd を直接使用するのが標準です。Docker公式リポジトリから安定版をインストールします。

# 1. GPGキーの追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 2. リポジトリの追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 3. インストール実行
sudo apt-get update
sudo apt-get install -y containerd.io

Cgroup設定の変更(忘れずに!)

デフォルト設定のままだと、Kubernetesの管理するCgroupと競合して不安定になります。SystemdCgroup を true に変更するのが鉄則です。

# デフォルト設定ファイルを生成
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null

# SystemdCgroupをtrueに書き換え
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 反映と再起動
sudo systemctl enable --now containerd
sudo systemctl restart containerd

4. Kubernetesコンポーネントのインストール

いよいよ本丸、kubelet、kubeadm、kubectl を入れます。

# 1. リポジトリキーの追加 (v1.30の場合)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# 2. リポジトリリストの作成
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null

# 3. インストール
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

# 4. バージョンの固定 (勝手にアップデートされるのを防ぐ)
apt-mark hold kubelet kubeadm kubectl

# 5. サービスの有効化
sudo systemctl enable kubelet

5. クラスタの初期化 (kubeadm init)

準備が整ったので、コントロールプレーンを立ち上げます。

# CIDRは環境に合わせて調整してください
# 自宅LANと被らないように注意 (例: 10.0.0.0/8 または 10.244.0.0/16)
sudo kubeadm init --pod-network-cidr=10.0.0.0/8

初期化が成功したら、管理者権限なしで kubectl を叩けるように設定ファイルをコピーします。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6. ネットワークプラグイン (Cilium) の導入

CNI(Container Network Interface)には、最近のデファクトスタンダードである Cilium を採用しました。Helmを使ってインストールします。

# 1. Helmのインストール
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

# 2. Ciliumリポジトリの追加
helm repo add cilium https://helm.cilium.io/
helm repo update

# 3. Ciliumのインストール
# ※ k8sServiceHost のIPアドレスは、ご自身のAPI ServerのIP(kubectl cluster-infoで確認可)に書き換えてください!
helm install cilium cilium/cilium --version 1.15.2 \
  --namespace kube-system \
  --set kubeProxyReplacement=true \
  --set k8sServiceHost=192.168.2.14 \
  --set k8sServicePort=6443

7. 動作確認

最後に、すべてのPodが Running 状態になっているか確認します。

kubectl get pods -A

💡 運用のためのTips

  • リソース割り当て: 最低でも 2CPU / 4GB RAM は割り当てましょう。快適に動かすなら4CPU/8GB推奨です。
  • ファイアウォール: 通信できない場合は、ポート 6443 (API), 10250 (kubelet) がブロックされていないか確認してください。
  • スナップショット: 初期構築が完了したこのタイミングで、VMwareのスナップショットを取得しておくことを強く推奨します!

最後に

以上で、VMware上のUbuntu ServerにKubernetes環境が構築できました。
ここまで構築できれば、あとはPodを立てたりServiceを公開したり、自由に検証が可能です。

もし手順通りにいかない場合は、Swapの設定やIPアドレス周りをもう一度確認してみてください。良いKubernetesライフを!

  • Ubuntu server初期状態からのkubernetes導入ガイド
  • ラオス・ルアンパバーン。「何もない」贅沢と、最後に待っていた「猫」という名の罠
  • 【南米縦断記Vol.6 完結】生きて帰れるか?世界一危険な「デス・ロード」をMTBで疾走。崖から落ちた死者たちの怨念と、グラベルロードへの誘い
  • 【南米縦断記Vol.5】混沌のラパスを脱出し、白銀の絶景ウユニ塩湖へ。赤錆びた列車と「鏡張り」にならなかった大地の美学
  • 南米縦断記Vol.3 石積みの古都クスコの熱気と、チチカカ湖の「編み物男子」。アンデスの伝統文化に触れる2日間

アーカイブ

  • 2026年1月

カテゴリー

  • asia
  • middle-east
  • south_america
  • travel
  • 未分類
  • サイトマップ
  • 旅行の思い出
  • プライバシーポリシーと免責条項
  • 運営者情報とご連絡先
  • サイトマップ
  • 旅行の思い出
  • プライバシーポリシーと免責条項
  • 運営者情報とご連絡先
Copyright © Cosicosilife | MoreNews by AF themes.