--- title: コマンドラインツール(kubectl) content_type: reference weight: 110 no_list: true card: name: reference weight: 20 --- {{< glossary_definition prepend="Kubernetesが提供する、" term_id="kubectl" length="short" >}} このツールの名前は、`kubectl` です。 `kubectl`コマンドラインツールを使うと、Kubernetesクラスターを制御できます。環境設定のために、`kubectl`は、`$HOME/.kube`ディレクトリにある`config`という名前のファイルを探します。他の[kubeconfig](/ja/docs/concepts/configuration/organize-cluster-access-kubeconfig/)ファイルは、`KUBECONFIG`環境変数を設定するか、[`--kubeconfig`](/ja/docs/concepts/configuration/organize-cluster-access-kubeconfig/)フラグを設定することで指定できます。 この概要では、`kubectl`の構文を扱い、コマンド操作を説明し、一般的な例を示します。サポートされているすべてのフラグやサブコマンドを含め、各コマンドの詳細については、[kubectl](/docs/reference/generated/kubectl/kubectl-commands/)リファレンスドキュメントを参照してください。 インストール方法については、[kubectlのインストールおよびセットアップ](/ja/docs/tasks/tools/install-kubectl/)をご覧ください。クイックガイドは、[チートシート](/ja/docs/reference/kubectl/cheatsheet/)をご覧ください。`docker`コマンドラインツールに慣れている方は、[`kubectl` for Docker Users](/docs/reference/kubectl/docker-cli-to-kubectl/)でKubernetesの同等のコマンドを説明しています。 ## 構文 ターミナルウィンドウから`kubectl`コマンドを実行するには、以下の構文を使用します。 ```shell kubectl [command] [TYPE] [NAME] [flags] ``` ここで、`command`、`TYPE`、`NAME`、`flags`は、以下を表します。 * `command`: 1つ以上のリソースに対して実行したい操作を指定します。例えば、`create`、`get`、`describe`、`delete`です。 * `TYPE`: [リソースタイプ](#resource-types)を指定します。リソースタイプは大文字と小文字を区別せず、単数形や複数形、省略形を指定できます。例えば、以下のコマンドは同じ出力を生成します。 ```shell kubectl get pod pod1 kubectl get pods pod1 kubectl get po pod1 ``` * `NAME`: リソースの名前を指定します。名前は大文字と小文字を区別します。`kubectl get pods`のように名前が省略された場合は、すべてのリソースの詳細が表示されます。 複数のリソースに対して操作を行う場合は、各リソースをタイプと名前で指定するか、1つまたは複数のファイルを指定することができます。 * リソースをタイプと名前で指定する場合 * タイプがすべて同じとき、リソースをグループ化するには`TYPE1 name1 name2 name<#>`とします。
例: `kubectl get pod example-pod1 example-pod2` * 複数のリソースタイプを個別に指定するには、`TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>`とします。
例: `kubectl get pod/example-pod1 replicationcontroller/example-rc1` * リソースを1つ以上のファイルで指定する場合は、`-f file1 -f file2 -f file<#>`とします。 * 特に設定ファイルについては、YAMLの方がより使いやすいため、[JSONではなくYAMLを使用してください](/ja/docs/concepts/configuration/overview/#一般的な設定のtips)。
例: `kubectl get pod -f ./pod.yaml` * `flags`: オプションのフラグを指定します。例えば、`-s`または`--server`フラグを使って、Kubernetes APIサーバーのアドレスやポートを指定できます。
{{< caution >}} コマンドラインから指定したフラグは、デフォルト値および対応する任意の環境変数を上書きします。 {{< /caution >}} ヘルプが必要な場合は、ターミナルウィンドウから`kubectl help`を実行してください。 ## クラスター内認証と名前空間のオーバーライド {#in-cluster-authentication-and-namespace-overrides} デフォルトでは、`kubectl`は最初にPod内で動作しているか、つまりクラスター内で動作しているかどうかを判断します。まず、`KUBERNETES_SERVICE_HOST`と`KUBERNETES_SERVICE_PORT`の環境変数を確認し、サービスアカウントのトークンファイルが`/var/run/secrets/kubernetes.io/serviceaccount/token`に存在するかどうかを確認します。3つともクラスター内で見つかった場合、クラスター内認証とみなされます。 後方互換性を保つため、クラスター内認証時に`POD_NAMESPACE`環境変数が設定されている場合には、サービスアカウントトークンのデフォルトの名前空間が上書きされます。名前空間のデフォルトに依存しているすべてのマニフェストやツールは、この影響を受けます。 **`POD_NAMESPACE`環境変数** `POD_NAMESPACE`環境変数が設定されている場合、名前空間に属するリソースのCLI操作は、デフォルトで環境変数の値になります。例えば、変数に`seattle`が設定されている場合、`kubectl get pods`は、`seattle`名前空間のPodを返します。これは、Podが名前空間に属するリソースであり、コマンドで名前空間が指定されていないためです。`kubectl api-resources`の出力を見て、リソースが名前空間に属するかどうかを判断してください。 明示的に`--namespace `を使用すると、この動作は上書きされます。 **kubectlによるServiceAccountトークンの処理方法** 以下の条件がすべて成立した場合、 * `/var/run/secrets/kubernetes.io/serviceaccount/token`にマウントされたKubernetesサービスアカウントのトークンファイルがある * `KUBERNETES_SERVICE_HOST`環境変数が設定されている * `KUBERNETES_SERVICE_PORT`環境変数が設定されている * kubectlコマンドラインで名前空間を明示的に指定しない kubectlはクラスター内で実行されているとみなして、そのServiceAccountの名前空間(これはPodの名前空間と同じです)を検索し、その名前空間に対して機能します。これは、クラスターの外の動作とは異なります。kubectlがクラスターの外で実行され、名前空間を指定しない場合、kubectlコマンドは、クライアント構成の現在のコンテキストに設定されている名前空間に対して動作します。kubectlのデフォルトの名前空間を変更するには、次のコマンドを使用できます。 ```shell kubectl config set-context --current --namespace= ``` ## 操作 以下の表に、`kubectl`のすべての操作の簡単な説明と一般的な構文を示します。 操作                 | 構文 | 説明 -------------------- | -------------------- | -------------------- `alpha`| `kubectl alpha SUBCOMMAND [flags]` | アルファ機能に該当する利用可能なコマンドを一覧表示します。これらの機能は、デフォルトではKubernetesクラスターで有効になっていません。 `annotate` | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 1つ以上のリソースのアノテーションを、追加または更新します。 `api-resources` | `kubectl api-resources [flags]` | 利用可能なAPIリソースを一覧表示します。 `api-versions` | `kubectl api-versions [flags]` | 利用可能なAPIバージョンを一覧表示します。 `apply` | `kubectl apply -f FILENAME [flags]`| ファイルまたは標準出力から、リソースの設定変更を適用します。 `attach` | `kubectl attach POD -c CONTAINER [-i] [-t] [flags]` | 実行中のコンテナにアタッチして、出力ストリームを表示するか、コンテナ(標準入力)と対話します。 `auth` | `kubectl auth [flags] [options]` | 認可を検査します。 `autoscale` | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] | ReplicationControllerで管理されているPodのセットを、自動的にスケールします。 `certificate` | `kubectl certificate SUBCOMMAND [options]` | 証明書のリソースを変更します。 `cluster-info` | `kubectl cluster-info [flags]` | クラスター内のマスターとサービスに関するエンドポイント情報を表示します。 `completion` | `kubectl completion SHELL [options]` | 指定されたシェル(bashまたはzsh)のシェル補完コードを出力します。 `config` | `kubectl config SUBCOMMAND [flags]` | kubeconfigファイルを変更します。詳細は、個々のサブコマンドを参照してください。 `convert` | `kubectl convert -f FILENAME [options]` | 異なるAPIバージョン間で設定ファイルを変換します。YAMLとJSONに対応しています。 `cordon` | `kubectl cordon NODE [options]` | Nodeをスケジュール不可に設定します。 `cp` | `kubectl cp [options]` | コンテナとの間でファイルやディレクトリをコピーします。 `create` | `kubectl create -f FILENAME [flags]` | ファイルまたは標準出力から、1つ以上のリソースを作成します。 `delete` | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] | ファイル、標準出力、またはラベルセレクター、リソースセレクター、リソースを指定して、リソースを削除します。 `describe` | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | 1つ以上のリソースの詳細な状態を表示します。 `diff` | `kubectl diff -f FILENAME [flags]`| ファイルまたは標準出力と、現在の設定との差分を表示します。 `drain` | `kubectl drain NODE [options]` | メンテナンスの準備のためにNodeをdrainします。 `edit` | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] | デファルトのエディタを使い、サーバー上の1つ以上のリソースリソースの定義を編集し、更新します。 `events` | `kubectl events` | イベントを一覧表示します。 `exec` | `kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]` | Pod内のコンテナに対して、コマンドを実行します。 `explain` | `kubectl explain [--recursive=false] [flags]` | 様々なリソースのドキュメントを取得します。例えば、Pod、Node、Serviceなどです。 `expose` | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] | ReplicationController、Service、Podを、新しいKubernetesサービスとして公開します。 `get` | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] | 1つ以上のリソースを表示します。 `kustomize` | `kubectl kustomize [flags] [options]` | kustomization.yamlファイル内の指示から生成されたAPIリソースのセットを一覧表示します。引数はファイルを含むディレクトリのPath,またはリポジトリルートに対して同じ場所を示すパスサフィックス付きのgitリポジトリのURLを指定しなければなりません。 `label` | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | 1つ以上のリソースのラベルを、追加または更新します。 `logs` | `kubectl logs POD [-c CONTAINER] [--follow] [flags]` | Pod内のコンテナのログを表示します。 `options` | `kubectl options` | すべてのコマンドに適用されるグローバルコマンドラインオプションを一覧表示します。 `patch` | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] | Strategic Merge Patchの処理を使用して、リソースの1つ以上のフィールドを更新します。 `plugin` | `kubectl plugin [flags] [options]` | プラグインと対話するためのユーティリティを提供します。 `port-forward` | `kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]` | 1つ以上のローカルポートを、Podに転送します。 `proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | Kubernetes APIサーバーへのプロキシーを実行します。 `replace` | `kubectl replace -f FILENAME` | ファイルや標準出力から、リソースを置き換えます。 `rollout` | `kubectl rollout SUBCOMMAND [options]` | リソースのロールアウトを管理します。有効なリソースには、Deployment、DaemonSetとStatefulSetが含まれます。 `run` | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client|none] [--overrides=inline-json] [flags] | 指定したイメージを、クラスター上で実行します。 `scale` | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] | 指定したReplicationControllerのサイズを更新します。 `set` | `kubectl set SUBCOMMAND [options]` | アプリケーションリソースを設定します。 `taint` | `kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]` | 1つ以上のNodeのtaintを更新します。 `top` | `kubectl top [flags] [options]` | リソース(CPU/メモリー/ストレージ)の使用量を表示します。 `uncordon` | `kubectl uncordon NODE [options]` | Nodeをスケジュール可に設定します。 `version` | `kubectl version [--client] [flags]` | クライアントとサーバーで実行中のKubernetesのバージョンを表示します。 `wait` | kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] | 実験中の機能: 1つ以上のリソースが特定の状態になるまで待ちます。 コマンド操作について詳しく知りたい場合は、[kubectl](/docs/reference/kubectl/kubectl/)リファレンスドキュメントを参照してください。 ## リソースタイプ {#resource-types} 以下の表に、サポートされているすべてのリソースと、省略されたエイリアスの一覧を示します。 (この出力は`kubectl api-resources`から取得でき、Kubernetes 1.25.0時点で正確でした。) | リソース名 | 短縮名 | APIバージョン | 名前空間に属するか | リソースの種類 | |---|---|---|---|---| | `bindings` | | v1 | true | Binding | | `componentstatuses` | `cs` | v1 | false | ComponentStatus | | `configmaps` | `cm` | v1 | true | ConfigMap | | `endpoints` | `ep` | v1 | true | Endpoints | | `events` | `ev` | v1 | true | Event | | `limitranges` | `limits` | v1 | true | LimitRange | | `namespaces` | `ns` | v1 | false | Namespace | | `nodes` | `no` | v1 | false | Node | | `persistentvolumeclaims` | `pvc` | v1 | true | PersistentVolumeClaim | | `persistentvolumes` | `pv` | v1 | false | PersistentVolume | | `pods` | `po` | v1 | true | Pod | | `podtemplates` | | v1 | true | PodTemplate | | `replicationcontrollers` | `rc` | v1 | true | ReplicationController | | `resourcequotas` | `quota` | v1 | true | ResourceQuota | | `secrets` | | v1 | true | Secret | | `serviceaccounts` | `sa` | v1 | true | ServiceAccount | | `services` | `svc` | v1 | true | Service | | `mutatingwebhookconfigurations` | | admissionregistration.k8s.io/v1 | false | MutatingWebhookConfiguration | | `validatingwebhookconfigurations` | | admissionregistration.k8s.io/v1 | false | ValidatingWebhookConfiguration | | `customresourcedefinitions` | `crd,crds` | apiextensions.k8s.io/v1 | false | CustomResourceDefinition | | `apiservices` | | apiregistration.k8s.io/v1 | false | APIService | | `controllerrevisions` | | apps/v1 | true | ControllerRevision | | `daemonsets` | `ds` | apps/v1 | true | DaemonSet | | `deployments` | `deploy` | apps/v1 | true | Deployment | | `replicasets` | `rs` | apps/v1 | true | ReplicaSet | | `statefulsets` | `sts` | apps/v1 | true | StatefulSet | | `tokenreviews` | | authentication.k8s.io/v1 | false | TokenReview | | `localsubjectaccessreviews` | | authorization.k8s.io/v1 | true | LocalSubjectAccessReview | | `selfsubjectaccessreviews` | | authorization.k8s.io/v1 | false | SelfSubjectAccessReview | | `selfsubjectrulesreviews` | | authorization.k8s.io/v1 | false | SelfSubjectRulesReview | | `subjectaccessreviews` | | authorization.k8s.io/v1 | false | SubjectAccessReview | | `horizontalpodautoscalers` | `hpa` | autoscaling/v2 | true | HorizontalPodAutoscaler | | `cronjobs` | `cj` | batch/v1 | true | CronJob | | `jobs` | | batch/v1 | true | Job | | `certificatesigningrequests` | `csr` | certificates.k8s.io/v1 | false | CertificateSigningRequest | | `leases` | | coordination.k8s.io/v1 | true | Lease | | `endpointslices` | | discovery.k8s.io/v1 | true | EndpointSlice | | `events` | `ev` | events.k8s.io/v1 | true | Event | | `flowschemas` | | flowcontrol.apiserver.k8s.io/v1beta2 | false | FlowSchema | | `prioritylevelconfigurations` | | flowcontrol.apiserver.k8s.io/v1beta2 | false | PriorityLevelConfiguration | | `ingressclasses` | | networking.k8s.io/v1 | false | IngressClass | | `ingresses` | `ing` | networking.k8s.io/v1 | true | Ingress | | `networkpolicies` | `netpol` | networking.k8s.io/v1 | true | NetworkPolicy | | `runtimeclasses` | | node.k8s.io/v1 | false | RuntimeClass | | `poddisruptionbudgets` | `pdb` | policy/v1 | true | PodDisruptionBudget | | `podsecuritypolicies` | `psp` | policy/v1beta1 | false | PodSecurityPolicy | | `clusterrolebindings` | | rbac.authorization.k8s.io/v1 | false | ClusterRoleBinding | | `clusterroles` | | rbac.authorization.k8s.io/v1 | false | ClusterRole | | `rolebindings` | | rbac.authorization.k8s.io/v1 | true | RoleBinding | | `roles` | | rbac.authorization.k8s.io/v1 | true | Role | | `priorityclasses` | `pc` | scheduling.k8s.io/v1 | false | PriorityClass | | `csidrivers` | | storage.k8s.io/v1 | false | CSIDriver | | `csinodes` | | storage.k8s.io/v1 | false | CSINode | | `csistoragecapacities` | | storage.k8s.io/v1 | true | CSIStorageCapacity | | `storageclasses` | `sc` | storage.k8s.io/v1 | false | StorageClass | | `volumeattachments` | | storage.k8s.io/v1 | false | VolumeAttachment | ## 出力オプション ある特定のコマンドの出力に対してフォーマットやソートを行う方法については、以下の節を参照してください。どのコマンドが様々な出力オプションをサポートしているかについては、[kubectl](/docs/reference/kubectl/kubectl/)リファレンスドキュメントをご覧ください。 ### 出力のフォーマット すべての`kubectl`コマンドのデフォルトの出力フォーマットは、人間が読みやすいプレーンテキスト形式です。特定のフォーマットで、詳細をターミナルウィンドウに出力するには、サポートされている`kubectl`コマンドに`-o`または`--output`フラグのいずれかを追加します。 #### 構文 ```shell kubectl [command] [TYPE] [NAME] -o ``` `kubectl`の操作に応じて、以下の出力フォーマットがサポートされています。 出力フォーマット | 説明 --------------| ----------- `-o custom-columns=` | [カスタムカラム](#custom-columns)のコンマ区切りのリストを使用して、テーブルを表示します。 `-o custom-columns-file=` | ``ファイル内の[カスタムカラム](#custom-columns)のテンプレートを使用して、テーブルを表示します。 `-o json` | JSON形式のAPIオブジェクトを出力します。 `-o jsonpath=