kubectlのコマンドの簡単な翻訳

毎回英文読むのめんどくさいのでざっと  
[Overview of kubectl](https://kubernetes.io/docs/reference/kubectl/overview/)にあるkubectlのコマンドの簡単な翻訳

| コマンド  | 構文 | 説明 |
|------------|---------------------------------------------------|-------------------------------------------|
|annotate    |kubectl annotate(-f FILENAME \ &#124; TYPE NAME \&#124; TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | annotations(注釈)を追加、更新する |
|api-versions | kubectl api-versions [flags] | 利用可能なAIP一覧を表示する |
| apply | kubectl apply -f FILENAME [flags] | リソースファイル、標準入力からの設定変更を適用する |
|attach | kubectl attach POD -c CONTAINER [-i] [-t] [flags] | 起動中のコンテナへ接続して出力を表示するか、対話型で接続する |
| autoscale | kubectl autoscale (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] | レプリケーションコントローラーの管理しているpodを自動でスケーリングする |
|cluster-info| kubectl cluster-info [flags] | クラスタのマスターとサービスに関するエンドポイントの情報を表示する|
|config |kubectl config SUBCOMMAND [flags] | kubeconfigファイルの編集を行う。詳細はサブコマンドを参照|
|create| kubectl create -f FILENAME [flags] | ファイル、標準入力から1つ以上のリソースを作成する|
|delete| kubectl delete (-f FILENAME \ &#124; TYPE [NAME \ &#124; /NAME \ &#124; -l label \ &#124; --all]) [flags] | ファイル、標準入力またはlabel selectors,name,resource selectors,  resourcesから選択しリソースを削除する |
|describe| kubectl describe (-f FILENAME \ &#124; TYPE [NAME_PREFIX \ &#124; /NAME \ &#124; -l label]) [flags] | リソースの状態を表示する |
|diff | kubectl diff -f FILENAME [flags] | Diffファイルまたは標準入力と現在の設定の差分を表示(BATA)|
|edit| kubectl edit (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) [flags] | エディタを使ってリソースの定義情報を編集、更新する|
|exec| kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] | PODに対してコマンドを実行する|
|explain | kubectl explain [--include-extended-apis=true] [--recursive=false] [flags] | pod,node,サービスなどの説明を取得|
|expose| kubectl expose (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) [--port=port] [--protocol=TCP\ &#124;UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] | サービスを作成し、外部へ公開する|
|get | kubectl get (-f FILENAME \ &#124; TYPE [NAME \ &#124; /NAME \ &#124; -l label]) [--watch] [--sort-by=FIELD] [[-o \ &#124; --output]=OUTPUT_FORMAT] [flags] | リソースをリスト表示する|
|label |  kubectl label (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | リソースのlabelを追加または編集する |
|logs | kubectl logs POD [-c CONTAINER] [--follow] [flags] | PODのログを表示する|
|patch | kubectl patch (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) --patch PATCH [flags] | パッチを適用しリソースのフィールドを更新する|
|port-forward | kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] | ローカルのポートを別のpodへ転送する|
|proxy | kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] | Kubernetes API serverへのプロキシを実行する|
|replace | kubectl replace -f FILENAME | ファイル、標準出力からリソースを置き換える|
|rolling-update | kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE \ &#124; -f NEW_CONTROLLER_SPEC) [flags] | 指定されたPODを順次更新していく|
|run | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags] | 指定したイメージをクラスタで実行する|
|scale| kubectl scale (-f FILENAME \ &#124; TYPE NAME \ &#124; TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] | PODの数を変更する|
|stop |kubectl stop | 非推奨 delete を参照|
|version | kubectl version [--client] [flags] | k8sのバージョンを表示する|

## output option  

一部の表示コマンドでは出力のフォーマット、ソートの指定をするオプションが存在します。  
どのコマンドがどのオプションを利用可能化は別途参照   

構文:   
`$ kubectl [command] [TYPE] [NAME] -o=<output_format>`

|表示フォーマット|説明|
|-------------|---|
|-o=custom-columns=<spec\>| カンマ区切りの表にして表示する|
|-o=custom-columns-file=<filename\>| <filename\>で指定されたテンプレートに従って表示する|
|-o=json|json形式で表示する|
|-o=jsonpath=<template\>|必要なjsonのキーを指定して表示する|
|-o=jsonpath-file=<filename\>|<filename\>内で指定されたjsonのキーを指定して表示する|
|-o=name|リソース名のみ表示する|
|-o=wide|追加情報を加えて表示する。PODの場合はNode名も表示する|
|-o=yaml|YAML形式で表示する|

## コマンド例  

### kubectl create  

```
# example-service.yaml の内容に従ってサービスを作成する
$ kubectl create -f example-service.yaml

# example-controller.yamlの内容に従ってレプリケーションコントローラーを作成する
$ kubectl create -f example-controller.yaml

# <directory>内にある任意のファイル .yaml, .yml, .json に従ってオブジェクトを作成する
$ kubectl create -f <directory>
```

### kubectl get 

```
# 全てのpodをplain-textで表示する
$ kubectl get pods

# 全てのpodを追加情報を含めてplain-textで表示する  (node名も表示する)
$ kubectl get pods -o wide

# 指定したreplicationcontrollerを plain-text で表示する。'replicationcontroller'は'rc'と省略も可能
$ kubectl get replicationcontroller <rc-name>

# replicationcontrollerとserviceの情報をplain-textで表示する
$ kubectl get rc,services

# 未初期化のものを含めてdaemonsets(ds)を表示する
$ kubectl get ds --include-uninitialized

# node名server01で動いているpodを表示する
$ kubectl get pods --field-selector=spec.nodeName=server01
```

### kubectl describe

```
# <node-name>で指定したnodeの詳細を表示
$ kubectl describe nodes <node-name>

# <pod-name>で指定したpodの詳細を表示
$ kubectl describe pods/<pod-name>

# <rc-name>で指定したreplication controller含まれているpodの詳細情報を表示
# 確認: replication controllerによって作成されたpodにはreplication controllerのプレフィックスが付く
$ kubectl describe pods <rc-name>

# 初期化済みの全podの詳細を表示する
$ kubectl describe pods --include-uninitialized=false
```

### kubectl delete

```
# pod.yaml fileに記述されているnameとtypeのpodを削除する
$ kubectl delete -f pod.yaml

# name=<label-name>で渡されたlabel名が一致するpodとserviceを削除する
$ kubectl delete pods,services -l name=<label-name>

# name=<label-name>で渡されたlabel名が一致するpodとserviceを未初期化も含めて削除する
$ kubectl delete pods,services -l name=<label-name> --include-uninitialized

# 全てのpodを削除する
$ kubectl delete pods --all
```

### kubectl exec

```
# <pod-name>で指定したpodで'date'コマンドを実行し出力する。デフォルトでは1番目のコンテナから出力する
$ kubectl exec <pod-name> date

# pod <pod-name>の中のコンテナ<container-name>で'date'コマンドを実行する
$ kubectl exec <pod-name> -c <container-name> date

# pod <pod-name>でTTY と /bin/bashを実行する
$ kubectl exec -ti <pod-name> /bin/bash
```

### kubectl logs

```
# pod <pod-name>からlogのスナップショットを取得する.
$ kubectl logs <pod-name>

# Start streaming the logs from pod <pod-name>からlogのストリーミング取得します。 Linuxの'tail -f' と似たような内容です
$ kubectl logs -f <pod-name>
```