本文へスキップ
BecomeCoder

Kubernetesコース · 第2章 Pod ― 最小の実行単位 · レッスン9

kubectl の基本操作 ― apply/get/describe/logs/exec/delete

ブラウザで完結

導入

マニフェストを書いたら、kubectl でクラスタに反映します。作る・一覧する・詳しく見る・ログを読む・中に入る・消す――日々の運用で使う基本コマンドを、前レッスンの my-nginx を題材に一通り押さえましょう。

説明

前レッスンのマニフェストを pod.yaml というファイルに保存したとして、基本操作は次のとおりです。

# マニフェストの内容をクラスタに反映(あるべき状態を適用)
kubectl apply -f pod.yaml
# pod/my-nginx created

# Podの一覧を見る
kubectl get pods
# NAME       READY   STATUS    RESTARTS   AGE
# my-nginx   1/1     Running   0          10s

# Podの現在の全設定をYAMLで見る(実際の状態を確認)
kubectl get pod my-nginx -o yaml

# Podの詳細(イベントや起動の経緯まで)を見る。トラブル調査の定番
kubectl describe pod my-nginx

# Pod(の中のコンテナ)の標準出力ログを見る
kubectl logs my-nginx

# Podの中に入って対話シェルを起動する(-it は対話モード)
kubectl exec -it my-nginx -- sh

# マニフェストで作ったものを消す
kubectl delete -f pod.yaml
# pod "my-nginx" deleted

kubectl get pods の出力は次のように読みます。運用中に最も目にする表です。

  • NAME … Pod の名前。
  • READY準備できたコンテナ数 / 全コンテナ数1/1 なら1個中1個が使える状態。
  • STATUS … 状態。Running(稼働中)、Pending(配置待ち)、CrashLoopBackOff(起動失敗を繰り返し)など。
  • RESTARTSコンテナが再起動した回数。数字が増え続けるのは異常のサイン。
  • AGE … 作られてからの経過時間。

コツは、うまくいかないときはまず kubectl describekubectl logs を見ること。前者は「Kubernetes 側から見た経緯(配置できない・イメージが引けない等)」、後者は「アプリ自身が吐いたメッセージ」を教えてくれます。

実際に動かしてみよう

上がマニフェスト(YAML)エディタ、下が kubectl の端末です。エディタの内容は `manifest.yaml` として保存され、下で `kubectl apply -f manifest.yaml` を実行するとクラスタに反映されます(pod.yaml / deploy.yaml / service.yaml も最初から置いてあります)。`kubectl get pods` / `describe` / `scale` / `rollout` などで結果を確かめましょう(本物のKubernetesではなく、動きを再現した軽量なシミュレータです)。各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」で戻せます。

kubectl(シミュレート)

マニフェスト(YAML)を書いて kubectl コマンドを試せる学習用クラスタを読み込みます(本物のKubernetesではなく、apply/get/describe/scale/rollout などの動きを再現した軽量な自作シミュレータです)。
スクロールして表示された時点でも自動で読み込まれます。