導入
マニフェストを書いたら、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 describe と kubectl logs を見ること。前者は「Kubernetes 側から見た経緯(配置できない・イメージが引けない等)」、後者は「アプリ自身が吐いたメッセージ」を教えてくれます。