Kubernetes入門!kubectlとPod操作で理解するk8sのしくみ

こんにちは!今回は、「Kubernetesって難しそう…」「kubectlコマンドがよく分からない」「Podって何?」という方に向けて記事を書きました。

「Docker Composeは使えるけど、Kubernetesは挫折した…」
「kubectlコマンドを覚えるのが大変そう」
「実際にPodを操作してみたいけど、どこから始めればいいか分からない」

そんな悩みを解決してくれるのが、高橋あおいさんの「つくって、壊して、直して学ぶ Kubernetes入門」です!

つくって、壊して、直して学ぶ Kubernetes入門 [ 高橋 あおい ]
created by Rinker
¥3,278 (2025/09/30 23:49:14時点 楽天市場調べ-詳細)

この書籍の最大の特徴は、「あえて壊しながら学ぶ」というアプローチです。普通なら避けたいトラブルを意図的に起こして、その対処法を学ぶことで、本当に実践的なスキルが身につきます。

この記事では、Kubernetes初心者の方でも安心して学習を始められるよう、kubectlコマンドやPod操作の基本から、実際のトラブル対応まで分かりやすく解説していきます!

目次

Kubernetesとは何か?初心者が知るべき基本概念

コンテナオーケストレーションの必要性

まず、「そもそもなぜKubernetesが必要なの?」という疑問から始めましょう。

Dockerを使って開発している方なら、こんな経験はありませんか?

  • 「本番環境でコンテナが落ちたら、手動で再起動するしかない…」
  • 「アクセスが増えた時、コンテナを増やすのが面倒…」
  • 「複数のサーバーでコンテナを管理するのが大変…」

Kubernetes(k8s)は、これらすべての問題を解決してくれるコンテナオーケストレーションプラットフォームです!

主な機能

  • 自動復旧:コンテナが落ちても自動で再起動
  • 自動スケーリング:負荷に応じてコンテナ数を調整
  • ロードバランシング:複数コンテナに負荷を分散
  • ローリングアップデート:無停止でアプリケーション更新

Kubernetesの基本アーキテクチャ

Kubernetesの仕組みを理解するために、基本的な構成要素を見てみましょう。

クラスタ

  • Kubernetesが管理する複数サーバーの集合体
  • マスターノード(制御)+ ワーカーノード(実行)で構成

ノード

  • クラスタを構成する1台1台のサーバー
  • 物理サーバーでも仮想マシンでもOK

Pod

  • Kubernetesの最小実行単位
  • 1つ以上のコンテナをまとめたもの
  • 通常は1Pod = 1コンテナで運用

Service

  • Podへのアクセス経路を提供
  • Podが増減しても、アクセス方法は変わらない

例えて言うなら…

  • クラスタ = オフィスビル全体
  • ノード = 各フロア
  • Pod = 各部屋で働く人(コンテナ)
  • Service = 受付・案内デスク

Docker Composeとの違いを理解しよう

「Docker Composeで十分じゃない?」と思う方もいるでしょう。確かにDocker Composeは便利ですが、以下のような制限があります。

Docker Compose

  • ✅ 開発環境での複数コンテナ管理が簡単
  • ❌ 1台のサーバーでしか動かない
  • ❌ 自動復旧・自動スケールができない
  • ❌ 本格的な負荷分散は難しい

Kubernetes

  • ✅ 複数サーバーでの分散実行
  • ✅ 自動復旧・自動スケール
  • ✅ 高度な負荷分散・ネットワーク制御
  • ✅ 本番運用に必要な機能が豊富

つまり、開発環境ならDocker Compose、本番運用ならKubernetesという使い分けが一般的です!

kubectlコマンドをマスターしよう

kubectlの基本的な使い方

kubectl(クーベクティーエル)は、Kubernetesクラスタを操作するためのコマンドラインツールです。

基本的な書式は以下のようになります:

kubectl [動詞] [リソース] [名前] [オプション]

kubectl get pods
kubectl describe pod my-pod
kubectl delete service my-service

最初は覚えることが多く感じるかもしれませんが、よく使うコマンドは限られているので安心してください!

よく使うkubectlコマンド一覧

リソースの確認

# Pod一覧の表示
kubectl get pods

# Service一覧の表示
kubectl get services

# すべてのリソースを表示
kubectl get all

# 詳細情報の表示
kubectl describe pod [pod名]

リソースの作成・削除

# YAMLファイルからリソース作成
kubectl apply -f app.yaml

