Kubernetes 解体新書Part 0 イントロ

このサイトの歩き方

このサイトで Kubernetes を学ぶとき、どの順に読み、手を動かす場所はどこにあるのか。章の読み順、ブラウザだけで触れる図とクラスタを使う実習の違い、実行ボタンの使い方を知り、最初の 1 コマンドを打てるようになります。

  • L0 ブラウザだけ
  • 更新 2026年10月6日

AWS で Docker のコンテナを動かしていて、Kubernetes を一から学びたい、という人を読者に想定しています。 EC2 に Docker を入れて docker compose を動かした経験や、ECS でタスクを動かした経験があれば十分です。 ターミナルには慣れていて、git や AWS CLI は使えるものとして進めます。

Kubernetes は、全部を一度に理解しようとすると難しいものです。 そこで、このコースは、全体像、ネットワーク、コンテナの中身、外部のプログラムとの取り決め、パブリッククラウドとの関係、の順に 1 つずつ進みます。 ターミナルが好きな人向けに、読むより叩く時間を多めに取ってあります。

この章では、教材そのものの使い方を説明します。 どの順に読めばよいか、手を動かす場所は何種類あるか、右下のターミナルとコードブロックの実行ボタンはどう繋がっているか、という 3 つです。 読み終えると、最初の 1 コマンド (kubectl get nodes) を自分で打てるようになります。

新しく出てくる言葉は、手を動かす場所の呼び名の L0 / L1 / L2 と、Part を読み切ったときにもらえる 称号 です。 Kubernetes の用語は、この章では使わず、Part 1 の中で 1 つずつ説明します。

なぜ学ぶのか

得られる力
迷子にならない地図
支配領域
このコース全体

これから手に入れるのは、クラスタの「どこで何が起きているか」を常に言い当てられる視界です。 障害のときに kubectl describe の出力を前にして、「この層の、このコンポーネントが、この理由で」と指差せるようになります。 その第一歩として、まずこの教材の構造を支配下に置きましょう。 地図を持たずに沼に入る者から、地図を描く側へ。

GOAL この章のゴール

  • 3 層のハンズオン (L0 / L1 / L2) の違いと、各層に何が要るかが分かる
  • ページ右下のターミナルと「ターミナルで実行」ボタンの関係が分かる
  • テーマ切替、キーボード操作、クイズ、称号の場所が分かる
  • このコースの元になったスライドと、そこからどう更新したかが分かる

コースの順路

コースの地図: Part 0 から Part 5 までの順路と、各 Part で手に入る称号6 つの Part が左から右に並び、順に読む。Part 1 から 5 にはそれぞれ称号がある。Part 0イントロ歩き方 / 環境Part 1全体像コンテナ / 歴史 / 構造Part 2ネットワークnetns / CNI / ServicePart 3ランタイムcontainerd / runc / CRIPart 4インターフェースCRI / CNI / CSI / CPIPart 5クラウドCCM / EKS / Fargate称号「あるべき状態」の執行者パケットの行き先を視る者カーネルの代理人境界線を引く者雲の裏側を知る者Part 2 以降は Part 1 を前提にする。Part 2〜5 の間は行き来してよい。
図 1Part 0 から Part 5 までの順路。Part 1 だけは先に読む。Part 2 以降は興味のある順でもよい。

Part 1「Kubernetes の全体像」は、他の Part が前提にする言葉を揃える章です。 コンテナの正体から始めて、Docker だけでは足りなくなること、Kubernetes への頼み方、頼んだ状態を保ち続ける仕組み、YAML を書いてアプリを動かすところまでを扱います。 説明は Kubernetes と Docker の公式ドキュメント、Linux のマニュアルから組み立ててあり、各章の末尾に読んだ資料を列挙しています。 Part 2 以降は、Part 1 を読んだ人が、それぞれの疑問を深掘りする位置づけです。

Part 2「ネットワーク」は、コンテナにどうやって IP が付き、別のホストのコンテナと通信できるのかに答えます。 Part 3「ランタイム」は、コンテナを実際に起動しているプログラムの中で何が起きているかに答えます。 Part 4「インターフェース」は、Kubernetes が自分で動かさず、外部のプログラムに頼んでいる仕事の、頼み方に答えます。 Part 5「パブリッククラウドとの関係」は、EKS のようなマネージドサービスの裏側に何があるかに答えます。 Part 2 以降は独立していますが、Part 2 と Part 3 を先に読むと、Part 4 と Part 5 が具体的に見えます。

Linux の内部の仕組み (プロセスを分離する機能や、パケットの転送ルール) はこのコースで初めて触る前提で、初出のコマンドには一言ずつ説明を添えます。

3 層のハンズオン

章の見出しの横に L0 / L1 / L2 のバッジがあります。 これは「その章を試すのに何が要るか」の表示です。

