kubectl describe
输出指定的一个/多个资源的详细信息。
此命令组合调用多条API,输出指定的一个或者一组资源的详细描述。
kubectl describe TYPE NAME_PREFIX
首先检查是否有精确匹配 TYPE 和 NAME_PREFIX
的资源,如果没有,将会输出所有名称以 NAME_PREFIX
开头的资源详细信息。
支持的资源包括但不限于(大小写不限):pods(po)、services(svc)、replicationcontrollers(rc)、nodes(no)、events(ev)、componentstatuses(cs)、limitranges(limits)、persistentvolumes(pv)、persistentvolumeclaims(pvc)、resourcequotas(quota) 和 secrets。
官方地址
语法
1
| kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal
kubectl describe pods/nginx
kubectl describe -f pod.json
$ kubectl describe pods
$ kubectl describe po -l name=myLabel
kubectl describe pods frontend
|
选项
-f, --filename=[]
: 用来指定待描述资源的文件名,目录名或者URL。
-l, --selector=""
: 用于过滤资源的Label。
继承自父命令的选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| --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 logs
输出pod中一个容器的日志。如果pod只包含一个容器则可以省略容器名。
官方文档
语法格式
1
| kubectl logs [-f] [-p] POD [-c CONTAINER]
|
选项
1 2 3 4 5 6 7 8 9
| -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]: 在日志中包含时间戳。
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 返回仅包含一个容器的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
|
kubectl attach
连接到一个正在运行的容器。
官方文档
语法
kubectl attach POD -c CONTAINER
参数选项
-c, --container=""
: 容器名。如果省略,则默认选择第一个 pod。
-i, --stdin[=false]
: 将控制台输入发送到容器。
-t, --tty[=false]
: 将标准输入控制台作为容器的控制台输入。
1 2 3 4 5 6 7 8 9
| # 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器 kubectl attach 123456-7890
# 获取pod 123456-7890中ruby-container的输出 kubectl attach 123456-7890 -c ruby-container
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/ # 错误控制台的信息发送回客户端。 kubectl attach 123456-7890 -c ruby-container -i -t
|
kubectl exec
在容器内部执行命令。
官方文档
语法格式
1
| kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
|
选项
-c, --container=""
: 容器名。如果未指定,使用pod中的一个容器。
-p, --pod=""
: Pod名。
-i, --stdin[=false]
: 将控制台输入发送到容器。
-t, --tty[=false]
: 将标准输入控制台作为容器的控制台输入。
举例
1 2 3 4 5 6 7 8 9
| # 默认在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
|
kubectl port-forward
ubectl proxy
kubectl cp
用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换。
官方文档
语法
1
| kubectl cp <file-spec-src> <file-spec-dest> [options]
|
示例
1 2 3 4 5 6 7 8 9 10
| # 拷贝宿主机本地文件夹到pod kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
# 指定namespace的拷贝pod文件到宿主机本地目录 kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
# 对于多容器pod,用-c指定容器名 kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
|
kubectl auth