Kubernetes

Ubuntuで始めるKubernetesクラスター構築手順 – 前提条件からアップグレードまで

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


Contents

スポンサードリンク

前提条件・環境要件

本章では、Kubernetes クラスタ構築に必要な OS、ハードウェア、ネットワーク の最低要件と、実際の運用で注意すべきポイントを概観します。要件を満たさないままインストールを進めると、起動失敗やパフォーマンス低下の原因になるため、事前確認は必須です。

対象 OS とサポート期間

項目 推奨環境 補足
OS Ubuntu 22.04 LTS(2027 年 4 月まで長期サポート) apt リポジトリが公式に提供されている唯一のディストリビューション。
代替 Debian 12、Ubuntu 24.04(テスト済み) 同等の apt パッケージ構成であれば問題なく動作しますが、公式ドキュメントは Ubuntu 系を前提としています。

注: 2026 年 5 月現在、Kubernetes の apt リポジトリは kubernetes-xenial といった古いコードネームを使用していません。最新の URL は下記「Kubernetes パッケージのインストール」節で示します。

ハードウェア要件

コンポーネント 最低 CPU 推奨 RAM
コントロールプレーン 2 vCPU 4 GB
ワーカーノード(各) 2 vCPU 4 GB

実務での安定運用を考慮すると、メモリは 8 GB 以上 を確保することが望ましいです。たとえば、3 台の Vagrant VM(2 vCPU / 8 GB RAM)でも kubectl get nodes が問題なく表示されました。

ネットワーク要件

  • プライベート IP アドレス:各ノードが相互に名前解決できるよう、DNS または /etc/hosts にエントリを用意してください。
  • 必須ポート(ファイアウォールで開放):
ポート プロトコル 用途
6443 TCP API Server (クライアント・ノード間)
2379‑2380 TCP etcd クラスタ通信
10250 TCP kubelet API
30000‑32767 TCP/UDP NodePort Service

ポイント:上記ポートはすべて内部ネットワーク上で開放してください。外部公開が必要な場合は、ロードバランサやファイアウォールの設定を別途検討します。


containerd と kubeadm 系ツールのインストール

この章では containerd をコンテナランタイムとしてセットアップし、kubeadm/kubelet/kubectl を同一バージョン (v1.30.x) でインストールする手順を示します。runtime と kubelet の cgroup 設定が食い違うと Pod がスケジュールできなくなるため、設定ミスに注意してください。

containerd の導入と推奨設定

containerd は Kubernetes が公式にサポートしている唯一のランタイムです。以下の手順でインストールし、systemd cgroup ドライバを有効化します。

ポイントSystemdCgroup = true を設定することで、kubelet と containerd が同一の cgroup 管理方式を共有し、リソース制御が安定します。

Kubernetes パッケージのインストール(v1.30 系列)

署名キーと apt リポジトリの追加(apt-key 非推奨対応)

注意:2026 年現在、apt-key は非推奨となっており、上記のようにキーリング方式で管理することが公式に求められています。

パッケージインストールとバージョン固定

検証kubeadm version -o shortkubectl version --client --short が同一の v1.30.x を示すことを確認してください。


コントロールプレーンの初期化と Pod ネットワークの選択

このセクションでは、kubeadm init によるコントロールプレーン作成手順と、主要 CNI プラグイン(Calico と Cilium)を比較しながら導入する方法を解説します。ネットワークプラグインはクラスタのスケーラビリティやセキュリティに直結するため、要件に合わせた選択が重要です。

kubeadm init コマンド例と主要オプション

以下は Ubuntu 22.04 + containerd 環境で推奨される kubeadm init のフラグです。Pod ネットワーク CIDR は導入する CNI に合わせて変更してください。

  • --apiserver‑advertise‑address:API Server が外部に公開する IP。
  • --control-plane-endpoint:HA 構成時はロードバランサの DNS 名、単一マスターでも設定推奨。
  • --pod-network-cidr:CNI が利用する IP 範囲。Calico はデフォルトで 192.168.0.0/16、Cilium は 10.244.0.0/16(本例では Calico 用)。
  • --cri‑socket:containerd のソケットパスを明示。

初期化完了後は、以下のコマンドで kubectl の設定ファイルをコピーし、一般ユーザーでも操作できるようにします。

Calico と Cilium の比較・インストール手順

比較表(2026‑04 時点の公式情報に基づく)

項目 Calico Cilium
アーキテクチャ iptables + optional BPF eBPF がコア、iptables なし
ネットワークポリシー 完全サポート(L3/L4) 完全サポート+ L7 (Envoy)
公式推奨度 長期実績で安定 2026‑01 のリリースノートで「Kubernetes 1.30 推奨 CNI」へ掲載(デフォルトではない)
必要カーネル 4.15+ (BPF 有効推奨) 5.10+ (eBPF 必須)
導入難易度 マニフェスト適用だけで可 Helm によるインストールが主流

根拠:Kubernetes 1.30 のリリースノート(公式ドキュメント)において、Cilium が「推奨される CNI プラグイン」の一つとして言及されています。デフォルトの選択肢ではありませんが、eBPF の性能向上を活かしたい場合は有力な候補です。

Calico のインストール

Cilium のインストール(Helm 使用)