3 層のハンズオン: L0 ブラウザだけ、L1 Web ターミナル、L2 ノードの中左からブラウザ内の図解、ブラウザのターミナルから自分専用クラスタへ kubectl、そのクラスタのノードの中へ kubectl debug node で入る、の順に深くなる。L0 ブラウザだけシミュレータreconciliation loop / 年表 / パケットの旅要るもの: 何も無い動くのはページの中だけ壊しても何も起きないL1 Web ターミナルページ右下のターミナル自分専用クラスタv1.37.1PodappPodwebkubectl要るもの: GitHub ログイン + 払い出しL2 ノードの中ノード (VM) の中containerd / runcnetns / veth / nftcgroup v2 / OverlayFSroot で見放題要るもの: L1 と同じkubectl debug node
図 23 層のハンズオン。右に行くほど深く、右に行くほど壊せる範囲が広い。L1 と L2 に必要な準備は同じ。
  1. L0: ブラウザだけ

    必要なのはブラウザだけです。ページの中の図を動かして学びます。「あるべき状態に戻し続ける仕組み」のシミュレータ、歴史の年表、通信がどの宛先に届くかを方式ごとに描き分ける図、パケットの旅などがここに入ります。壊しても何も起きないので、気が済むまで触ってください。

  2. L1: Web ターミナル

    GitHub でログインし、このサイトの「環境を作成」で自分専用の Kubernetes 環境を払い出します。準備ができると、ページ右下の「ターミナル」から、その環境に kubectl (Kubernetes を操作するコマンド) を打てます。環境は Kubernetes v1.37.1 の、サーバー 1 台だけの構成で、あなた以外は使いません。サーバーのことを Part 1 で「ノード」、その集まりを「クラスタ」と呼ぶようになります。詳しい手順は次の章で説明します。

  3. L2: ノードの中

    L1 と同じ準備で入れます。kubectl debug node でサーバー (KubeVirt の VM) の中に root で入り、ip netns (ネットワークの分離空間を扱うコマンド)、crictl (コンテナランタイムに話しかけるコマンド)、nft (パケットの転送ルールを見るコマンド)、cilium bpf を直接見ます。Kubernetes の動きが、Linux のコマンドで見える普通のプロセス、ネットワーク設定、ファイルの組み合わせだと確かめられる層です。

環境の状態を確認しています…

上の枠は、あなたの環境の状態です。 ログインしていなければ「未ログイン」、環境が無ければ「環境なし」と出ます。 L1 と L2 の章にはこの枠を置いてあるので、読み進める前にここを見てください。

「ターミナルで実行」ボタン

章ページのどこに何があるか: ヘッダーのテーマ切替、本文の図と実行ボタン、右の目次、右下のターミナルページの模式図。上にヘッダー、左に本文、右に目次と前後の章、右下にターミナル dock。mozumasuテーマターミナル章タイトルL1 Web ターミナル図 (SVG。テーマで色が変わる)ターミナルで実行 ▶kubectl get nodes期待される出力Q ふりかえりクイズ目次 (## / ###)3 層のハンズオン「ターミナルで実行」配色、クイズ、称号前の章 [ / 次の章 ]ターミナル dock (t キー)$ kubectl get nodesNAME STATUS ROLESボタンで送る
図 3章ページの構成。本文の実行ボタンが右下のターミナル dock にコマンドを送る。目次と前後の章は右 (狭い画面では上) にある。

ハンズオンのコードブロックには右上にボタンがあります。 押すとコマンドがクリップボードにコピーされ、右下のターミナルにも送られます。 環境が無いときはターミナル側が案内を出すだけで、コピーはいつでも効きます。 手元の端末に貼りたい人はそれでも構いません。 試しに押してみてください。

最初のコマンド
kubectl get nodes -o wide

期待される出力

NAME                          STATUS   ROLES           AGE   VERSION   INTERNAL-IP   OS-IMAGE
tenant-control-plane-7k2qd    Ready    control-plane   3h    v1.37.1   10.0.1.10     Ubuntu 26.04.1 LTS

ノード名と IP は人によって違います。 この教材の期待出力は、形が分かる程度の抜粋だと思って読んでください。

YAML を適用するコマンドは、すべて kubectl apply -f - <<'EOF' … EOF の heredoc 形式で書いてあります。 画面に見えているものと、コピーされるものと、実行されるものが常に一致するようにするためです。

テーマ、クイズ、称号

右上のボタンで配色が変わります。 配色は 3 つあり、ボタンには色見本だけが出ます。 順に切り替わり、最後の「自動」は OS の設定に従います。 本文の読みやすさはどの配色でも同じになるように作ってあり、図の色も配色に追従します。

各章の末尾には「ふりかえり」として択一のクイズが 3 問ほどあります。 選ぶと正誤が出て、解説が開きます。 狙いは暗記の確認というより、解説を読んで「そこが肝か」と気付くことです。

Part を読み切ると 称号 がもらえます。 Part 1 なら「あるべき状態」の執行者、Part 2 なら「パケットの行き先を視る者」です。 獲得記録はブラウザの localStorage にしか残りません。 別のブラウザで開くと未獲得に戻りますが、気にしないでください。 獲得済みの一覧は 称号のページ にあります。 本文で下線の付いた語は用語で、ホバーかタップで説明が開きます。 用語集 には本文に出てきた用語が自動で集まります。

ふりかえり

QL2 の章で必要な準備はどれ?

L2 はノードの中に入りますが、入口は L1 と同じ Web ターミナルです。kubectl debug node で VM の中へ行きます。

Q「ターミナルで実行」ボタンを押したとき、環境が無いとどうなる?

コピーは常に効きます。環境がない場合は、先に「環境を作成」を押してください。

参考