-
Notifications
You must be signed in to change notification settings - Fork 2
kubectl CLI — Kubernetes
VodkaSoul edited this page Nov 25, 2019
·
1 revision
kubectl 命令行的语法如下:
$ kubectl [command] [TYPE] [NAME] [flags]
其中,command,TYPE、NAME、flags的含义如下:
-
command:子命令,用于操作 Kubernetes 集群资源对象的命令,例如 create、delete、describe、get、apply等;
-
TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。一下三种TYPE等价:
$ kuebctl get pod pod1 $ kubectl get pods pod1 $ kubectl get po pod1
-
NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于 TYPE 的全部对象的列表,例如 $ kubectl get pods 将返回所有 Pod 的列表;
-
flags:kubectl 子命令 的可选参数,例如使用”-s“指定 apiserver 的 URL 地址而不用默认值。
kubectl 可操作的资源对象类型如下:
资源对象的名称 | 缩写 |
---|---|
componentstatuses | cs |
daemonsets | ds |
deployments | |
enviroment | ev |
endpoints | ep |
horizontalpodautoscalers | hpa |
ingress | ing |
jobs | |
limitranges | limits |
nodes | no |
namespaces | ns |
pods | po |
persistencevolumes | pv |
persistencevolumeclaims | pvc |
resourcequotas | quota |
replicationcontrollers | rc |
secrets | |
serviceaccounts | |
services | svc |
kuenctl 的子命令涵盖了对 Kubernetes 集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等,详细子命令如下:
子命令 | 语法 | 说明 |
---|---|---|
annotate | kubectl annotate [--overwrite] (-FILENAME | TYPE NAME) KEY_1=VAL_1...KEY_N=VAL_N [--resource-version=version] [flags] | 添加或更新资源对象的 annotation 信息 |
api-versions | kubectl versions [flags] | 列出当前系统支持的 API 版本列表 |
apply | kubectl apply -f CONTAINER [flags] | 从配置文件或 stdin 中对资源对象进行配置更新 |
attach | kubectl attach POD -c CONTAINER [flags] | 附着到一个正在运行的容器上 |
cluster-info | kubectl cluster-info [flags] or kubectl cluster-info [command] | 显示集群信息 |
config | kubectl config [command] [flags] | 修改 kubeconfig 文件 |
cordon | kubectl cordon NODE [flags] | 将 Node 标记为 unschedulable,即隔离出集群调度范围 |
create | kubectl create -f FILENAME [flags] or kubectl create [command] | 从配置文件或 stdin 中创建资源对象 |
delete | kubectl delete ([-f FILENAME | TYPE | (NAME | -l label | --all)]) [flags] | 根据配置文件、stdin、资源名称或label selector 删除资源对象 |
describe | kubectl delete ([-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | 描述一个或多个资源对象的详细信息 |
edit | kubectl edit (RESOURCE/NAME | -f FILENAME) [flags] | 编辑资源对象的属性,在线更新 |
exec | kubectl exec POD [-c CONTAINER] --COMMAND [args...][flags] | 执行一个容器中的命令 |
explain | kubectl explain RESOURCE [flags] | 对资源对象属性的详细说明 |
expose | kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UP] [--target-port=number-or-name] [--name=name] [external-ip=external-ip-of-service] [--type=type] [flags] | 将已经存在的一个 RC、Service、Deployment 或 Pod 暴露为一个新的 Service |
get | kubectl get [(-o|--output=)json|yaml|wide|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags] | 显示一个或多个资源对象的概要信息 |
label | kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1...KEY_N=VAL_N [--resource-version=version] [flags] | 设置或更新资源对象的label |
logs | kubectl logs [-f] [-p] POD [-c CONTAINER] [flags] | 屏幕打印一个容器的日志 |
proxy | kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] | 将本机的某个端口映射到 apiserver |
run | kubectl run NAME --image=image [--env="key=value"] [--port=port] | 基于一个镜在 Kubernetes 集群上启动一个 Deployment |
scale | kubectl scale [--resorce-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) [flags] | 扩容、缩容一个 Deployment、ReplicaSet、RC 或 Job 中的 Pod 的数量 |
set | kubectl set SUBCOMMAND [flags] or kubectl set [command] | 设置资源的某个特定信息,支持修改容器镜像 |
uncordan | kubectl uncordon NODE [flags] | 将 Node 设置为 scedule |
version | kubectl version [flags] | 打印系统的版本信息 |
kubectl 命令行的公共启动参数如下图所示:
参数名和取值示例 | 说明 |
---|---|
--alsologtostderr[=false] | 设置为 true 表示将日志文件输出到文件的同时输出到 stderr |
--as="" | 设置本次操作的用户名 |
--certificate-authority="" | 用于 CA 授权的 cat 文件路径 |
--client-certificate="" | 用于 TLS 的客户端证书文件路径 |
--client-key="" | 用于 TLS 的客户端 key 文件路径 |
--cluster="" | 设置要使用的 kubeconfig 中的 cluster 名 |
--context="" | 设置要使用的 kubeconfig 中的 context 名 |
--insecure-skip-tls-verify[=flase] | 设置为 true 表示跳过 TLS 安全验证模式,将使得 HTTPS 链接不安全 |
--kubeconfig="" | kubeconfig 配置文件路径,配置文件包括 Master 地址信息及必要认证信息 |
--log-backtrace-at=:0 | 记录日志每到 ”file:行号“ 时打印一次 stack trace |
--log-dir="" | 日志文件路径 |
--log-flush-frequency=5s | 设置 flush 日志文件的时间间隔 |
--logtostderr[=true] | 设置为 true 表示将日志输出到 stderr,不输出到日志文件 |
--match=server=version[=false] | 设置为 true 表示客户端版本需要与服务端一致 |
--namespace="" | 设置本次操作所在的 namespace |
--password="" | 设置 apiserver 的 basic authentication 的密码 |
-s, --server="" | 设置 apiserver 的 URL 地址,默认为 localhost:8080 |
--stderrthreshold=2 | 在该 threshold 级别之上的日志输出到 stderr |
--token="" | 设置访问 apiserver 的安全 token |
--user="" | 指定 kubeconfig 用户名 |
--username="" | 设置 apiserver 的basic authentication 的用户名 |
--v=0 | glog 日志级别 |
--vmodule= | glog 基于模块的详细日志级别 |
kubectl 命令可以用多种格式对结果进行显示,输出的格式通过 -o 参数指定:
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
根据不同子命令的输出结果,可选的输出格式如下:
输出格式 | 说明 |
---|---|
-o=custom-columns=<spec> | 根据自定义列名进行输出,以逗号分隔 |
-o=custom-columns-file=<flilename> | 从文件中获取自定义列名进行输出 |
-o=json | 以 JSON 格式显示结果 |
-o=jsonpath=<template> | 输出 jsonpath 表达式定义的字段信息 |
-o=jsonpath-file=<filename> | 输出 jsonpath 表达式定义的字段信息,来源于文件 |
-o=name | 仅输出资源对象的名称 |
-o=wide | 输出额外信息,对于Pod,将输出 Pod 所造的 Node 名 |
-o=yaml | 以 yaml 格式显示结果 |
Software Engineering, Fall 2019 & Software Test, Spring 2020.
It is a collaborative and interdisciplinary project drawing on expertise from School of Software Engineering & College of Civil Engineering, Tongji University.