标记和注释对象
标签和注解是对象的标签。我们将在第 6章中讨论差异,但现在,您可以使用
annotate 和 label 命令更新任何 Kubernetes 对象上的标签和注释。例如,要将
color=red 标签添加到名为 bar 的 Pod 中,您可以运行:
$ kubectl label pods bar color=red
注释的语法是相同的。
默认情况下,label 和 annotate 不会让您覆盖现有标签。为此,您需要添加 ‑‑
overwrite 标志
如果要删除标签,可以使用 <label‑name> ‑句法:
$ kubectl label pods bar color
这将从 Pod 命名栏中删除颜色标签。
调试命令
kubectl 还提供了许多可用于调试容器的命令。您可以使用以下命令查看运行日志容器:
$ kubectl logs <pod-name>
如果您的 Pod 中有多个容器,您可以使用 ‑c 标志选择要查看的容器。
默认情况下,kubectl logs 会列出当前日志并退出。如果你相反,想要在不退出的情况下连续将日志流式传输回终端,您可以添加 ‑f(跟随)命令行标志。您还可以使用 exec 命令来执行命令运行容器:
$ kubectl exec -it <pod-name> — bash
这将为您在运行的容器内提供一个交互式 shell,以便您可以执行更多调试。如果您的容器中没有 bash 或其他可用的终端,您始终可以附加到正在运行的进程:
$ kubectl attach -it <pod-name>
这将附加到正在运行的进程。它类似于 kubectl 日志,但允许您将输入发送到正在运
行的进程,假设该进程设置为从标准输入读取。您还可以使用 cp 将文件复制到容器中或从容器中复制文件命令:
$ kubectl cp <pod-name>:</path/to/remote/file></path/to/local/file>
这会将文件从正在运行的容器复制到本地计算机。您还可以指定目录,或反转语法以将文件从本地计算机复制回容器中。如果你想通过网络访问你的 Pod,你可以使用 port‑forward 命令将网络流量从本地机器转发到 Pod。这使您能够安全地将网络流量传输到可能不会暴露在公共网络上任何地方的容器。例如,以下命令:
$ kubectl port-forward <pod-name> 8080:80
打开一个连接,将流量从本地机器的 8080 端口转发到远程容器的 80 端口。
您还可以通过指定services/<service‑name>而不是<pod‑name> 来对服务使用
port‑forward 命令,但请注意,如果您对服务进行端口转发,则请求只会转发到该服务中的单个Pod。他们不会通过服务负载平衡器。
最后,如果你对你的集群如何使用资源感兴趣,你可以使用 top 命令查看正在使用的资源列表节点或 Pod
这个命令:kubectl top nodes