Kubernetes 实践指南之Kubernetes 的命令行工具详解

JAVA编程交流群:574337670 目录 kubectl语法运行如下命令: 常见的输出格式如下: 创建资源对象 查看资源对象 描述资源对象 删除资源对象 执行容器的命令 查看容器的日志 正文 回到顶部 kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理。本节内容将对kubectl的子命令和用法进行详细描述。 一、kubectl 用法概述 回到顶部 kubectl语法运行如下命令: kubectl [command] [TYPE] [NAME] [FLAGS] 其中command、TYPE、NAME、FLAGS的含义如下: command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。 TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。 例如以下三种TYPE是等价的。 kubectl get pod pod1 kubectl get pods pod1 kubectl get po pod1 NAME:指定Resource的Name。Name区分大小写,如果省略Name,则显示所有资源的详细信息,例如: kubectl get pods FLAGS:kubectl 子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。 kubectl可操作的资源对象类型如下表: 在一个命令行也可可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下: 获取多个Pod 的信息 kubectl get pods pod1 pod2 pod2 获取多种对象的信息 kubectl get pod/pod1 rc/rc1 同时应用多个yaml文件,以多个-f file 参数表示 kubectl get pod -f pod1.yaml -f pod2.yaml kubectl create -f pod1.yaml -f rc1.yaml -f servicel.yaml 二、kubectl 子命令详解 Kubernetes子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、查看、修改、配置、删除、运行等。详细的子命令如下列表所示。 Operation Syntax Description annotate kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 为一个或多个资源添加注释 api-versions kubectl api-versions [flags] 列出支持的API版本。 apply kubectl apply -f FILENAME [flags] 对文件或stdin的资源进行配置更改。 attach kubectl attach POD -c CONTAINER [-i] [-t] [flags] 连接到一个运行的容器,既可以查看output stream,也可以与容器(stdin)进行交互。 autoscale kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] 自动扩容/缩容由replication controller管理的一组pod。 cluster-info kubectl cluster-info [flags] 显示有关集群中master和services的终端信息。 config kubectl config SUBCOMMAND [flags] 修改kubeconfig文件。有关详细信息,请参阅各个子命令。 create kubectl create -f FILENAME [flags] 从file或stdin创建一个或多个资源。 delete kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] 从file,stdin或指定label 选择器,names,resource选择器或resources中删除resources。 describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] 显示一个或多个resources的详细状态。 edit kubectl edit (-f FILENAME | TYPE NAME | 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,services等 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] 将 replication controller,service或pod作为一个新的Kubernetes service显示。 get kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] 列出一个或多个资源。 label kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 添加或更新一个或多个资源的flags。 logs kubectl logs POD [-c CONTAINER] [--follow] [flags] 在pod中打印容器的日志。 patch kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] 使用strategic merge 补丁程序更新资源的一个或多个字段。 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服务器运行代理。 replace kubectl replace -f FILENAME 从file或stdin替换资源。 rolling-update kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags] 通过逐步替换指定的replication controller及其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 | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] 更新指定replication controller的大小。 stop kubectl stop 已弃用:请参阅kubectl delete。 uncordon kubectl uncordon NODE [flags] 将NODE设置为schedulable version kubectl version [--client] [flags] 显示客户端和服务器上运行的Kubernetes版本。 表一 kubectl子命令详解 上表几乎包含kubectl对集群操作的所有子命令,当然还有一些新的命令没有更新上去,如convert、taint、set等。 三、kubectl 输出格式 kubectl 命令可以以多种格式对结果进行显示,输出的格式通过-o参数指定: kubectl [command] [TYPE] [NAME] -o= 根据不同的命令的输出结果,可选的输出格式如表所示: 输出格式 描述 -o=custom-columns= 使用逗号分隔的custom columns列表打印一个表。 -o=custom-columns-file= 使用文件中的custom columns模板打印表。 -o=json 输出JSON格式的API对象。 -o=jsonpath=