容器编排技术 -- Kubernetes kubectl 概述

容器编排技术 -- Kubernetes kubectl 概述

 

kubectl用于运行Kubernetes集群命令的管理工具。本文概述涵盖了kubectl语法,对命令操作的描述,并列举的常见例子。有关每个命令的详细信息,包括支持的所有flags和子命令,请查阅kubectl命令参考文档。有关安装说明,请参阅安装kubectl

语法

在管理工具界面使用kubectl语法运行如下命令:

kubectl [command] [TYPE] [NAME] [flags]

其中command,TYPE,NAME,和flags都是:* command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。* TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。例如,以下命令将输出相同的结果:

shell $ kubectl get pod pod1 $ kubectl get pods pod1 $ kubectl get po pod1 * NAME:指定Resource的Name。Name区分大小写,如果省略Name,则显示所有资源的详细信息,例如:$ kubectl get pods。

当在多个资源上执行操作时,可以通过type和name 指定每个资源,或者指定一个或多个file:通过type和name指定的资源:如果它们都是相同的type,就可以对资源进行分组TYPE1 name1 name2 name<#>

  • 例:$ kubectl get pod example-pod1 example-pod2 *单独指定多种资源type:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
  • 例:$ kubectl get pod/example-pod1 replicationcontroller/example-rc1 *使用一个或多个file来指定资源:-f file1 -f file2 -f file<#> 使用YAML而不是JSON,因为YAML往往更容易掌握也对用户更友好,特别是对于配置文件。
  • 例:$ kubectl get pod -f ./pod.yaml * flags:指定可选flags。例如,你可以使用-s或--server flag来指定Kubernetes API Server的地址和端口。

提示:命令行指定的flags将覆盖默认值和任何相应的环境变量。

如果需要更多相关帮助,只需从终端命令窗口运行 kubectl help

Operations

下表包括了所有kubectl操作简短描述和通用语法:

OperationSyntaxDescription
annotatekubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]为一个或多个资源添加注释
api-versionskubectl api-versions [flags]列出支持的API版本。
applykubectl apply -f FILENAME [flags]对文件或stdin的资源进行配置更改。
attachkubectl attach POD -c CONTAINER [-i] [-t] [flags]连接到一个运行的容器,既可以查看output stream,也可以与容器(stdin)进行交互。
autoscalekubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]自动扩容/缩容由replication controller管理的一组pod。
cluster-infokubectl cluster-info [flags]显示有关集群中master和services的终端信息。
configkubectl config SUBCOMMAND [flags]修改kubeconfig文件。有关详细信息,请参阅各个子命令。
createkubectl create -f FILENAME [flags]从file或stdin创建一个或多个资源。
deletekubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]从file,stdin或指定label 选择器,names,resource选择器或resources中删除resources。
describekubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]显示一个或多个resources的详细状态。
editkubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]使用默认编辑器编辑和更新服务器上一个或多个定义的资源。
execkubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]对pod中的容器执行命令。
explainkubectl explain [--include-extended-apis=true] [--recursive=false] [flags]获取各种资源的文档。例如pod,node,services等
exposekubectl 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]将 replication controller,service或pod作为一个新的Kubernetes service显示。
getkubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]列出一个或多个资源。
labelkubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]添加或更新一个或多个资源的flags。
logskubectl logs POD [-c CONTAINER] [--follow] [flags]在pod中打印容器的日志。
patchkubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]使用strategic merge 补丁程序更新资源的一个或多个字段。
port-forwardkubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]将一个或多个本地端口转发到pod。
proxykubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]在Kubernetes API服务器运行代理。
replacekubectl replace -f FILENAME从file或stdin替换资源。
rolling-updatekubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]通过逐步替换指定的replication controller及其pod来执行滚动更新。
runkubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]在集群上运行指定的镜像。
scalekubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]更新指定replication controller的大小。
stopkubectl stop已弃用:请参阅kubectl delete
versionkubectl version [--client] [flags]显示客户端和服务器上运行的Kubernetes版本。

提示:有关更多命令信息,请参阅kubectl参考文档。

Resource types

下表列出了所有支持的资源类型及其缩写:

Resource typeAbbreviated alias
apiservices 
certificatesigningrequestscsr
clusters 
clusterrolebindings 
clusterroles 
componentstatusescs
configmapscm
controllerrevisions 
cronjobs 
customresourcedefinitioncrd
daemonsetsds
deploymentsdeploy
endpointsep
eventsev
horizontalpodautoscalershpa
ingressesing
jobs 
limitrangeslimits
namespacesns
networkpoliciesnetpol
nodesno
persistentvolumeclaimspvc
persistentvolumespv
poddisruptionbudgetpdb
podpreset 
podspo
podsecuritypoliciespsp
podtemplates 
replicasetsrs
replicationcontrollersrc
resourcequotasquota
rolebindings 
roles 
secrets 
serviceaccountssa
servicessvc
statefulsets 
storageclasses 

