🌟

Kubectlチートシート

2020/12/09に公開

Kubectlチートシート

context関連

  • 現在のcontext(contextはクラスター、ユーザー、namespaceの三つ組からクラスタへの接続方法を定めるため、これら全てが表示される)を確認する
kubectl config get-contexts
  • 現在のcontext名のみを確認する
kubectl config current-context
  • contextの切り替え
kubectl config use-context $CONTEXT_NAME
もしくは
kubectx $CONTEXT_NAME
  • pod,service,replicaset,deployment全てを表示する(namespace絞り込みも可能)
    それぞれ表示させるなら、最後の引数のallをdeployment,podなどと置き換える。
kubectl (-n $NAMESPACE) get all
  • context作成(ユーザ名とクラスタを関連付ける)
kubectl config set-context $CONTEXT_NAME --user=$USER_NAME --cluster=$CLUSTER_NAME
  • context削除
kubectl config delete-context $CONTEXT_NAME

クラスタ関連

  • クラスタ作成
    クラスタ作成には、GKEを用いたり、ツールを用いたりする方法がある。それぞれのドキュメント参照。
  • クラスタ一覧
kubectl config get-clusters
  • クラスタ削除
kubectl config delete-cluster $CLUSTER_NAME

ファイルの読み込み

kubectl apply -f $FILE_NAME
  • 実行したkubectlのコマンドを記録する際には、--recordオプションを付ける
    (Deploymentの際には付けるとよい・忘れても、コマンドの内容が保存されないだけで、ロールバック可否には影響しない)
    kubectl apply -f $FILE_NAME --record
    
  • ヒストリーコマンドでリソースのリビジョンを確認する
    kubectl rollout history $RESOURCE_KIND $RESOURCE_NAME
    

ロールバックの実行

  • 記録されている、特定のリビジョン内容を確認する
kubectl rollout history $RESOURCE_KIND $RESOURCE_NAME --revision=$REVISION_NUM 
  • 直前の操作のリビジョンにロールバックする
kubectl  rollout undo $RESOURCE_KIND $RESOURCE_NAME

pod関連

  • podの情報一覧
kubectl get pod
  • Pod内コンテナに入る(複数の場合は-cオプションでコンテナを指定)
kubectl exec -it $POD_NAME sh (-c $CONTAINER_NAME)
  • Pod内コンテナの標準出力の表示
kubectl logs -f $POD_NAME (-c $CONTAINER_NAME)
  • podの削除
kubectl delete pod $POD_NAME

マニフェストファイルに書かれているリソース全てを削除

kubectl delete -f $FILE_NAME

コンテナ

  • コンテナに入ってシェル(bash)を取得する
kubectl exec -it $POD_NAME /bin/bash
  • デバッグコンテナのデプロイ(bash)
    一時的なPodを作成して、Service(後述)を確認する時に用いる
kubectl run -i --rm --tty debug --image=$CONTAINER_IMAGE --restart=Never --bash -il

ServiceAccount

  • ServiceAccountの一覧表示
kubectl get serviceaccounts
  • ServiceAccountの詳細を確認(yaml形式で表示)
kubectl get serviceaccount $SERVICE_ACCOUNT -o yaml
  • ServiceAccountのsecretの一覧表示
kubectl get secret
  • secretの中身を表示させる
kubectl describe $SECRET_NAME
  • secretの中身をyaml形式で表示
kubectl get secret $SECRET_NAME -o yaml

認証情報

  • トークンの設定
kubectl config set-credentials $SERVICE_ACCOUNT --toke=$TOKEN
  • contextの設定(これではcontextは切り替わらない・切り替えはkubectl use-context $CONTEXT)
kubectl config set-context $CONTEXT_NAME --cluster=$CLUSTER_NAME --user=AUTHENTICATION_USERNAME
  • 認証情報の確認
kubectl config view

Discussion