--- title: kubectlチートシート content_template: templates/concept card: name: reference weight: 30 --- {{% capture overview %}} [Kubectl概要](/docs/reference/kubectl/overview/)と[JsonPathガイド](/docs/reference/kubectl/jsonpath)も合わせてご覧ください。 このページは`kubectl`コマンドの概要です。 {{% /capture %}} {{% capture body %}} # kubectl - チートシート ## Kubectlコマンドの補完 ### BASH ```bash source <(kubectl completion bash) # 現在のbashシェルにコマンド補完を設定するには、最初にbash-completionパッケージをインストールする必要があります。 echo "source <(kubectl completion bash)" >> ~/.bashrc # bashシェルでのコマンド補完を永続化するために.bashrcに追記します。 ``` また、エイリアスを使用している場合にも`kubectl`コマンドを補完できます。 ```bash alias k=kubectl complete -F __start_kubectl k ``` ### ZSH ```bash source <(kubectl completion zsh) # 現在のzshシェルでコマンド補完を設定します echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc # zshシェルでのコマンド補完を永続化するために.zshrcに追記します。 ``` ## Kubectlコンテキストの設定 `kubectl`がどのKubernetesクラスターと通信するかを設定します。 設定ファイル詳細については[kubeconfigを使用した複数クラスターとの認証](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)をご覧ください。 ```bash kubectl config view # マージされたkubeconfigの設定を表示します。 # 複数のkubeconfigファイルを同時に読み込む場合はこのように記述します。 KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view # e2eユーザのパスワードを取得します。 kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' kubectl config view -o jsonpath='{.users[].name}' # 最初のユーザー名を表示します kubectl config view -o jsonpath='{.users[*].name}' # ユーザー名のリストを表示します kubectl config get-contexts # コンテキストのリストを表示します kubectl config current-context # 現在のコンテキストを表示します kubectl config use-context my-cluster-name # デフォルトのコンテキストをmy-cluster-nameに設定します # basic認証をサポートする新たなクラスターをkubeconfigに追加します kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword # 現在のコンテキストでkubectlのサブコマンドのネームスペースを永続的に変更します kubectl config set-context --current --namespace=ggckad-s2 # 特定のユーザー名と名前空間を使用してコンテキストを設定します kubectl config set-context gce --user=cluster-admin --namespace=foo \ && kubectl config use-context gce kubectl config unset users.foo # ユーザーfooを削除します ``` ## Apply `apply`はKubernetesリソースを定義するファイルを通じてアプリケーションを管理します。`kubectl apply`を実行して、クラスター内のリソースを作成および更新します。これは、本番環境でKubernetesアプリケーションを管理する推奨方法です。 詳しくは[Kubectl Book](https://kubectl.docs.kubernetes.io)をご覧ください。 ## Objectの作成 Kubernetesのマニフェストファイルは、jsonまたはyamlで定義できます。ファイル拡張子として、`.yaml`や`.yml`、`.json`が使えます。 ```bash kubectl apply -f ./my-manifest.yaml # リソースを作成します kubectl apply -f ./my1.yaml -f ./my2.yaml # 複数のファイルからリソースを作成します kubectl apply -f ./dir # dirディレクトリ内のすべてのマニフェストファイルからリソースを作成します kubectl apply -f https://git.io/vPieo # urlで公開されているファイルからリソースを作成します kubectl create deployment nginx --image=nginx # 単一のnginx Deploymentを作成します kubectl explain pods,svc # PodおよびServiceマニフェストのドキュメントを取得します # 標準入力から複数のYAMLオブジェクトを作成します cat < pod.yaml kubectl attach my-pod -i # 実行中のコンテナに接続します kubectl port-forward my-pod 5000:6000 # ローカルマシンのポート5000を、my-podのポート6000に転送します kubectl exec my-pod -- ls / # 既存のPodでコマンドを実行(単一コンテナの場合) kubectl exec my-pod -c my-container -- ls / # 既存のPodでコマンドを実行(複数コンテナがある場合) kubectl top pod POD_NAME --containers # 特定のPodとそのコンテナのメトリクスを表示します ``` ## ノードおよびクラスターとの対話処理 ```bash kubectl cordon my-node # my-nodeにスケーリングされないように設定します kubectl drain my-node # メンテナンスの準備としてmy-nodeで動作中のPodを空にします kubectl uncordon my-node # my-nodeにスケーリングされるように設定します kubectl top node my-node # 特定のノードのメトリクスを表示します kubectl cluster-info # Kubernetesクラスターのマスターとサービスのアドレスを表示します kubectl cluster-info dump # 現在のクラスター状態を標準出力にダンプします kubectl cluster-info dump --output-directory=/path/to/cluster-state # 現在のクラスター状態を/path/to/cluster-stateにダンプします # special-userキーとNoScheduleエフェクトを持つTaintが既に存在する場合、その値は指定されたとおりに置き換えられます kubectl taint nodes foo dedicated=special-user:NoSchedule ``` ### リソースタイプ サポートされているすべてのリソースタイプを、それらが[API group](/ja/docs/concepts/overview/kubernetes-api/#api-groups)か[Namespaced](/docs/concepts/overview/working-with-objects/namespaces)、[Kind](/docs/concepts/overview/working-with-objects/kubernetes-objects)に関わらずその短縮名をリストします。 ```bash kubectl api-resources ``` APIリソースを探索するためのその他の操作: ```bash kubectl api-resources --namespaced=true # 名前空間付きのすべてのリソースを表示します kubectl api-resources --namespaced=false # 名前空間のないすべてのリソースを表示します kubectl api-resources -o name # すべてのリソースを単純な出力(リソース名のみ)で表示します kubectl api-resources -o wide # すべてのリソースを拡張された形(別名 "wide")で表示します kubectl api-resources --verbs=list,get # "list"および"get"操作をサポートするすべてのリソースを表示します kubectl api-resources --api-group=extensions # "extensions" APIグループのすべてのリソースを表示します ``` ### 出力のフォーマット 特定の形式で端末ウィンドウに詳細を出力するには、サポートされている`kubectl`コマンドに`-o`または`--output`フラグを追加します。 出力フォーマット | 説明 ---------------- | ----------- `-o=custom-columns=` | カスタムカラムを使用してコンマ区切りのテーブルを表示します `-o=custom-columns-file=` | ``ファイル内のカスタムカラムテンプレートを使用してテーブルを表示します `-o=json` | JSON形式のAPIオブジェクトを出力します `-o=jsonpath=