在 Kubernetes 中进行调试
PhpStorm 支持以下 Kubernetes 调试流程:使用临时容器对 Pod 进行即时故障排除以及使用 Telepresence 进行远程调试,因此您无需离开您的 IDE 即可诊断各种问题。
临时容器
PhpStorm 支持将 临时容器 附加到正在运行的 Pod,而无需重启。 这样,您可以检查实时的 Kubernetes 环境,运行诊断命令,并在正在运行的 Pod 内直接调查问题。
临时容器会为调试目的临时添加到现有 Pod 中,并与您的应用容器并行运行。 为此,PhpStorm 会在幕后运行 kubectl debug 命令。 您可以附加自定义调试容器,或使用轻量级的 BusyBox 镜像,其开箱即用地提供 ping、 netstat、 wget 和 top 等常用工具。
有关调试正在运行的 Pod 的更多详情,请参阅 Kubernetes 文档。
将 BusyBox 附加到正在运行的 Pod
打开 服務工具窗口:选择 或按 Alt+8。
展开列出正在运行的 Pod 的节点,右键单击要调试的 Pod,然后在上下文菜单中选择 。
或者,选择所需的 Pod,单击工具栏上的
,并在下拉列表中选择 附加Busybox。
将自定义容器附加到正在运行的 Pod
打开 服務工具窗口:选择 或按 Alt+8。
展开列出正在运行的 Pod 的节点,右键单击要调试的 Pod,然后在上下文菜单中选择 。
或者,选择所需的 Pod,单击工具栏上的
,并在下拉列表中选择 自定义附加。在 附加自定义调试容器 对话框中,使用以下字段自定义用于启动并附加临时容器的
kubectl debug命令:Pod :从下拉列表中选择您要调试的 Pod。
目标 :指定所选 Pod 内的目标容器。
镜像 :开始键入用于调试的镜像名称,然后从建议列表中选择它。
可执行文件 :指定在临时容器启动后在其中运行的 Shell 的绝对路径(例如,BusyBox 使用
/bin/sh,或 Ubuntu 使用/bin/bash)。选项 :为调试容器提供其他配置参数。 示例请参阅 Kubernetes 文档。

点击 附加到Pod。
当 PhpStorm 启动新的临时容器并成功将其附加到 Pod 时,会打开 Console 选项卡,您可以在其中运行命令并检查该 Pod。

如果您 附加 BusyBox ,PhpStorm 会自动使用 sh。 对于 自定义镜像, IDE 使用 可执行文件 字段中指定的 Shell。
当您删除其所附加的 Pod 时,该容器将被移除。
最近的命令
通过 临时调试容器 菜单附加临时容器时,PhpStorm 会自动保存相应的 kubectl debug 命令。 稍后您可以在 最近 部分访问并重新运行它。

使用最近命令启动临时容器
打开 服務工具窗口:选择 或按 Alt+8。
展开列出正在运行的 Pod 的节点,并右键单击要调试的 Pod。 在上下文菜单中选择 临时调试容器 以及所需的最近命令。
或者,选择所需的 Pod,单击工具栏上的
,并在下拉列表中选择该最近命令。
管理最近命令
访问最近命令:
在 设置 对话框(Ctrl+Alt+S )中,选择 。
打开 服务 工具窗口 (Alt+8)。 右键单击任意正在运行的 Pod,并在上下文菜单中选择 。
导航到 临时调试容器 部分。
要添加可预先配置并快速启动新临时容器的新命令,请单击
。 在 添加调试参数 对话框中,您可以为
kubectl debug命令指定镜像、可执行文件和选项。要从最近中移除命令,请在表格中选择它并单击
。
要编辑现有命令,请在表格中选择它并单击
。 在 添加调试参数 对话框中,更改
kubectl debug命令的镜像、可执行文件和选项。
Telepresence
Telepresence 是一款工具,它让您访问 Kubernetes 集群中的服务,对其进行调试、进行更改并测试,就像这些服务在您的计算机上本地运行一样。
Kubernetes 插件集成了 Telepresence,使您能够:
连接至 Telepresence ,通过其 DNS 名称访问集群中的服务。
拦截服务 ,将来自集群的流量路由至本地环境。
连接至 Telepresence
打开 服務工具窗口:选择 或按 Alt+8。
右键点击您的 Kubernetes 集群,并选择 连接Telepresence。 或者,点击工具栏中的
。 根据提示输入您的管理员帐户密码,以启动 Telepresence 守护程序。 在 Windows 上,允许执行 telepresence.exe 。
安装完 Telepresence 和 Traffic Manager 后,再次点击 连接Telepresence。
您现在可以通过 DNS 名称访问 Kubernetes 集群中的服务,就像该集群在您的工作站本地运行一样。 例如,如果您有一个应用程序接收发往 hello-node:9001 的请求,您就可以通过其名称访问它。

拦截来自集群的流量
拦截功能允许您获取发往 Kubernetes 集群中某个服务的流量,并将其路由到本地服务。
在工具栏中,点击
(创建新拦截 ),然后点击 创建新拦截。
在打开的窗口中,在 服务 列表中选择要拦截的工作负载。 这可以是 Deployment、ReplicaSet 或 StatefulSet。
在 端口 字段中,指定您的服务的本地实例运行的端口。

如果成功拦截该服务,您可以在本地访问它,并使用 IDE 功能对在集群中运行的应用进行尝试、调试和性能分析。
退出 Telepresence
Telepresence 一次只能与一个集群交互,因此在连接到另一个集群之前,您可能需要先停止当前连接。 退出 Telepresence 将停止所有活动的拦截。
打开 服務工具窗口:选择 或按 Alt+8。
右键点击您的 Kubernetes 集群,并选择 退出Telepresence。 或者,点击工具栏中的
。