输出选项 Output options

使用以下部分来了解如何格式化或对某些命令的输出进行排序。关于哪些命令支持什么输出选项,请查阅kubectl参考文档。

格式化输出 Formatting output

所有kubectl命令输出的默认格式是可读的纯文本格式。要以特定的格式向终端窗口输出详细信息,可以将-o或-output flags 添加到支持的kubectl命令中。

语法:

kubectl [command] [TYPE] [NAME] -o=<output_format>

根据kubectl操作,支持以下输出格式:

输出格式描述
-o=custom-columns=<spec>使用逗号分隔的custom columns列表打印一个表。
-o=custom-columns-file=<filename>使用文件中的custom columns模板打印表<filename>。
-o=json输出JSON格式的API对象。
-o=jsonpath=<template>打印在jsonpath表达式中定义的字段。
-o=jsonpath-file=<filename>打印由 file中的jsonpath表达式定义的字段<filename>。
-o=name仅打印资源名称,而不打印其他内容。
-o=wide以纯文本格式输出任何附加信息。对于pod,包括node名称。
-o=yaml输出YAML格式的API对象。

例如:

在此示例中,以下命令将单个pod的详细信息作为YAML格式化对象输出:

$ kubectl get pod web-pod-13je7 -o=yaml

注意:有关每个命令支持哪种输出格式的详细信息,请参阅kubectl参考文档。

Custom columns

要定义custom columns并仅将所需的详细信息输出,可以使用该custom-columns选项,选择Inline定义custom columns或使用模板文件定义:-o=custom-columns=<spec>或-o=custom-columns-file=<filename>。

例如

Inline方式:

$ kubectl get pods <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

模板文件方式:

$ kubectl get pods <pod-name> -o=custom-columns-file=template.txt

其中,template.txt文件包含:

NAME                    RSRC

      metadata.name           metadata.resourceVersion

任何一个命令运行的结果将是:

NAME           RSRC

submit-queue   610995

Sorting list objects

要将对象输出到终端窗口中的排序列表,可以将--sort-by标志添加到kubectl支持的命令中,通过使用--sort-by标志指定任何数字或字符串字段来对对象进行排序,要指定字段,请使用jsonpath表达式。

命令:

kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>

例如

要打印按名称排序的pod列表,请运行:

$ kubectl get pods --sort-by=.metadata.name

示例:常用操作

使用以下一组示例来帮助你熟悉运行kubectl常用操作:

kubectl create - 从file或stdin中创建资源。

// Create a service using the definition in example-service.yaml.
$ kubectl create -f example-service.yaml

// Create a replication controller using the definition in example-controller.yaml.
$ kubectl create -f example-controller.yaml

// Create the objects that are defined in any .yaml, .yml, or .json file within the <directory> directory.
$ kubectl create -f <directory>

kubectl get 列出一个或多个资源。

// List all pods in plain-text output format.
$ kubectl get pods

// List all pods in plain-text output format and includes additional information (such as node name).
$ kubectl get pods -o wide

// List the replication controller with the specified name in plain-text output format. Tip: You can shorten and replace the 'replicationcontroller' resource type with the alias 'rc'.
$ kubectl get replicationcontroller <rc-name>

// List all replication controllers and services together in plain-text output format.
$ kubectl get rc,services

kubectl describe - 显示一个或多个资源的详细状态。

// Display the details of the node with name <node-name>.
$ kubectl describe nodes <node-name>

// Display the details of the pod with name <pod-name>.
$ kubectl describe pods/<pod-name>

// Display the details of all the pods that are managed by the replication controller named <rc-name>.
// Remember: Any pods that are created by the replication controller get prefixed with the name of the replication controller.
$ kubectl describe pods <rc-name>

kubectl delete - 从file、stdin或指定label选择器,names,resource选择器或resources中删除resources资源。

// Delete a pod using the type and name specified in the pod.yaml file.
$ kubectl delete -f pod.yaml

// Delete all the pods and services that have the label name=<label-name>.
$ kubectl delete pods,services -l name=<label-name>

// Delete all pods.
$ kubectl delete pods --all

kubectl exec - 对pod中的容器执行命令。

// Get output from running 'date' from pod <pod-name>. By default, output is from the first container.
$ kubectl exec <pod-name> date

// Get output from running 'date' in container <container-name> of pod <pod-name>.
$ kubectl exec <pod-name> -c <container-name> date

// Get an interactive TTY and run /bin/bash from pod <pod-name>. By default, output is from the first container.
$ kubectl exec -ti <pod-name> /bin/bash

kubectl logs - 打印pod中的容器的日志。

// Return a snapshot of the logs from pod <pod-name>.
$ kubectl logs <pod-name>

// Start streaming the logs from pod <pod-name>. This is similar to the 'tail -f' Linux command.
$ kubectl logs -f <pod-name>

下一步

开始了解kubectl命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值