# リソースの削除
kubectl delete pod [pod名]
kubectl delete -f app.yaml

デバッグ・トラブルシューティング

# Podのログ確認
kubectl logs [pod名]

# Podの中に入る
kubectl exec -it [pod名] -- /bin/bash

# Podの状態詳細確認
kubectl describe pod [pod名]

kubectlでクラスタの状態を確認する方法

実際にクラスタの状態を確認してみましょう!

ノードの状態確認

kubectl get nodes

これで、クラスタを構成するノードの一覧と状態が分かります。

リソース使用量の確認

kubectl top nodes
kubectl top pods

CPU・メモリの使用量を確認できます(metrics-serverが必要)。

イベントの確認

kubectl get events --sort-by=.metadata.creationTimestamp

クラスタ内で何が起こっているかを時系列で確認できます。

つくって、壊して、直して学ぶ Kubernetes入門 [ 高橋 あおい ]
created by Rinker
¥3,278 (2025/09/30 23:49:14時点 楽天市場調べ-詳細)

Podの基本操作を体験してみよう

Podとは何か?基本概念の理解

Podは、Kubernetesの最小デプロイ単位です。

「コンテナじゃないの?」と思うかもしれませんが、Kubernetesではコンテナを直接操作しません。必ずPodという「入れ物」に包んで管理します。

Podの特徴

  • 1つのPodには1つ以上のコンテナが入る
  • 同じPod内のコンテナは同じノードで実行される
  • 同じPod内のコンテナはネットワークを共有
  • Podには一意のIPアドレスが割り当てられる

なぜPodが必要?
複数のコンテナを密結合で動かしたい場合があります。例えば:

  • Webアプリケーション + ログ収集サイドカー
  • アプリケーション + プロキシサーバー

でも実際は、1Pod = 1コンテナで運用することがほとんどです!

Podの作成・削除・確認方法

実際にPodを作ってみましょう!

コマンドでPodを作成

kubectl run my-nginx --image=nginx --port=80

これで、nginxコンテナが動くPodが作成されます。

YAMLでPodを作成

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
kubectl apply -f pod.yaml

Podの状態確認

# Pod一覧
kubectl get pods

# 詳細情報
kubectl describe pod my-nginx

# Podの中に入る
kubectl exec -it my-nginx -- /bin/bash

Podの削除

kubectl delete pod my-nginx

Podのログ確認とデバッグ

Podが期待通り動いているか確認する方法を見てみましょう。

ログの確認

# 最新のログを表示
kubectl logs my-nginx

# リアルタイムでログを表示(-f)
kubectl logs -f my-nginx

# 過去のログを指定行数表示
kubectl logs --tail=100 my-nginx

Podの状態診断

# Pod詳細情報(エラー原因の特定に重要!)
kubectl describe pod my-nginx

# Pod内のプロセス確認
kubectl exec my-nginx -- ps aux

# Pod内のネットワーク確認
kubectl exec my-nginx -- netstat -tlnp

よくあるPodのステータス

  • Running:正常に動作中
  • Pending:まだ起動していない(リソース不足など)
  • CrashLoopBackOff:起動しては落ちるを繰り返している
  • ImagePullBackOff:イメージがダウンロードできない

「つくって、壊して、直して」で学ぶトラブル対応

意図的にPodを壊してみる

ここからが本書の真骨頂!実際にPodを壊してトラブルシューティングを体験してみましょう。

メモリ不足でPodを壊す

apiVersion: v1
kind: Pod
metadata:
  name: memory-hog
spec:
  containers:
  - name: app
    image: nginx
    resources:
      limits:
        memory: "64Mi"  # 少なすぎるメモリ制限
      requests:
        memory: "128Mi" # リクエストがリミットを超えている

これを適用すると、PodがOutOfMemoryエラーで落ちるはずです。

存在しないイメージでPodを壊す

kubectl run broken-pod --image=nonexistent:latest

無効な設定でPodを壊す

apiVersion: v1
kind: Pod
metadata:
  name: broken-config
spec:
  containers:
  - name: app
    image: nginx
    ports:
    - containerPort: "invalid"  # 数値じゃなく文字列

kubectlでトラブルシューティング

壊れたPodを診断・修復してみましょう!

ステップ1:状況確認

# Pod一覧で状態確認
kubectl get pods

# 詳細情報でエラー原因を特定
kubectl describe pod broken-pod

ステップ2:ログ確認

