よく使うkubectlコマンドたち

最近Kubernetesを使った開発を少しずつ行うようになった。その時に覚えておくと便利だと思ったコマンドを状況別にリストアップしようと思う、備忘録として。 全コマンド一覧はここから閲覧可能。


事前準備

シェル補完の有効化

echo 'source <(kubectl completion zsh)' >> ~/.zshrc

エイリアスの追加

毎度、kubectlと入力するのは面倒なので、適当なエイリアスを追加しておく。

echo "alias k='kubectl'" >> ~/.zshalias

作業開始

kubectlがどのKubernetesクラスターに接続しているか、または接続可能かを確認する。意図しないクラスターに接続された状態でkubectlコマンドを実行すると大事故につながるので、作業する前にどのクラスターに接続されているか必ず確認する。

コンテキスト一覧の取得

k config get-contexts

現在のコンテクストを取得

k config current-context

コンテキストの切り替え

k config use-context my-context

リソース状況の把握

Podの一覧を取得

servicesecretconfigMapnamespacesなどの一覧の取得もたまに使う。

k get pod -n my-namespace

Podのデバッグ

Podの詳細を表示

k describe pod my-pod -n my-namespace

Podのログを取得

Pod内にコンテナが1つしかない場合

k logs my-pod -n my-namespace

Pod内にコンテナが複数ある場合

k logs my-pod my-container -n my-namespace

コンテナでコマンドを実行(コンテナに入る)

k exec -it my-pod --container my-container -n my-namespace -- /bin/(b)ash

Serviceにポートフォワード

検証用に立てたリソースにデバッグのために接続したい時に便利。

Serviceとローカルホストを接続

k port-forward svc/service-name 5000 -n my-namespace
k port-forward svc/service-name 5000:6000 -n my-namespace

不要なリソースの削除

マニュフェストファイルから作成したリソースを全削除

k delete -f file-name.yaml 

Running状態以外のPodを全て削除

Running以外のフェーズはここを参照

k delete pods --field-selector=status.phase!=Running -n my-namespace

あとがき

些か偏った内容になったけど、普段使うコマンドはこんなところだと思う。もっと知見が溜まったり便利なコマンドを発見したら第2弾を出したい。