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 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 のバッジがあります。 これは「その章を試すのに何が要るか」の表示です。
L0: ブラウザだけ
必要なのはブラウザだけです。ページの中の図を動かして学びます。「あるべき状態に戻し続ける仕組み」のシミュレータ、歴史の年表、通信がどの宛先に届くかを方式ごとに描き分ける図、パケットの旅などがここに入ります。壊しても何も起きないので、気が済むまで触ってください。
L1: Web ターミナル
GitHub でログインし、このサイトの「環境を作成」で自分専用の Kubernetes 環境を払い出します。準備ができると、ページ右下の「ターミナル」から、その環境に
kubectl(Kubernetes を操作するコマンド) を打てます。環境は Kubernetes v1.37.1 の、サーバー 1 台だけの構成で、あなた以外は使いません。サーバーのことを Part 1 で「ノード」、その集まりを「クラスタ」と呼ぶようになります。詳しい手順は次の章で説明します。L2: ノードの中
L1 と同じ準備で入れます。
kubectl debug nodeでサーバー (KubeVirt の VM) の中に root で入り、ip netns(ネットワークの分離空間を扱うコマンド)、crictl(コンテナランタイムに話しかけるコマンド)、nft(パケットの転送ルールを見るコマンド)、cilium bpfを直接見ます。Kubernetes の動きが、Linux のコマンドで見える普通のプロセス、ネットワーク設定、ファイルの組み合わせだと確かめられる層です。
上の枠は、あなたの環境の状態です。 ログインしていなければ「未ログイン」、環境が無ければ「環境なし」と出ます。 L1 と L2 の章にはこの枠を置いてあるので、読み進める前にここを見てください。
「ターミナルで実行」ボタン
ハンズオンのコードブロックには右上にボタンがあります。 押すとコマンドがクリップボードにコピーされ、右下のターミナルにも送られます。 環境が無いときはターミナル側が案内を出すだけで、コピーはいつでも効きます。 手元の端末に貼りたい人はそれでも構いません。 試しに押してみてください。
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「ターミナルで実行」ボタンを押したとき、環境が無いとどうなる?
コピーは常に効きます。環境がない場合は、先に「環境を作成」を押してください。
参考
- Kubernetes ドキュメント「Overview」(Kubernetes とは何か): https://kubernetes.io/docs/concepts/overview/
- Kubernetes チュートリアル「Learn Kubernetes Basics」(公式の入門チュートリアル。この教材の Part 1 と同じ順で、クラスタの作成、デプロイ、公開、スケール、更新を扱う): https://kubernetes.io/docs/tutorials/kubernetes-basics/