管理ツールクラスタKubernetesはのためのコマンドkubectlを実行します。
文法
kubectl [command] [TYPE] [NAME] [flags]
- コマンド:指定1つまたは複数のリソースの操作
- TYPE:指定したリソースタイプのリソースタイプ。リソースタイプは、大文字と小文字が区別され、あなたはまた、略語の単数または複数形を指定することができます
- 名前が省略された場合、名前は表示資源のすべての詳細、大文字と小文字が区別されます
- コマンドライン指定されたフラグはデフォルト値と任意の対応する環境変数を上書きします
フォーマット出力フォーマット出力
すべてのデフォルトのフォーマットkubectlコマンドの出力は、プレーンテキストで読み取り可能です。詳しくは、特定の形式で端末ウィンドウに出力されるため、サポートkubectl -o -outputフラグまたはコマンドに加えてもよいです。
文法
kubectl [command] [TYPE] [NAME] -o=<output_format>
これは、次の出力形式をサポートしています。
出力フォーマット | 説明 |
---|---|
-o =カスタム列=スペック | カスタムテーブルを印刷するには、列のカンマ区切りのリストを使用します |
-o =カスタム列ファイル名= | テンプレートファイル名印刷・テーブル・ファイルを使用してカスタム列 |
ああ= JSON | APIオブジェクト出力JSONフォーマット |
-o = jsonpathファイル=ファイル名 | ファイルに定義されてjsonpathファイル名フィールドの式で印刷 |
-o =名前 | リソース名のみ、印刷せずに他のコンテンツを印刷 |
-o =ワイド | プレーンテキスト出力の追加情報。ノード名を含むポッドについては、 |
O = YAML | APIオブジェクトの出力形式YAML |
-o = jsonpath =テンプレート | jsonpath式で定義された印刷フィールド |
ソートソート
ウィンドウの出力端子にオブジェクトリストを並べ替えるために、kubectlに添加することができる--sort-によってフラグsupportコマンド、任意の数または文字列は、対象物をソートする--sortバイフィールドフラグを使用して指定指定されたフィールド、使用jsonpath表現。
$ kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
#打印按名称排序的pod列表
$ kubectl get pods --sort-by=.metadata.name
kubectlコマンドは、詳細な
オプション:
--alsologtostderr[=false]: 同时输出日志到标准错误控制台和文件。
--api-version="": 和服务端交互使用的API版本。
--certificate-authority="": 用以进行认证授权的.cert文件路径。
--client-certificate="": TLS使用的客户端证书路径。
--client-key="": TLS使用的客户端密钥路径。
--cluster="": 指定使用的kubeconfig配置文件中的集群名。
--context="": 指定使用的kubeconfig配置文件中的环境名。
--insecure-skip-tls-verify[=false]: 如果为true,将不会检查服务器凭证的有效性,这会导致你的HTTPS链接变得不安全。
--kubeconfig="": 命令行请求使用的配置文件路径。
--log-backtrace-at=:0: 当日志长度超过定义的行数时,忽略堆栈信息。
--log-dir="": 如果不为空,将日志文件写入此目录。
--log-flush-frequency=5s: 刷新日志的最大时间间隔。
--logtostderr[=true]: 输出日志到标准错误控制台,不输出到文件。
--match-server-version[=false]: 要求服务端和客户端版本匹配。
--namespace="": 如果不为空,命令将使用此namespace。
--password="": API Server进行简单认证使用的密码。
-s, --server="": Kubernetes API Server的地址和端口号。
--stderrthreshold=2: 高于此级别的日志将被输出到错误控制台。
--token="": 认证到API Server使用的令牌。
--user="": 指定使用的kubeconfig配置文件中的用户名。
--username="": API Server进行简单认证使用的用户名。
--v=0: 指定输出日志的级别。
--vmodule=: 指定输出日志的模块,格式如下:pattern=N,使用逗号分隔。
kubectlラン
- ミラーリング1つ以上の容器を作成し、実行します。
- またはコンテナを管理するための展開ジョブを作成します。
構文:
$ run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
例:
# 启动nginx实例。
$ kubectl run nginx --image=nginx
# 启动hazelcast实例,暴露容器端口 5701。
$ kubectl run hazelcast --image=hazelcast --port=5701
# 启动hazelcast实例,在容器中设置环境变量“DNS_DOMAIN = cluster”和“POD_NAMESPACE = default”。
$ kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
# 启动nginx实例,设置副本数5。
$ kubectl run nginx --image=nginx --replicas=5
# 运行 Dry 打印相应的API对象而不创建它们。
$ kubectl run nginx --image=nginx --dry-run
kubectl注釈
更新1つ以上のリソース注釈情報。
- キー/値の成分による注釈。
- 注釈目的は、ツールやシステムがここでより多くの説明を補助データ、特にデータ伸張動作を記憶することです。
- --overwrite trueの場合、既存の注釈をカバーすることができ、それ以外の場合はエラーをカバー注釈を試みること。
- あなたは--resource・バージョンを設定した場合、更新はそれ以外の場合は、既存のリソースのバージョンを使用しますが、このリソースのバージョンを使用します。
- サポートリソースとしては、(小文字は区別されません)に限定されない:ポッド(PO)、サービス(SVC)、replicationcontrollers(RC)、ノード(なし)、イベント(EV)、componentstatuses(CS)、limitranges(限界)、persistentvolumesを(PV)、persistentvolumeclaims(PVC)、resourcequotas(クォータ)と秘密。
$ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
例:
# 更新pod “foo”,设置其注解description的值为my frontend。
# 如果同一个注解被赋值了多次,只保存最后一次设置的值。
$ kubectl annotate pods foo description='my frontend'
# 更新“pod.json”文件中type和name字段指定的pod的注解。
$ kubectl annotate -f pod.json description='my frontend'
# 更新pod “foo”,设置其注解description的值为my frontend running nginx,已有的值将被覆盖。
$ kubectl annotate --overwrite pods foo description='my frontend running nginx'
# 更新同一namespace下所有的pod。
$ kubectl annotate pods --all description='my frontend running nginx'
# 仅当pod “foo”当前版本为1时,更新其注解
$ kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
# 更新pod “foo”,删除其注解description。
# 不需要--override选项。
$ kubectl annotate pods foo description-
オプション:
--all[=false]: 选择namespace中所有指定类型的资源。
-f, --filename=[]: 用来指定待升级资源的文件名,目录名或者URL。
--overwrite[=false]: 如果设置为true,允许覆盖更新注解,否则拒绝更新已存在的注解。
--resource-version="": 如果不为空,仅当资源当前版本和指定版本相同时才能更新注解。仅当更新单个资源时有效。
残りのオプションは、親コマンドから継承されます!
kubectlオートスケール
ポッドkubernetesクラスタ(水平自動伸縮)におけるラン数の自動設定autoscaler使用。
展開、さらにreplicaSetまたはReplicationControllerを指定し、リトラクターを定義されているリソースを作成します。使用リトラクタは自動的にPODシステムの展開に応じて数が増加または減少させることができます。
$ autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
例:
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。
$ kubectl autoscale deployment foo --min=2 --max=10
# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%。
$ kubectl autoscale rc foo --max=5 --cpu-percent=80
適用kubectl
、ファイル名またはコンソール入力によるリソースの設定。
JSONとYAML記述ファイル形式を受け入れます。
$ kubectl apply -f FILENAME
例:
# 将pod.json中的配置应用到pod
$ kubectl apply -f ./pod.json
# 将控制台输入的JSON配置应用到Pod
$ cat pod.json | kubectl apply -f -
オプション:
-f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
-o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
--schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
--validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
添付kubectl
コンテナの実行中に既存のプロセスに接続されています。
$ kubectl attach POD -c CONTAINER
例:
# 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
$ kubectl attach 123456-7890
# 获取pod 123456-7890中ruby-container的输出
$ kubectl attach 123456-7890 -c ruby-container date
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl attach 123456-7890 -c ruby-container -i -t
オプション:
-c, --container="": 容器名。
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
kubectl設定
Configが「私のkubectlコンフィグ設定電流コンテキストなど、kubeconfigプロファイルを変更するために使用サブコマンド -context」。
次のルールにコンフィギュレーションファイルを読み込みます:
- --kubeconfigオプションが指定されている場合は、必ず指定のファイルがロードされます。このオプションは、一度だけ設定することができ、他のファイルと組み合わせることではないだろう。
- あなたは、環境変数$ KUBECONFIGを設定した場合、すべてのファイルのリストは、この環境変数を使用します(オペレーティングシステムのデフォルトのシーケンスを使用して)指定された、すべてのファイルがマージされます。値は、文書セットの修正値を変更する場合。値を作成する場合は、その値は、最初のファイルリストに作成されます。すべてのファイルのリストが存在しない場合は、リストの最後のファイルが作成されます。
- 最初の二つが設定されていない場合は、$ {HOME} /。KUBE /設定、およびその他のファイルマージされません。
kubectlコンフィグセットクラスタ
kubeconfigプロファイルのクラスタエントリに設定。既存の名前が指定されている場合は、新しいフィールドを組み込むと、古いフィールドを上書きします。
$ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certficate/authority] [--api-version=apiversion] [--insecure-skip-tls-verify=true]
例
# 仅设置e2e集群项中的server字段,不影响其他字段
$ kubectl config set-cluster e2e --server=https://1.2.3.4
# 向e2e集群项中添加认证鉴权数据
$ kubectl config set-cluster e2e --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
# 取消dev集群项中的证书检查
$ kubectl config set-cluster e2e --insecure-skip-tls-verify=true
オプション
--api-version="": 设置kuebconfig配置文件中集群选项中的api-version。
--certificate-authority="": 设置kuebconfig配置文件中集群选项中的certificate-authority路径。
--embed-certs=false: 设置kuebconfig配置文件中集群选项中的embed-certs开关。
--insecure-skip-tls-verify=false: 设置kuebconfig配置文件中集群选项中的insecure-skip-tls-verify开关。
--server="": 设置kuebconfig配置文件中集群选项中的server。
kubectlコンフィグセットコンテキストは
kubeconfigプロファイル内の環境エントリを設定します。既存の名前が指定されている場合は、新しいフィールドを組み込むと、古いフィールドを上書きします。
$ kubectl config set-context NAME [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]
例
# 设置gce环境项中的user字段,不影响其他字段。
$ kubectl config set-context gce --user=cluster-admin
オプション
--cluster="": 设置kuebconfig配置文件中环境选项中的集群。
--namespace="": 设置kuebconfig配置文件中环境选项中的命名空间。
--user="": 设置kuebconfig配置文件中环境选项中的用户。
kubectlコンフィグセットの資格情報は
、構成ファイル内のユーザー・エントリをkubeconfig提供します。既存の名前が指定されている場合は、新しいフィールドを組み込むと、古いフィールドを上書きします。
クライアント証明書セット:-client-証明書= certfileに-client-キー= keyfileの
提供秘密トークン:-token = bearer_token
ベースの認証の設定:-username = basic_user -password = basic_password
秘密トークンベースの認証と同時に使用することはできません。
$ kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password]
例
# 仅设置cluster-admin用户项下的client-key字段,不影响其他值
$ kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key
# 为cluster-admin用户项设置基础认证选项
$ kubectl config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif
# 为cluster-admin用户项开启证书验证并设置证书文件路径
$ kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true
オプション
--client-certificate="": 设置kuebconfig配置文件中用户选项中的证书文件路径。
--client-key="": 设置kuebconfig配置文件中用户选项中的证书密钥路径。
--embed-certs=false: 设置kuebconfig配置文件中用户选项中的embed-certs开关。
--password="": 设置kuebconfig配置文件中用户选项中的密码。
--token="": 设置kuebconfig配置文件中用户选项中的令牌。
--username="": 设置kuebconfig配置文件中用户选项中的用户名。
kubectl設定セットが
単一の構成ファイルkubeconfig値内に配置された
「PROPERTY_NAME使用」分離、各キーマップを含むことができない、属性名又はキーマップを表します。「」PROPERTY_VALUEを設定する新しい値。
$ kubectl config set PROPERTY_NAME PROPERTY_VALUE
kubectl設定未設定の
単一の値kubeconfigのプロファイルを削除します。PROPERTY_NAME使用。「」区切り、各属性名やキーマップを表し、キーマップを含めることはできません。「」
$ kubectl config unset PROPERTY_NAME
kubectlコンフィグ使用コンテキスト
現在の設定などの環境kubeconfig項目で使用します。
$ kubectl config use-context CONTEXT_NAME
kubectl設定ビュー
表示kubeconfigを組み合わせ、または指定されたプロファイルkubeconfigを提供しました。ユーザが指定した値の出力を選択する-output =テンプレート-template =テンプレートを使用することができます。
$ kubectl config view
例
# 显示合并后的kubeconfig设置
$ kubectl config view
# 获取e2e用户的密码
$ kubectl config view -o template --template='{{range .users}}{{ if eq .name "e2e" }}{{ index .user.password }}{{end}}{{end}}'
オプション
--flatten[=false]: 将读取的kubeconfig配置文件扁平输出为自包含的结构(对创建可迁移的kubeconfig配置文件有帮助)
--merge=true: 按照继承关系合并所有的kubeconfig配置文件。
--minify[=false]: 如果为true,不显示目前环境未使用到的任何信息。
--no-headers[=false]: 当使用默认输出格式时不打印标题栏。
-o, --output="": 输出格式,只能使用json|yaml|wide|name|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...中的一种。参见golang模板[http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板[http://releases.k8s.io/release-1.1/docs/user-guide/jsonpath.md]。
--output-version="": 输出资源使用的API版本(默认使用api-version)。
--raw[=false]: 显示未经格式化的字节信息。
-a, --show-all[=false]: 打印输出时,显示所有的资源(默认隐藏状态为terminated的pod)。
--sort-by="": 如果不为空,对输出的多个结果根据指定字段进行排序。该字段使用jsonpath表达式(如“ObjectMeta.Name”)描述,并且该字段只能为字符串或者整数类型。
--template="": 当指定了-o=go-template或-o=go-template-file时使用的模板字符串或者模板文件。模板的格式为golang模板[http://golang.org/pkg/text/template/#pkg-overview]。
作成kubectl
ファイル名またはコンソール入力することで、リソースを作成します。
JSONとYAML記述ファイル形式を受け入れます。
$ kubectl create -f FILENAME
例
# 使用pod.json文件创建一个pod
$ kubectl create -f ./pod.json
# 通过控制台输入的JSON创建一个pod
$ cat pod.json | kubectl create -f -
# 创建一个名为my-dep的deployment,运行busybox镜像。
$ kubectl create deployment my-dep --image=busybox
# 创建一个名为my-namespace的namespace
$ kubectl create namespace my-namespace
# 创建Service名为my-cs为的clusterIP
$ kubectl create service clusterip my-cs --tcp=5678:8080
# 创建Service名为my-ns的ExternalName
$ kubectl create service externalname my-ns --external-name bar.com
# 创建一个Service名为my-lbs的LoadBalancer。
$ kubectl create service loadbalancer my-lbs --tcp=5678:8080
# 创建service名为my-ns的新的nodeport。
$ kubectl create service nodeport my-ns --tcp=5678:8080
# 创建一个名为my-service-account的 service account
$ kubectl create serviceaccount my-service-account
オプション
-f, --filename=[]: 用以创建资源的文件名,目录名或者URL。
-o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
--schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
--validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
削除kubectl
ファイル名、コンソール入力、リソース名やラベルセレクタの削除リソースによって。JSONとYAML記述ファイル形式を受け入れます。
ファイル名、タイプ、およびリソース名、リソースタイプとラベルセレクタ:あなただけのパラメータの次のいずれかのタイプを指定することができます。注:削除操作を実行しながら、deleteコマンドは、もし誰かの更新操作をリソースのバージョンをチェックしません、彼が行っている更新プログラムは、リソースと一緒に削除されます。
$ kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])
例
# 通过pod.json文件中指定的资源类型和名称删除一个pod
$ kubectl delete -f ./pod.json
# 通过控制台输入的JSON所指定的资源类型和名称删除一个pod
$ cat pod.json | kubectl delete -f -
# 删除所有名为“baz”和“foo”的pod和service
$ kubectl delete pod,service baz foo
# 删除所有带有lable name=myLabel的pod和service
$ kubectl delete pods,services -l name=myLabel
# 删除UID为1234-56-7890-234234-456456的pod
$ kubectl delete pod 1234-56-7890-234234-456456
# 删除所有的pod
$ kubectl delete pods --all
オプション
--all[=false]: 使用[-all]选择所有指定的资源。
--cascade[=true]: 如果为true,级联删除指定资源所管理的其他资源(例如:被replication controller管理的所有pod)。默认为true。
-f, --filename=[]: 用以指定待删除资源的文件名,目录名或者URL。
--grace-period=-1: 安全删除资源前等待的秒数。如果为负值则忽略该选项。
--ignore-not-found[=false]: 当待删除资源未找到时,也认为删除成功。如果设置了--all选项,则默认为true。
-o, --output="": 输出格式,使用“-o name”来输出简短格式(资源类型/资源名)。
-l, --selector="": 用于过滤资源的Label。
--timeout=0: 删除资源的超时设置,0表示根据待删除资源的大小由系统决定。
説明kubectl
1 /出力リソースの詳細については、指定されました。
説明APIの詳細なコマンドのこの組み合わせは、出力は一連のリソースまたは複数の呼を指定します。
$ kubectl describe TYPE NAME_PREFIX
完全一致TYPEリソースとNAME_PREFIXがある場合ない場合は、より多くの情報資源がNAME_PREFIXで始まるすべての名前が出力されます最初のチェック。
サポートリソースとしては、(小文字は区別されません)に限定されない:ポッド(PO)、サービス(SVC)、replicationcontrollers(RC)、ノード(なし)、イベント(EV)、componentstatuses(CS)、limitranges(限界)、persistentvolumesを(PV)、persistentvolumeclaims(PVC)、resourcequotas(クォータ)と秘密。
$ kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
例
# 描述一个node
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
# 描述一个pod
$ kubectl describe pods/nginx
# 描述pod.json中的资源类型和名称指定的pod
$ kubectl describe -f pod.json
# 描述所有的pod
$ kubectl describe pods
# 描述所有包含label name=myLabel的pod
$ kubectl describe po -l name=myLabel
# 描述所有被replication controller “frontend”管理的pod(rc创建的pod都以rc的名字作为前缀)
$ kubectl describe pods frontend
オプション
-f, --filename=[]: 用来指定待描述资源的文件名,目录名或者URL。
-l, --selector="": 用于过滤资源的Label。
kubectl編集
デフォルトのリソースエディタサーバエディタを使用してください。
編集コマンドを使用すると、直接リソースを取得するために、任意のコマンドラインツールを使用して編集することができます。このコマンドは、KUBE_EDITOR、GIT_EDITORまたはEDITOR環境変数で定義された、または直接「VI」を使用してエディタを開きます。あなたは、複数のソースを編集することができますが、すべての変更は、一度しか提出されます。コマンドラインパラメータに加えて、このコマンドは、ファイル名を受け入れますが、ストレート指定されたファイルは、リソースの現在のバージョンよりも前である必要があります。
編集したファイルは、API出力のデフォルトのバージョンを使用する、または明示的に-output-versionオプションで指定します。あなたは、JSON形式の編集を使用-o JSONオプションを使用する必要がある場合は、デフォルトの出力形式は、YAMLです。
更新されたリソースは、エラーが発生した場合と、それは失敗したアップデートを記録し、ディスク上の一時ファイルを作成します。他の人のリソースを更新する際に最も一般的なエラーは、サーバーのリソースを更新します。これが起こるとき、あなたは、最新のリソースのバージョン、または編集リソースの最新バージョンを使用して保存された一時ファイルに加えられた変更を適用する必要があります。
kubectl edit (RESOURCE/NAME | -f FILENAME)
例
# 编辑名为“docker-registry”的service
$ kubectl edit svc/docker-registry
# 使用一个不同的编辑器
$ KUBE_EDITOR="nano" kubectl edit svc/docker-registry
# 编辑名为“docker-registry”的service,使用JSON格式、v1 API版本
$ kubectl edit svc/docker-registry --output-version=v1 -o json
オプション
-f, --filename=[]: 用来指定待编辑资源的文件名,目录名或者URL。
-o, --output="yaml": 输出格式,可选yaml或者json中的一种。
--output-version="": 输出资源使用的API版本(默认使用api-version)。
kubectlのexec
コンテナ内で実行します。
$ kubectl exec POD [-c CONTAINER] -- COMMAND
[args...]
例
# 默认在pod 123456-7890的第一个容器中运行“date”并获取输出
$ kubectl exec 123456-7890 date
# 在pod 123456-7890的容器ruby-container中运行“date”并获取输出
$ kubectl exec 123456-7890 -c ruby-container date
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il
オプション
-c, --container="": 容器名。如果未指定,使用pod中的一个容器。
-p, --pod="": Pod名。
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
kubectl GET
リストの1つまたは複数のリソース情報を取得します。
$ get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]
例
# 列出所有运行的Pod信息。
$ kubectl get pods
# 列出Pod以及运行Pod节点信息。
$ kubectl get pods -o wide
# 列出指定NAME的 replication controller信息。
$ kubectl get replicationcontroller web
# 以JSON格式输出一个pod信息。
$ kubectl get -o json pod web-pod-13je7
# 以“pod.yaml”配置文件中指定资源对象和名称输出JSON格式的Pod信息。
$ kubectl get -f pod.yaml -o json
# 返回指定pod的相位值。
$ kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
# 列出所有replication controllers和service信息。
$ kubectl get rc,services
# 按其资源和名称列出相应信息。
$ kubectl get rc/web service/frontend pods/web-pod-13je7
# 列出所有不同的资源对象。
$ kubectl get all
kubectlラベル
リソースの更新(追加、変更、または削除)ラベル(ラベル)。
- ラベルには、あなたは63文字まで、文字、数字、ハイフン、およびアンダースコアを使用することができ、文字または数字で始まる必要があります。
- --overwriteがtrueの場合は、既存のラベルを上書きすることができ、それ以外の場合は、ラベルのエラーをカバーしようとします。
- --resourceバージョンが指定されている場合は、更新されたバージョンは、それ以外の場合は、既存のリソースのバージョンを使用しますが、このリソースを使用します。
$ label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
例
给名为foo的Pod添加label unhealthy=true。
kubectl label pods foo unhealthy=true
给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value。
kubectl label --overwrite pods foo status=unhealthy
给 namespace 中的所有 pod 添加 label
kubectl label pods --all status=unhealthy
仅当resource-version=1时才更新 名为foo的Pod上的label。
kubectl label pods foo status=unhealthy --resource-version=1
删除名为“bar”的label 。(使用“ - ”减号相连)
kubectl label pods foo bar-
kubectlログ
ログ出力ポッドコンテナ。コンテナが含まれている場合のみ1ポッドは、コンテナ名を省略することができます。
$ kubectl logs [-f] [-p] POD [-c CONTAINER]
例
# 返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
# 返回pod ruby中已经停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1
# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1
# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx
# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx
オプション
-c, --container="": 容器名。
-f, --follow[=false]: 指定是否持续输出日志。
--interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
--limit-bytes=0: 输出日志的最大字节数。默认无限制。
-p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
--since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
--tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
--timestamps[=false]: 在日志中包含时间戳。
置き換えkubectl
リソース使用量プロファイルまたは標準入力を交換します。
JSONとYAML形式のサポート。
$ replace -f FILENAME
例
# 使用pod.json中的数据替换pod。
$ kubectl replace -f ./pod.json
# 根据传入的JSON替换pod。
$ cat pod.json | kubectl replace -f -
# 更新镜像版本(tag)到v4
$ kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
# 强制替换,删除原有资源,然后重新创建资源
$kubectl replace --force -f ./pod.json
kubectlスケール
伸縮の展開、さらにreplicaSet、レプリケーションコントローラーポッドまたはジョブ番号を収容。
延伸倍率が設定される前に、システムは最初の前提条件が成立するかどうかを検証する実行コピーまたは--resourceバージョンの現在の数、:スケールはまた、などの複数の前提条件を指定することができます。
$ scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
例
# 将名为foo中的pod副本数设置为3。
$ kubectl scale --replicas=3 rs/foo
# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3。
$ kubectl scale --replicas=3 -f foo.yaml
# 如果当前副本数为2,则将其扩展至3。
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 设置多个RC中Pod副本数量。
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz