【Kubernetes】よく使う基礎コマンドまとめ | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

タイトルの通り、Kubernetesでよく使うコマンドをまとめていきます。

 

公式にまとめられているので、わざわざまとめるのもあれですが…。

コマンドをちょっとずつ使ってみて、内容に納得したうえで、随時追記していきたいと思います。

 

*2020/8/5更新

リソース一覧確認(kubectl get ~)を加筆しました

 

もくじ

 ・リソース生成または更新

 ・リソース削除

 ・リソース強制削除&再生成

 ・リソース一覧確認

 ・リソース詳細確認

 

■リソース生成または更新

kubectl apply -f リソース

例: kubectl apply -f test-pod.yaml

※生成にはapplyでなくcreateコマンドも使うことは一応可能。

applyは、前回適用したマニフェスト、現在クラスタ登録されているリソースの状態、今回適用するマニフェストをそれぞれ比較のうえ、適切なリソース状態で生成・更新を行ってくれる。

createは単に生成するだけであり、生成したものを次のマニフェスト適用の際の差分確認対象として見ることもない。

従って、リソース生成であっても、createではなくapplyを使うべきである。

 

■リソース削除

kubectl delete (リソース単位) (リソース名) 

例: kubectl delete deploynment sample-deployment

 

※ReplicaSetやDeployment経由でpodをデプロイしていることが普通と思われるが、

これらの機能により、pod単体だけを削除してもまた新たなpodが生成される。

そのため、podそのものを消したい時は、上位に位置するグループごと消す必要がある。

 

■リソース強制削除&再生成

デプロイされているリソースを強制的に削除し、再編成する時に用いる。

(サービス停止が発生するため注意)

kubectl replace --force -f (マニフェストファイル)

 

■リソース一覧確認

基本の確認(リソースの一覧表示)

kubectl get リソース単位 [-n ネームスペース名]

 

<使用例>

① kubectl get pods -n test-namespace

 →「test-namespace」という名前のネームスペースにデプロイされたpodの一覧を表示する。

② kubectl get service --all-namespaces

 →全ネームスペース上にデプロイされているserviceの一覧を表示する。

③ kubectl get all

 →デフォルトネームスペースにデプロイされた、deployment, repricaset, service, podの一覧を表示する。

④ kubectl get po test-pod

 →デフォルトネームスペースにデプロイされた、test-podという名前のpodの情報だけを表示する。

 ("po"は、podの略称。その他リソース名と略称名の関係は公式参照するか、「kubectl api-resources」コマンドをたたいて確認してください)

 

<get リソースのオプション(主なもの)>

 -o wide または --output wide : 詳細まで表示

 -o yaml または --output yaml : yaml形式で表示

 -o json または --output json  : json形式で表示

 -o jsonpath : Podの特定の値を表示する。詳細は使用例②参照。

 --sort-by=.metadata.name  : 名前順にソートして表示する。

 --custom-columns  : Podの確認したい内容だけを表示。詳細は使用例③参照。

 

<使用例>

①kubectl get pods -o wide 

  →Podの一覧表示が詳細化される

 

②kubectl get pods -o jsonpath="{.metadata.name}"

  →Podの情報のうち、 「.metadata.name」の値だけを出力する。

 

③kubectl get pods --custom-columns="NAME:{.metadata.name},NodeIP:{.status.hostIP}"

  →SQLで特定の列だけを指定してSELECTするみたいなやつ。

   出力結果は以下のようになる。

     NAME                    NodeIP

       test-pod                 10.244.0.1

       sample-pod             10.244.0.2

 

■リソース詳細確認

メタ情報やコンテナの状態など、そのリソースに関して詳しい情報を提供してくれる。

kubectl describe (リソース単位) (リソース名)

例: kubectl describe pod test-pod
 

今回は以上!