ユーザーは、コマンドラインを介してクラスタKubernetesを操作することを可能にするクライアントCLIツールとしてkubectl。サブコマンドおよび使用kubectlのこのセクションでは、詳細に説明します。
2.2.1 kubectlの使用法の概要
kubectlコマンドライン構文は次のとおりです。
$ kubectl [command] [TYPE] [NAME] [flags]
ここで、コマンド、TYPE、NAME、フラグは以下の意味を有します。
- (1)コマンド:サブコマンドコマンド操作Kubernetesクラスタリソースオブジェクトのために、そのようなように作成、削除、記述し、取得し、適用しています。
- (2)TYPE:リソースオブジェクトの種類、大文字と小文字を区別し、缶、又は複数の短い形は単数形で表現しました。TYPEの例は、以下の3つが等価です。
$ kubectl get pod pod1
$ kubectl get pods pod1
$ kubectl get po pod1
- (3)名称:リソース・オブジェクトの名前は、大文字と小文字が区別されます。名前を指定しない場合、システムは、例えば$ kubectl GETポッドは、すべてのポッドのリストを返します、TYPEに属するすべてのオブジェクトのリストを返します。
- (4)フラグ:オプションのパラメータkubectlサブコマンド、例えば「-s」URLアドレス指定apiserver代わりにデフォルト値を使用します。
kubectlリソース表2.9に示すように動作可能なオブジェクトタイプ。
<センター>表2.9 kubectl動作可能なリソース・オブジェクト・タイプ</センター>
リソース・オブジェクトの名前 | 略語 |
---|---|
クラスタ | |
componentstatuses | CS |
configmaps | CM |
daemonsets | DS |
展開 | 配備します |
エンドポイント | EP |
イベント | EV |
horizontalpodautoscalers | HPA |
ingresses | ING |
ジョブズ | |
limitranges | 限界 |
ノード | いいえ |
名前空間 | NS |
networkpolicies | |
statefulsets | |
persistentvolumeclaims | PVC |
persistentvolumes | PV |
ポッド | PO |
podsecuritypolicies | PSP |
podtemplate | |
replicasets | RS |
replicationcontrollers | RC |
resourcequotas | クォータ |
cronジョブ | |
秘密 | |
serviceaccounts | |
サービス | SVC |
storageclasses | SC |
thirdpartyresources |
それは同時に、コマンドラインのリソース複数のオブジェクトを操作することができ、複数名のタイプの組み合わせは、以下のように例があります。
- より多くの情報へのアクセスのポッド:
$ kubectl get pods pod1 pod2
- さまざまなオブジェクトから情報を取得します。
$ kubectl get pod/pod1 rc/rc1
- 同時に複数のアプリケーションファイルYAML、複数-fファイルのパラメータとして表現。
$ kubectl get pod -f pod1.yaml -f pod2.yaml
$ kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2.2.4 kubectl出力形式
Kubectlコマンドフォーマット表示、-oパラメータで指定された出力フォーマットの複数の結果:
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
サブコマンドの出力は、表2.12に示すように、選択可能な出力フォーマット。
出力フォーマット | 説明 |
---|---|
-o =カスタム列= <スペック> | カンマで区切られたカスタムの出力列名、 |
-o =カスタムcolimnsファイル= <ファイル名> | ファイル出力からカスタム列名を取得します。 |
ああ= JSON | JSON形式で結果を表示 |
-o = jsonpath = <テンプレート> | 出力jsonpath表現定義されたフィールド情報 |
-o = jsonpathファイル= <ファイル名> | ファイルから定義されたフィールド情報出力jsonpath表現 |
-o =名前 | 出力リソースオブジェクトの名前のみ |
-o =ワイド | 出力の追加情報。ポッドのために、出力ノード名ポッドが位置しています |
O = YAML | 結果ショー形式のYAML |
一般的な出力形式は、以下に例示します。
(1)詳細ポッドを表示します。
$ kubectl get pod <pod-name> -o wide
(2)詳細ポッドYAMLフォーマットを表示するには:
$ kubectl get pod <pod-name> -o yaml
(3)ポッドのカラム名をカスタマイズするための情報を表示:
$ kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
(4)出力ファイルのカスタムの列名に基づいて:
$ kubectl get pods <pod-name> -o=custom-columns-file=template.txt
次のようにTemplate.txtファイルの内容は以下のとおりです。
NAME RSRC
metadata.name metadata.resourceVersion
出力
$ kubectl get pods chaosfomoney-deployment-64ccd59bdc-h72gh -o=custom-columns-file=template.txt
NAME RSRC
chaosfomoney-deployment-64ccd59bdc-h72gh 101119
さらに、出力は、フィールドでソートすることができ、式でjsonpathパラメータ--sort-によって指定されます。
$ kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
例えば、名前でソートするには:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE chaosfomoney-deployment-64ccd59bdc-h72gh 1/1 Running 0 1d chaosfomoney-deployment-64ccd59bdc-spnpj 1/1 Running 0 1d chaosfomoney-deployment-64ccd59bdc-xhnjr 1/1 Running 0 1d $ kubectl get pods --sort-by=.metadata.name NAME READY STATUS RESTARTS AGE chaosfomoney-deployment-64ccd59bdc-h72gh 1/1 Running 0 1d chaosfomoney-deployment-64ccd59bdc-spnpj 1/1 Running 0 1d chaosfomoney-deployment-64ccd59bdc-xhnjr 1/1 Running 0 1d
2.2.5 kubectl動作例
このセクションでは、いくつかの頻繁に使用されるkubectl動作を例に挙げて説明します。
1.リソースオブジェクトを作成します。
RC時は、あなたがサービスを作成し、YAMLプロファイルに従って:
$ kubectl create -f my-service.yaml -f my-rc.yaml
根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作;
$ kubectl create -f <directory>
2. 查看资源对象
查看所有Pod列表:
$ kubectl get pods
查看rc和service列表:
$ kubectl get rc,service
3. 描述资源对象
显示Node的详细信息:
$ kubectl describe nodes <node-name>
显示Pod的详细信息
$ kubectl describe pods <pod-name>
显示由RC管理的Pod的信息:
$ kubectl describe pods <rc-name>
4.删除资源对象
基于pod.yaml定义的名称删除Pod:
$ kubectl delete -f pod.yaml
删除所有包含某个label的Pod和Service:
$ kubectl delete pod,service -l name=<label-name>
删除所有Pod:
$ kubectl delete pods --all
5. 执行容器的命令
执行Pod的date命令,默认使用Pod的第1个容器执行:
$ kubectl exec <pod-name> date
指定Pod中某个容器执行date命令:
$ kubectl exec <pod-name> -c <container-name> date
通过bash获得Pod中某个容器的TTY,相当于登陆容器:
$ kubectl exec -ti <pod-name> -c <container-name> /bin/bash
查看容器的日志
查看容器输出到stdout的日志:
$ kubectl logs <pod-name>
跟踪查看容器的日志,相当于tail -f命令的结果:
$ kubectl logs -f <pod-name> -c <container-name>