Kubernetes

Ubuntu22.04で始めるKubernetes構築ガイド – シングルマスターからHAまで

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

1️⃣ 前提条件・ハードウェア要件

項目 推奨設定
OS Ubuntu 22.04 LTS (64‑bit)
CPU 2 コア以上(4 コア推奨)
メモリ 4 GiB 以上(8 GiB 推奨)
ストレージ SSD ≥ 100 GB
ネットワーク TCP/UDP 443, 6443, 2379‑2380, 10250, 10251, 10252 を相互に開放
時刻同期 chrony または ntp による NTP 同期

ポイント
Ubuntu 22.04 は Kubernetes が公式にサポートしている LTS ディストリビューションです。CPU・メモリの最低要件は各コンポーネントが 1 GiB 程度を必要とすることから、上表のスペックで本番レベルのシングルマスタ/小規模 HA 環境が十分に確保できます。

必須 OS 設定

備考
swapoff -a のみで一時的に無効化できますが、再起動後もスワップを使用しないよう /etc/fstab にコメントを書き込んでおくことがベストプラクティスです。


2️⃣ コンテナランタイム – containerd の導入

Docker が非推奨になった背景(正確なバージョン)

containerd のインストール手順

ポイント
containerd のデフォルト設定は CRI ソケット /run/containerd/containerd.sock を提供します。以後の kubeadm initjoin ではこのパスを明示してください。


3️⃣ Kubernetes コアコンポーネント(kubeadm/kubelet/kubectl)インストール

バージョン統一とアップデート防止

kubelet の有効化

注意
kubelet は起動時に /run/containerd/containerd.sock を自動検出しますが、明示的に指定したい場合は /etc/default/kubeletKUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock を追記してください。


4️⃣ シングルマスタ構成でのクラスタ初期化

kubeadm init の必須フラグ

フラグ 用途
--pod-network-cidr=192.168.0.0/16 Calico など CNI が使用する Pod IP 範囲
--cri-socket=/run/containerd/containerd.sock Docker ではなく containerd を利用させる
--control-plane-endpoint=<IP>:6443 (任意) 後で外部ロードバランサを導入する際の固定エンドポイント

管理者用 kubeconfig の設定

結果確認
bash
kubectl get nodes # Master が Ready と表示されるはずです


5️⃣ CNI デプロイ – Calico

ポイント
Calico は BGP ルーティングと NetworkPolicy を提供し、Kubernetes が推奨する CNI のひとつです。Pod CIDR と一致させるだけで即座にネットワークが有効になります。


6️⃣ 外部 etcd(本番向け)

重要
apt-get install -y etcd はテスト環境向きです。本番では公式バイナリを直接ダウンロードし、検証済みの設定で systemd 管理することが推奨されます。

公式バイナリによるインストール手順

確認
bash
ETCDCTL_API=3 etcdctl endpoint health --endpoints=http://10.0.0.11:2379

kubeadm で外部 etcd を利用する設定

kubeadm init 時に以下のフラグを追加:

ポイント
証明書は kubeadm init phase certs all で事前に生成しておくとスムーズです。


7️⃣ コントロールプレーンの増設(HA)

新しいマスターで実行(IP は対象ノードの IP)

結果確認
bash
kubectl get nodes -o wide # 2 台以上が Ready になるはずです


8️⃣ ワーカーノード参加手順

ワーカー側:

ポイント
kubeadm join--cri-socket を省略すると自動的に /run/containerd/containerd.sock が使用されます(Docker がインストールされていても影響なし)。


9️⃣ Conformance テストの実行(containerd 環境)

(1) Conformance イメージ取得

Kubernetes の公式 Conformance イメージは Docker/ctr 両方でプル可能です。runtime が containerd でも docker pull だけでローカルにキャッシュされ、後続の sonobuoy が利用します。

(2) Sonobuoy でテスト実行

(3) 結果取得

合格基準
All tests passed が出力され、plugins/e2e/results/ 配下にエラーが無いことを確認すれば Conformance 合格です。


10️⃣ セキュリティベストプラクティス

項目 推奨設定
RBAC デフォルトで有効。最小権限のロールを作成し、ClusterRoleBinding は必要最小限に限定
API 認証・監査 kube-apiserver--authorization-mode=Node,RBAC --audit-policy-file=/etc/kubernetes/audit-policy.yaml を付与。ログは外部 SIEM へ転送
TLS 強化 etcd・kubelet·apiserver の通信は TLS 1.3 以上を使用し、証明書は cert-manager で自動更新
トークン管理 kubeadm token create --ttl 0 は長期間の運用では危険。定期的にローテーションし、不要になったトークンは kubeadm token delete <token> で削除
etcd バックアップ ETCDCTL_API=3 etcdctl snapshot save /var/backups/etcd-$(date +%F).db を cron に登録。復元手順もドキュメント化

11️⃣ アップグレード戦略(例:v1.30 → v1.31)

必須:アップグレード前に必ず etcd snapshot を取得し、テストクラスターでリハーサルを行うこと。


12️⃣ まとめ(要点)

  1. Swap 無効化containerd の導入 が kubeadm 実行の前提条件。
  2. 本番環境では etcd を公式バイナリでデプロイ し、apt install etcd は避ける。
  3. Docker は Conformance イメージ取得にだけ使用(runtime は containerd)。
  4. kubeadm init の必須フラグは --pod-network-cidr--cri-socket、必要なら --control-plane-endpoint
  5. Calico で Pod ネットワークと NetworkPolicy を即座に有効化。
  6. 外部 etcd + kubeadm join --control-plane により HA(複数コントロールプレーン) が数ステップで実現できる。
  7. ワーカーノードはトークン共有だけで参加可能、Conformance テストは Sonobuoy で自動化。
  8. RBAC・TLS・監査ログなど セキュリティ設定 を忘れずに適用し、定期的なバックアップとバージョン管理で運用を安定させる。

これらの手順をそのまま実行すれば、2026 年時点でも 本番向け高可用性セキュア な Kubernetes クラスタが構築できます。 Happy K8s!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kubernetes