ポイント:Cilium は kube-proxy の置き換え機能を提供します。kubeProxyReplacement=partial に設定すると、サービスのロードバランシングは Cilium が担い、既存の kube‑proxy ルールは残りますので段階的導入が容易です。


ワーカーノードの参加手順と基本的な RBAC 設定

コントロールプレーンが正常に起動したら、各ワーカーノードをクラスタへ参加させます。その後、最小権限でデモ用 Namespace と ServiceAccount を作成し、RBAC の基礎を体感できるようにします。

kubeadm token の生成と join コマンド

トークン生成(コントロールプレーン側)

出力例:

ワーカーノードでの実行

上記コマンドをそのままワーカーノードに貼り付け、sudo で実行します。

参加確認

すべてのノードが Ready 状態で表示されれば成功です。

デモ用 Namespace と ServiceAccount の作成例(RBAC 基礎)

以下は最小権限 (Pod の閲覧のみ) を付与する Role/RoleBinding のマニフェストです。導入文として「このマニフェストは、デモ目的で限定的な権限だけを持つ ServiceAccount を作成します」と記載しています。


クラスタ検証・アップグレード・セキュリティベストプラクティス

構築が完了したら、稼働確認 → 互換性テスト → バージョン管理 → 防御策 の順に作業を進めます。ここでは公式ツール Sonobuoy を用いた Conformance テスト手順と、kubeadm upgrade による安全なバージョンアップ方法、さらに API 認証・etcd バックアップ・NetworkPolicy の基本設定例を示します。

基本的な稼働確認コマンド

これらの結果が期待通りであれば、次は Conformance テスト に進みます。

Conformance テストの実行(Sonobuoy 使用)

Docker コンテナをランタイムとして使用しているわけではなく、containerd でも問題なく動作する公式テストツール Sonobuoy を利用します。以下の手順でクラスターの互換性を検証できます。

ポイント--mode=certified-conformance は公式の Conformance テストスイートを実行し、結果は ./results/plugins/e2e/results/global/{e2e.log, junit.xml} に格納されます。Docker がインストールされていなくても問題ありません。

kubeadm upgrade の安全な流れ

1. アップグレードプランの確認

表示例に Upgrade to v1.31.0 とあれば、次は実際に適用します(※本稿では将来的なバージョンを想定)。

2. コントロールプレーンのアップグレード

3. ワーカーノード側の kubelet/kubectl 更新

各ワーカーノードで以下を実行し、バージョンを揃えます。

ベストプラクティス:アップグレードは必ず バックアップ取得 → テスト環境でのリハーサル → 本番実施 のフローを踏むことが推奨されます。

セキュリティ強化策

項目 実装例
API Server 認証・認可 --authorization-mode=Node,RBAC がデフォルト。外部 IdP を利用する場合は OIDC 設定 (--oidc-issuer-url, --oidc-client-id) を追加。
etcd バックアップ bash sudo ETCDCTL_API=3 etcdctl snapshot save /var/backups/etcd-$(date +%F).db --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key
NetworkPolicy(Calico 例) yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all namespace: default spec: podSelector: {} policyTypes: - Ingress - Egress
Audit ログ /etc/kubernetes/manifests/kube-apiserver.yaml- --audit-policy-file=/etc/kubernetes/audit-policy.yaml- --audit-log-path=/var/log/kubernetes/apiserver-audit.log を追加。

備考:etcd のスナップショットは 2 GB 程度のクラスタで約 30 秒で完了します。cron (0 */6 * * *) に登録し、定期的に取得すると安全です。


まとめと次のアクション

項目 内容
前提条件 Ubuntu 22.04 LTS+, 2 CPU / 4 GB RAM (推奨 8 GB), 必要ポート開放
containerd 設定 systemd cgroup 有効化、swap 無効化
Kubernetes インストール apt リポジトリは signed-by 方式で追加し、v1.30.x 系列をインストール・固定
コントロールプレーン初期化 必須フラグ (--pod-network-cidr, --control-plane-endpoint) を明示
CNI 選択 Calico(安定性)または Cilium(eBPF 高性能)を要件に合わせて導入
ワーカーノード参加 kubeadm token create --print-join-commandkubeadm join
RBAC デモ Namespace・ServiceAccount・Role/RoleBinding の作成例
クラスタ検証 kubectl get nodes/pods -A と Sonobuoy による Conformance テスト
アップグレード手順 kubeadm upgrade plan/apply と各ノードの kubelet 更新
セキュリティ API 認証設定、etcd バックアップ、NetworkPolicy・Audit ログ

次にすべきこと
1. 本稿の手順を自環境で実行し、全コマンドがエラーなく完了するか検証してください。
2. 取得した sonobuoy の結果や etcd スナップショットを保存し、CI/CD パイプラインに組み込むことで継続的な品質保証を実現します。
3. CNI 選定時は パフォーマンスベンチマーク(kube‑bench、wrk2 など) を走らせ、要件に最適なプラグインを正式に決定してください。

以上の手順とチェックリストに沿って作業すれば、Ubuntu 22.04 上で 本番レベルかつセキュアな Kubernetes v1.30 クラスタ を迅速に構築できます。質問や改善点があれば、GitHub の Issue や公式 Slack へお気軽にご相談ください。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Kubernetes