# エラーログの確認
kubectl logs broken-pod

# 前回実行時のログ確認(Podが再起動している場合)
kubectl logs broken-pod --previous

ステップ3:イベント確認

# 関連するイベントを時系列で確認
kubectl get events --field-selector involvedObject.name=broken-pod

ステップ4:リソース使用量確認

# CPU・メモリ使用量確認
kubectl top pod broken-pod

実際の障害対応の流れ

本書では、以下のような実践的な障害対応パターンを学べます:

1. OutOfMemoryエラー

  • 症状:PodがCrashLoopBackOffになる
  • 原因:メモリ制限が不適切
  • 対処:リソース制限の調整

2. ImagePullBackOffエラー

  • 症状:Podが起動しない
  • 原因:イメージが存在しない・認証エラー
  • 対処:イメージ名の修正・認証情報の設定

3. ネットワーク接続エラー

  • 症状:Pod間の通信ができない
  • 原因:Service設定の問題
  • 対処:Service・ネットワークポリシーの確認

デバッグのコツ

  1. kubectl describeで詳細情報を確認
  2. kubectl logsでアプリケーションログを確認
  3. kubectl get eventsでシステムイベントを確認
  4. kubectl execで直接Podの中を調査
つくって、壊して、直して学ぶ Kubernetes入門 [ 高橋 あおい ]
created by Rinker
¥3,278 (2025/09/30 23:49:14時点 楽天市場調べ-詳細)

Kubernetesの学習を続けるために

次に学ぶべき概念とリソース

Podとkubectlの基本をマスターしたら、次のステップに進みましょう!

レベル2:基本的なワークロード

  • Deployment:Podの管理・更新を自動化
  • Service:Podへの安定したアクセス経路
  • ConfigMap:設定情報の外部化
  • Secret:機密情報の管理

レベル3:高度な機能

  • Ingress:HTTP/HTTPSアクセスの制御
  • PersistentVolume:データの永続化
  • Horizontal Pod Autoscaler:自動スケーリング
  • NetworkPolicy:ネットワークセキュリティ

レベル4:運用・監視

  • Prometheus + Grafana:メトリクス監視
  • ELK Stack:ログ管理
  • Helm:アプリケーション管理
  • GitOps:宣言的なデプロイメント

おすすめの学習リソース

書籍で基礎を固める
Kubernetes学習の第一歩として、今回紹介した「つくって、壊して、直して学ぶ Kubernetes入門」は本当におすすめです!

つくって、壊して、直して学ぶ Kubernetes入門 [ 高橋 あおい ]
created by Rinker
¥3,278 (2025/09/30 23:49:14時点 楽天市場調べ-詳細)

特にこの書籍の良いところ

  • 豊富なマンガ・イラストで概念が分かりやすい
  • 実際に手を動かしながら学べるハンズオン形式
  • 「壊して学ぶ」アプローチで実践的なスキルが身につく
  • トラブルシューティングが充実している

無料のハンズオン環境

  • Minikube:ローカルでKubernetesクラスタを構築
  • Kind:Dockerを使った軽量クラスタ
  • Play with Kubernetes:ブラウザ上で試せるプレイグラウンド

公式リソース

  • Kubernetes公式ドキュメント:最新情報はここで確認
  • kubectl Cheat Sheet:よく使うコマンドの早見表

まとめ

お疲れさまでした!この記事では、Kubernetes入門の基本的な内容を学習しました:

Kubernetesの基本概念を理解
kubectlコマンドの使い方をマスター
Pod操作の基本を体験
トラブルシューティングの手法を学習

Kubernetesは確かに学習コストがかかる技術です。でも、一歩ずつ着実に進めば必ずマスターできます!

重要なポイント

  • まずはPodとkubectlから始める
  • 実際に手を動かしながら学ぶ
  • トラブルを恐れずに「壊して学ぶ」
  • 分からないところは公式ドキュメントで確認

特に最初の基礎固めが重要です。「つくって、壊して、直して学ぶ Kubernetes入門」なら、図解豊富で実践的な内容で、確実にスキルアップできます。

Kubernetesの世界への第一歩として、ぜひ手に取ってみてください!

きっと「Kubernetesって面白い!」と感じられるはずです。

つくって、壊して、直して学ぶ Kubernetes入門 [ 高橋 あおい ]
created by Rinker
¥3,278 (2025/09/30 23:49:14時点 楽天市場調べ-詳細)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA



reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次