Kubernetes — 入門から EKS 実戦まで
kubectl の最初のコマンドから GitOps · 可観測性まで、一冊で完結するKubernetes
この本が扱うこと #
- 基礎から運用まで一つの流れでつなげます —
kubectl get podsから RBAC · Admission Controller · CRD · GitOps · 可観測性 · EKS 運用まで、Kubernetes の核心概念を実戦運用の流れの中で自然につなげていきます。 - EKS を中心に据えます — ローカル環境の minikube · kind も扱いますが、本書の中心は AWS EKS 上での実戦運用です。ローカル学習だけではつながりにくいクラウド運用の経験まで自然に広げます。
- YAML だけを見せません — なぜリソースがその形を取るのか、どのコントローラが状態を保つのか、問題が起きたときどこから診断すべきかを併せて説明します。
- 運用まで深く扱います — RBAC · NetworkPolicy · Admission によるセキュリティ、Prometheus · Grafana · Loki · OpenTelemetry を軸にした可観測性、デバッグ、コスト最適化、アップグレード、バックアップと復旧まで、実際の運用に必要な内容を入門書の最後の段階で併せて扱います。
- 最後には一つのフルスタックシステムとして完成させます — 6部のキャップストーンでは、React の Next.js アプリと モダンPython の FastAPI アプリを一つの EKS クラスタに一緒に配備します。これにより、1 ~ 30章で扱った技術が実際のサービスの中でどのようにつながり運用されるのかを直接確かめられます。
この本で扱わないこと #
- Kubernetes へのコントリビューション / kubelet 内部 / etcd 運用といったクラスタコンポーネントの深層は別の本で扱います。
- Helm チャート作成の深さ · ArgoCD ApplicationSet パターン · Cilium eBPF データプレーンの深さは、後続の K8s 深掘り本の領域です。本書は「使い方」までを扱います。
- マルチクラスタフェデレーション / サービスメッシュ (Istio / Linkerd) の深さは後続の本で扱います。
- EKS 以外のマネージド (GKE / AKS) ごとの差の深さは、付録でマッピング表程度を扱います。
こんな方におすすめします #
- コンテナは知っているが Kubernetes は初めての方 — Docker / docker-compose まで触れてきて「次は k8s か?」の段階で止まっている開発者です。付録A「docker-compose から k8s へ」が出発点になります。
- kubectl は使ったが運用は知らない方 — Pod / Deployment / Service までは慣れているが、RBAC · 可観測性 · GitOps · コスト · アップグレードといった運用経験が足りない方です。3 ~ 5部が価値を吸収する区間です。
- AWS 環境で Kubernetes を導入する必要がある方 — EKS 上に本番ワークロードを載せなければならないインフラ / バックエンドエンジニアです。4部 EKS 実戦がそのままガイドになります。
- インフラ運用者 / DevOps · SRE 入門トラック — 5部 運用 · デバッグ · コスト + 6部 フルスタック EKS 配備がマニュアルになります。
この本の構成 #
全体の分量は本文31章 + 付録A 1章で、全32章です。
- 1部 Kubernetes をはじめる (7章) — Kubernetes とは · ローカル環境 · kubectl と最初の Pod · Deployment · Service · ConfigMap/Secret · Namespace を扱い、小さなクラスタを手で動かせるようにします。
- 2部 ワークロードと運用 (7章) — StatefulSet · PV/PVC · Ingress · resources · ヘルスチェック · オートスケーリング · RBAC を扱い、さまざまなワークロードを運用できるようにします。
- 3部 深さ (6章) — CNI · RBAC の深層 · Admission Controller · CRD/Operator · 可観測性 · GitOps まで扱い、運用者の視野へ広げます。
- 4部 EKS 実戦 (6章) — EKS セットアップ · アプリ配備の骨格 · RDS 連携 · CI/CD · モニタリング · アラート · 運用チェックリストを通じて、AWS 上の実戦運用の一連の流れを身につけます。
- 5部 運用 · デバッグ · コスト (4章) — kubectl デバッグパターン · コスト最適化 · シークレット運用 · アップグレード戦略で、運用中に出会う4つのテーマを扱います。
- 6部 総合実習 (1章) — modern-python (FastAPI) + modern-react (Next.js) アプリを一つの EKS クラスタに、Ingress · Helm · ArgoCD · 可観測性 · IRSA · External Secrets まで適用して一緒に配備します。
- 付録A (1章) —
docker-compose.ymlリソースを k8s リソースへ移すマッピング表と、移行のときによく詰まる7つの差を整理します。
本書の元になるシリーズ #
この本は次のシリーズ26編を元に、新規5章 (5部 4 + 6部 1) と付録A、そして全面改訂を加えて一冊にまとめ直した本です。下のシリーズは今もサイト上で無料公開しています。
- Kubernetes 基礎 7編 — 1部のコンパイル元で、Pod / Deployment / Service / ConfigMap / Namespace を最初に整理したシリーズです。
- Kubernetes 中級 7編 — 2部のコンパイル元で、StatefulSet · PV · Ingress · ヘルスチェック · オートスケーリング · RBAC を扱います。
- Kubernetes 上級 6編 — 3部のコンパイル元で、CNI · RBAC の深層 · Admission Controller · CRD/Operator · 可観測性 · GitOps を扱います。
- Kubernetes 実戦 6編 — 4部のコンパイル元で、EKS 上での実戦運用の一連の流れを扱います。
この本は上のシリーズを入門から EKS 実戦までつながる形にまとめ直し、運用 · デバッグ · コストの章4つ + フルスタック EKS キャップストーン + docker-compose 移行付録を加えて一冊にまとめました。核は30%以上の新規 / 改訂比率とフルスタックキャップストーンです。
併せて使うとよいツール #
この本の実習は、ほぼ毎章で YAML マニフェストを手で書きます。インデント一つ、引用符一つがずれると kubectl apply が意図と違うエラーを吐きます。マニフェストをクラスタに適用する前に utilrepo の YAML 検証ツール に一度貼り付けて構文が壊れていないか確認すれば、クラスタ側でデバッグする時間をその分減らせます。utilrepo はブラウザ上で動く軽量な Web ユーティリティ集で、秘密情報が外部に出ることなく、--- でつないだ複数ドキュメントのマニフェストやタブ · スペース混在といったよく出会う罠まで併せて捕まえてくれます。
本書の運営について #
本書はサイトの広告 (AdSense) と読者の応援によって運営されます。決済 · 購入手続きは設けておらず、32章の本文すべてをサイト上でそのままお読みいただけます。
本書のどこかが役に立ったと感じたら、Ko-fi で応援いただけると嬉しいです。応援は次の minor 改訂と後続の本を執筆する時間につながります。
よくある質問 #
この本は AWS 本とどう違いますか #
AWS(公開予定)と本書は姉妹商品です。同じフルスタックアプリ (modern-python + modern-react) を6部のキャップストーンで別のプラットフォームに配備します — 本書は EKS、AWS は ECS Fargate です。二冊を比べて読むと「マネージドコンテナ vs k8s」の運用上の違いがはっきり分かります。
Kubernetes のメジャーバージョンが変わると本書は古くなりますか #
核となるモデル (Pod / Deployment / Service / Ingress / RBAC / Operator / GitOps) は、少なくとも今後 2 ~ 3年のメジャーバージョンの間はそのまま維持されると見ています。変更された API と deprecated 表示は minor 改訂 (v1.x) で反映し、メジャー変更 (例: k8s 2.0 の仮定) の時点で v2 の本ラインを別途始めることがあります。
EKS の実習にはどのくらい費用がかかりますか #
4部 EKS 実戦 + 6部 キャップストーンをたどると、月に約 $40 ~ $80 の EKS クラスタ費用が発生します (t3.medium ノード2台 + EKS コントロールプレーン + ALB + RDS db.t3.micro)。EKS インフラ費用は AWS の請求書として直接発生するので、実習が終わったらクラスタをすぐ削除できるよう、各章の最後に片付けコマンドを併せて整理します。AWS 無料枠で最大限に抑えるオプションも6部の冒頭で案内します。
本書のコードはどこで入手できますか #
各章のマニフェストと Terraform コードは本文中のコードブロックに直接書かれているため、手で書き写しながら学ぶ方法をおすすめします。6部キャップストーンの13ステップの完成版は、別途 GitHub リポジトリ (modern-kubernetes-capstone) で提供する予定です。準備ができ次第、この本の紹介ページにリンクを追加します。
日本語以外の言語でも読めますか #
韓国語 · 日本語 · 英語の3言語すべてが同じ32章構成で公開されています。各言語の本の紹介からそのままお読みいただけます。
ある章がサイトの記事と70%以上同じではないですか #
一部の章はコンパイル元のシリーズ記事とトピックが同じです。ただし本書の章は、(1) 本書の流れに合わせた再叙述、(2) Kubernetes 1.32 + EKS を基準とした統一、(3) 本書内の他章との cross-link、(4) 練習問題と一行まとめの追加によって書き直しているため、同じトピックでも結果は別の資料に近いものになります。また新規5章 (5部4章 + 6部キャップストーン) と付録A はコンパイル元のシリーズにありません。
応援 · フィードバックはどう送りますか #
フィードバックは ブログのコメントまたはメール で歓迎します。章ごとの誤字 · 改善提案 · マニフェストの誤り報告は、次の minor 改訂に素早く反映します。応援は Ko-fi チャネルを設けており、$1 から自由にお送りいただけます。
次のステップ #
本書の ko · ja · en 32章はすべて公開されました。今後の更新は次のように進めます。
- v1 本文の安定化 — リリース後 4 ~ 8週間、読者のフィードバックを受けて誤字 · マニフェストの誤り · 説明の不足を minor 改訂 (v1.x) で反映します。
- 6部キャップストーン GitHub リポジトリ — 13ステップの完成版を別リポジトリにまとめ、この本の紹介ページにリンクを追加します。
- Kubernetes / EKS の定期更新 — 4部 EKS 実戦の章の価格表とインスタンスタイプは6か月周期で点検します。Kubernetes のメジャー変更の時点で v2 の本ラインを始めることがあります。
新しい章とメジャー改訂のお知らせは RSS フィード で受け取れます。
目次
Kubernetes とは · ローカル環境 · kubectl と最初の Pod · Deployment / Service · ConfigMap / Secret · Namespace まで、入門者が身につけるべき7つのトピックを扱います。
- 1. Kubernetes とは なぜコンテナオーケストレーターが必要なのか。Docker / docker-compose まで触れてきた読者を出発点に、単一コンテナツールの5つの限界、宣言型 desired state + reconcile loop モデル、control plane / worker node の全体像、本書の範囲までを整理します。
- 2. ローカル環境 minikube・kind・Docker Desktop k8s のどれを使うかを決めます。3つのオプションの動作方式・長短所を比較し、kubectl をインストールしたあと kind で最初のクラスタを起動してノードとシステム Pod を確認する流れまで一度にたどります。
- 3. kubectl と最初の Pod kubectl のメンタルモデルをつかみ、最初の Pod を起動します。kubectl run の命令型の一連の流れから YAML マニフェストの宣言型、get / describe / logs / exec の日常コマンド、Pod ライフサイクルと ImagePullBackOff・CrashLoopBackOff のよくある失敗パターンまで扱います。
- 4. Deployment と ReplicaSet 宣言型デプロイとローリングアップデートを扱います。Deployment / ReplicaSet / Pod の三段の関係をつかみ、replicas: 3 の self-healing、RollingUpdate の maxSurge / maxUnavailable、rollout undo によるロールバック、Deployment が解かないワークロード (StatefulSet・DaemonSet・Job) までを一連の流れで整理します。
- 5. Service Pod IP が一時的だという問題を解く抽象 — Service。安定した ClusterIP・selector・Endpoints / EndpointSlice・そして ClusterIP・NodePort・LoadBalancer の3タイプの選択基準、kube-proxy の DNAT、CoreDNS の短い名前の解決までを一連の流れで扱います。
- 6. ConfigMap と Secret ConfigMap と Secret で設定とパスワードをマニフェスト本体から分離します。12-factor の「設定は環境に置く」を K8s で解く形、env・envFrom・volume の3つの注入方式、Secret の base64 が暗号化ではないという一行、そして設定変更時に Pod 再起動が必要な理由までを扱います。
- 7. Namespace とラベル 1つのクラスタをネームスペースで分けておくモデルとラベル・セレクタの文法を整理します。default の限界、システムネームスペース4つ、RBAC・ResourceQuota・NetworkPolicy の単位としてのネームスペース、kubens 運用のヒント、app.kubernetes.io/* 標準ラベル、kubectl -l の selector 文法までを扱い1部を締めくくります。
StatefulSet · PV/PVC · Ingress · resources · ヘルスチェック · オートスケーリング · RBAC まで扱いながら、小さなクラスタでさまざまなワークロードを運用する段階へ移ります。
- 8. StatefulSet / DaemonSet / Job / CronJob Deployment の stateless 前提では表現できない4系統のワークロードを扱うコントローラを整理します。StatefulSet のアイデンティティと PVC 1:1、DaemonSet のノード単位1個、Job の終了モデル、CronJob の cron スケジューリングと concurrencyPolicy · startingDeadlineSeconds の安全装置までを一連の流れで扱います。
- 9. PV / PVC / StorageClass Pod のライフサイクルを越えて生き残る永続データモデルを扱います。PV · PVC · StorageClass の三角関係、静的 · 動的プロビジョニング、accessModes (RWO · RWX · RWOP)、reclaimPolicy、volumeBindingMode の WaitForFirstConsumer、allowVolumeExpansion、StatefulSet の volumeClaimTemplates がその上で何を作るのかまでを一連の流れで整理します。
- 10. Ingress と Ingress Controller 外部トラフィックがクラスタの中の Service へ入ってくるモデルをまとめる抽象化です。Ingress オブジェクトと Ingress Controller の二層分離、ホスト · パス · pathType ベースのルーティング、TLS 終端と cert-manager、IngressClass、そして後続標準である Gateway API までを体系的に整理します。
- 11. resources.requests / limits コンテナが CPU とメモリをどう要求し、どう上限を与えられるかのモデルを扱います。requests と limits の分離、QoS クラス (Guaranteed · Burstable · BestEffort)、CPU throttling とメモリ OOMKilled の動作の違い、JVM · Go ランタイムの cgroup 認識、LimitRange · ResourceQuota のネームスペースポリシー、そして最初の値を決めて調整する運用サイクルまでを一連の流れで整理します。
- 12. Health check K8s がコンテナが生きているか、そしてトラフィックを受ける準備ができているかをどう判断するかのモデルを扱います。liveness · readiness · startup の3つの probe の役割分離、httpGet · tcpSocket · exec の検査方式、initialDelaySeconds · periodSeconds · failureThreshold のようなパラメータチューニング、liveness に外部依存を入れたときの cascading failure、terminationGracePeriodSeconds と preStop フックの graceful shutdown までを一連の流れで整理します。
- 13. オートスケーリング 運用クラスタの負荷変動を人の介入なしで吸収する3次元の自動調整を扱います。HPA (Pod 数) · VPA (Pod リソース) · Cluster Autoscaler (ノード数) の役割分離、metrics-server の前提、HPA の autoscaling/v2 マニフェストと比例式アルゴリズム、scale up · down の非対称な behavior、custom metric と KEDA、VPA の updateMode と HPA · VPA の衝突、Karpenter までを一連の流れで整理します。
- 14. RBAC / NetworkPolicy / ResourceQuota 1つのクラスタに複数のチーム · 環境が一緒に住むマルチテナント運用の隔離を作る3つのポリシーオブジェクトを扱います。RBAC の Role · ClusterRole · ServiceAccount · RoleBinding モデル、NetworkPolicy の default-deny パターンと CNI 依存、ResourceQuota と LimitRange の対の関係までを一連の流れで整理しながら2部を締めくくります。
CNI の深層 · RBAC の深層 · Admission Controller · CRD/Operator · Prometheus/Grafana/Loki · GitOps を扱いながら、運用者の視野へ広げます。
- 15. CNI 深掘り 同じ NetworkPolicy マニフェストが Calico の上では iptables ルールに、Cilium の上では eBPF プログラムに展開されるデータプレーンの深さを扱います。K8s ネットワークモデルの4つの条件、CNI インターフェースの正体、iptables・IPVS・eBPF の3つのデータプレーンモデル、Calico と Cilium の比較、そして CNI 選択の実戦基準までを一連の流れで整理します。
- 16. RBAC / ServiceAccount 深掘り 第14章 RBAC の基本の上に、運用クラスタで出会う深さをもう一層重ねます。ClusterRole をラベルで束ねる Aggregated ClusterRole、別の主体の権限で呼び出す Impersonation、ServiceAccount トークンが永続 Secret から有効期限・audience・rotation を備えた projected token へ変わった流れ、そして EKS の IRSA・GKE の Workload Identity で K8s ServiceAccount をクラウド IAM に対応づけるモデルまでを整理します。
- 17. Admission Controller K8s API サーバーがマニフェストを etcd に保存する直前の段階で検査・変形する admission のモデルを扱います。Mutating・Validating の2種類、ビルトインコントローラ (LimitRanger・ResourceQuota・PodSecurity など)、Webhook メカニズム、そしてその上に載った2つのポリシーエンジン OPA Gatekeeper (Rego) と Kyverno (YAML) の比較までを一連の流れで整理します。
- 18. CRD と Operator パターン K8s API をユーザードメインのオブジェクトで拡張する2つの軸を扱います。CustomResourceDefinition で新しいオブジェクト種類を定義し、controller-runtime ベースの Operator が第1章で見た reconcile loop をそのオブジェクトの上に掛けて K8s の宣言的モデルをドメインまで拡張します。ownerReference・finalizer・status subresource の3つの標準パターンと Kubebuilder・Operator SDK のビルドツールまでを一連の流れで整理します。
- 19. 可観測性 運用クラスタの視野を作る3つの軸 — メトリクス (Prometheus + kube-state-metrics + node-exporter)、ログ (Loki)、トレース (OpenTelemetry + Tempo) — と可視化 (Grafana)、アラート (Alertmanager) の標準スタックを整理します。kube-prometheus-stack の ServiceMonitor・PrometheusRule、PromQL・LogQL の一行の例、そしてカーディナリティ・保存・アラート SNR・golden signals の運用ガードレールまでを一連の流れで扱います。
- 20. GitOps マニフェストの source of truth を git に置き、クラスタ内のコントローラが git を watch して自動的に同期する運用モデルを扱います。push モデルと pull モデルの違い、GitOps の4原則、ArgoCD の Application CRD・App of Apps・Sync Wave、Flux の GitRepository・Kustomization・HelmRelease、ディレクトリ構造のパターン、そして秘密を git に置く3つの標準ツールまでを一連の流れで整理して3部を締めくくります。
EKS クラスタのセットアップ · アプリ配備の骨格 · RDS 連携 · CI/CD · モニタリング/アラート · 運用チェックリストで、AWS 上の実戦運用の一連の流れを身につけます。
- 21. EKS クラスタセットアップ AWS EKS の上に本物の運用クラスタを最初から立ち上げる流れを扱います。Terraform で VPC · EKS コントロールプレーン · ノードグループ · IRSA · 必須アドオン (VPC CNI · CoreDNS · kube-proxy · EBS CSI) を一つのコードベースで宣言し、eksctl の素早いセットアップオプション、Karpenter のノードオートスケーリング、そして最初の点検 · コストモデルまでを一つのサイクルで整理します。
- 22. アプリ配備の骨格 第21章で立ち上げた空の EKS クラスタの上に、サンプルサービス myshop-api を一つのまとまりのマニフェストで配備します。Namespace · ServiceAccount · ConfigMap · Secret · Deployment · Service · Ingress · HPA · PodDisruptionBudget の9つのオブジェクトを一連の流れで整理し、AWS Load Balancer Controller で ALB を自動プロビジョニングします。そのまとまりを Helm チャートで抽象化して dev / prod に異なる values で適用する方法までを一度にたどります。
- 23. DB 連携 — RDS · External Secrets 第22章で外部公開まで作った myshop-api は、データストアのない空の殻です。本章はその空いた場所を埋めます。RDS PostgreSQL を Terraform で立ち上げ、マスターパスワードを AWS Secrets Manager に置き、External Secrets Operator でその秘密を K8s Secret へ自動同期し、IRSA で静的な認証情報なしに権限を付与し、PgBouncer でコネクションプールを載せ、スキーママイグレーションを Helm hook ベースの Job パターンで自動化する流れまでを一連の流れとして整理します。
- 24. CI/CD パイプライン 第23章まで整った myshop-api は、新バージョンが入ってくる過程に依然として人が多く介入します。本章はその過程を自動化します。GitHub Actions で OIDC 信頼により静的キーなしに AWS ECR へコンテナイメージをプッシュし、マニフェスト repo の Helm values を自動 commit し、第20章で扱った ArgoCD がその変更を検知してクラスタへ同期する一連の流れを整理します。PR 承認ゲート、dev / prod 分岐、Argo Rollouts カナリア配備、イメージタグの immutability まで併せて扱います。
- 25. モニタリング · アラート 第24章まで整った myshop-api はコードから配備まで自動化されましたが、その動作が見えなければ運用は回りません。本章は EKS クラスタの可観測性スタックを載せます。kube-prometheus-stack で Prometheus · Grafana · Alertmanager を一括導入し、ServiceMonitor / PrometheusRule で myshop-api メトリックと 4 golden signals アラートを標準化し、Loki でログを、CloudWatch Container Insights で AWS 連携メトリクスと長期保管を押さえ、severity · team ルーティングで Slack / PagerDuty の on-call 体制までを整理します。
- 26. 運用チェックリスト 4部 (EKS 実戦) の最後の章です。クラスタを安定的に立ち上げる作業と、一年のあいだ安全に運用する作業は別の質感の仕事です。EKS マイナーアップグレードのサイクル、ノードグループ交換のパターン、RDS の PITR と四半期復旧訓練、Karpenter + Spot でコストを抑える道、kube-bench · Trivy · Kyverno でセキュリティ点検を定期化する流れまで整理します。最後に 4部6章 (第21 ~ 26章) の振り返りと、1 ~ 4部26章が手に何を残したかを一つのまとまりとして押さえます。
kubectl デバッグパターン · コスト最適化 · シークレット運用 · アップグレード戦略を通じて、運用中に出会う4つのテーマを扱います。
- 27. kubectl デバッグパターン 5部 (運用 · デバッグ · コスト) の最初の章です。運用クラスタで最もよく出会う事故 (CrashLoopBackOff、OOMKilled、ImagePullBackOff、Pending、Service に届かない) の診断ツリーを集約します。describe · events · logs の3つのコマンドから出発し、kubectl debug の ephemeral container、ネットワーク診断パターン、19章の可観測性スタックとの連携まで、新人 SRE の最初の参照資料になるマニュアルとして整理します。
- 28. コスト最適化 5部の2番目の章です。26章で5つの出所として挙げたコスト項目を本格的に扱います。コンピュート (ノード) と付加 (LB · ストレージ · ネットワーク · コントロールプレーン) の2軸、requests のコストの意味、VPA · Goldilocks · KRR の right-sizing、Spot · Karpenter · Cluster Autoscaler の決定ツリー、bin packing と descheduler、OpenCost · Kubecost の可視化、namespace ラベル単位の chargeback / showback、PV · ネットワークコストまでを一連の流れで束ね、翌月の請求書 review チェックリストで締めくくります。
- 29. シークレット運用 5部の3番目の章です。K8s Secret の base64 の限界と etcd encryption-at-rest の意味から始め、保存 · 回転 · 注入 · 監査の4軸でシークレットライフサイクルを扱います。sealed-secrets · external-secrets · SOPS の3つのオプションの比較、IRSA と組み合わせたパスワード0運用 (AWS API は IRSA、DB は RDS IAM auth)、envFrom vs mount の回転の違い、RBAC でネームスペース単位の分離、Audit log と GuardDuty の監査の観点までを本格的な運用マニュアルとして束ねます。
- 30. アップグレード戦略 5部の最後の章です。K8s マイナーリリース (14か月サポート) を安全に追っていく運用マニュアルです。コントロールプレーン → データプレーン (ノード) → アドオンの順序、deprecated API の検出 (pluto · kubent · apiserver メトリクス)、マニフェスト / Helm / Operator CR の API バージョン移行、EKS のノードグループ / Karpenter NodePool drift の流れ、ノード drain の安全装置 (PDB · terminationGracePeriodSeconds)、blast radius の最小化、ロールバックシナリオ、RPO / RTO 別のバックアップ選択、そしてアップグレード前1週 / 当日 / 後1週のチェックリストまでを一連の流れで扱います。
modern-react の Next.js アプリと modern-python の FastAPI アプリを一つの EKS クラスタに一緒に配備し、第1章〜第30章のパターンを1つの動くシステムにまとめます。
docker-compose ユーザーのための Kubernetes 移行ガイドを整理します。