Lab 1: kubectlの基本操作

このラボでは、kubectlコマンドを使ってKubernetesクラスタの情報を確認し、Podの基本的な操作を学びます。

1. クラスタ情報の確認

まず、kubectlが正しく設定されていることを確認しましょう。

# Kubernetesのバージョンを確認
kubectl version

# クラスタ情報を表示
kubectl cluster-info

# ノード一覧を表示
kubectl get nodes
💡 ヒント: kkubectl のエイリアスとして設定されています。どちらを使っても同じです。

2. Podを作成する

最もシンプルな方法でPodを作成してみましょう。containous/whoami はリクエストを受けるとホスト名やIPアドレスを返す軽量なWebサーバーです。

# whoamiコンテナを使ったPodを作成
kubectl run my-pod --image=containous/whoami

# Podの状態を確認
kubectl get pods

STATUS が Running になるまで待ちましょう。

# -w オプションで状態変化をリアルタイム監視(Ctrl+C で終了)
kubectl get pods -w

3. kubectl describe - リソースの詳細を確認

# Podの詳細情報を表示
kubectl describe pod my-pod

describe はリソースのイベント履歴や設定の詳細を表示します。トラブルシューティングに頻繁に使うコマンドです。

4. kubectl logs - ログの確認

# Podのログを表示
kubectl logs my-pod

# リアルタイムでログを追跡(Ctrl+C で終了)
kubectl logs -f my-pod

5. kubectl exec - コンテナ内でコマンドを実行

# コンテナ内でコマンドを実行
kubectl exec my-pod -- hostname
kubectl exec my-pod -- cat /etc/os-release

# コンテナ内のシェルに入る
kubectl exec -it my-pod -- /bin/sh
💡 ポイント: -- はkubectlのオプションとコンテナ内コマンドの区切りです。シェルから抜けるには exit と入力します。

6. kubectl port-forward - ローカルからアクセス

# ローカルの8080番ポートをPodの80番ポートに転送
kubectl port-forward my-pod 8080:80

別のターミナルを開いて確認します:

curl http://localhost:8080

Pod名やIPアドレスが表示されれば成功です。確認したらport-forwardのターミナルで Ctrl+C で終了します。

7. リソースの出力形式

# YAML形式で出力
kubectl get pod my-pod -o yaml

# JSON形式で出力
kubectl get pod my-pod -o json

# 特定のフィールドだけ表示
kubectl get pod my-pod -o jsonpath='{.status.podIP}'

# 幅広い情報を表示
kubectl get pods -o wide

8. クリーンアップ

# Podを削除
kubectl delete pod my-pod

# 削除されたことを確認
kubectl get pods

📝 練習問題

課題: nginx Podを操作してみましょう。
  1. nginx-test という名前でnginx Podを作成する
  2. kubectl describe でPodのIPアドレスを確認する
  3. kubectl exec でPod内に入り、curl localhost を実行してnginxの応答を確認する
  4. kubectl port-forward でローカルの9090番ポートに転送し、別ターミナルから curl localhost:9090 で確認する
  5. Podを削除する

解答例

# 1. Pod作成
kubectl run nginx-test --image=nginx

# 2. 詳細確認(IP: の行を確認)
kubectl describe pod nginx-test

# 3. Pod内からアクセス
kubectl exec -it nginx-test -- curl localhost

# 4. ポートフォワード(別ターミナルで curl localhost:9090)
kubectl port-forward nginx-test 9090:80

# 5. 削除
kubectl delete pod nginx-test

次のラボへ → Lab 2: Deployment