一、用 调试 节点
1、准备开始
你必须拥有一个 的集群,同时你必须配置 命令行工具与你的集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果你还没有集群,你可以通过 构建一个你自己的集群,或者你可以使用下面的 练习环境之一:
你的 服务器版本必须不低于版本 1.2. 要获知版本信息,请输入 .
你需要有权限创建 Pod 并将这些新 Pod 分配到任意节点。 你还需要被授权创建能够访问主机上文件系统的 Pod。
2、使用 debug node调试节点
使用 debug node 命令将 Pod 部署到要排查故障的节点上。 此命令在你无法使用 SSH 连接节点时比较有用。 当 Pod 被创建时,Pod 会在节点上打开一个交互的 Shell。 要在名为 “” 的节点上创建一个交互式 Shell,运行:
kubectl debug node/mynode -it --image=ubuntu
Creating debugging pod node-debugger-mynode-pdx84 with container debugger on node mynode.
If you don't see a command prompt, try pressing enter.
root@mynode:/#
调试命令有助于收集信息和排查问题。 你可能使用的命令包括 ip、、nc、ping 和 ps 等等。 你还可以从各种包管理器安装 mtr、 和 curl 等其他工具。
说明:
这些调试命令会因调试 Pod 所使用的镜像不同而有些差别,并且这些命令可能需要被安装。
用于调试的 Pod 可以访问节点的根文件系统,该文件系统挂载在 Pod 中的 /host 路径。 如果你在 名字空间中运行 , 则正调试的 Pod 将看到此名字空间的根,而不是整个节点的根。 对于典型的 Linux 节点,你可以查看以下路径找到一些重要的日志:
/host/var/log/.log
负责在节点上运行容器的 所产生的日志。
/host/var/log/kube-proxy.log
负责将流量导向到 端点的 kube-proxy 所产生的日志。
/host/var/log/.log
在节点上运行的 进程所产生的日志。
/host/var/log/
显示常规消息以及系统相关信息。
/host/var/log/kern.log
显示内核日志。
当在节点上创建一个调试会话时,需谨记:
3、清理现场
当你使用正调试的 Pod 完成时,将其删除:
kubectl get pods
NAME READY STATUS RESTARTS AGE
node-debugger-mynode-pdx84 0/1 Completed 0 8m1s
# 相应更改 Pod 名称
kubectl delete pod node-debugger-mynode-pdx84 --now
pod "node-debugger-mynode-pdx84" deleted
说明:
如果节点停机(网络断开或 宕机且无法启动等),则 debug node 命令将不起作用。 这种情况下请检查调试关闭/无法访问的节点。
二、使用 在本地开发和调试服务
说明: 本部分链接到提供 所需功能的第三方项目。 项目作者不负责这些项目。此页面遵循CNCF 网站指南,按字母顺序列出项目。要将项目添加到此列表中,请在提交更改之前阅读内容指南。
应用程序通常由多个独立的服务组成,每个服务都在自己的容器中运行。 在远端的 集群上开发和调试这些服务可能很麻烦, 需要在运行的容器上打开 Shell, 以运行调试工具。
是一个工具,用于简化本地开发和调试服务的过程,同时可以将服务代理到远程 集群。 允许你使用自定义工具(例如调试器和 IDE)调试本地服务, 并能够让此服务完全访问 、 和远程集群上运行的服务。
本文档描述如何在本地使用 开发和调试远程集群上运行的服务。
1、准备开始
2、从本机连接到远程 集群
安装 后,运行 来启动它的守护进程并将本地工作站连接到远程 集群。
$ telepresence connect
Launching Telepresence Daemon
...
Connected to context default (https://)
你可以通过 curl 使用 语法访问服务,例如:curl -ik
3、开发和调试现有的服务
在 上开发应用程序时,通常对单个服务进行编程或调试。 服务可能需要访问其他服务以进行测试和调试。 一种选择是使用连续部署流水线,但即使最快的部署流水线也会在程序或调试周期中引入延迟。
使用 $ –port $:$ 命令创建一个 “拦截器” 用于重新路由远程服务流量。
环境变量:
运行此命令会告诉 将远程流量发送到本地服务,而不是远程 集群中的服务中。 在本地编辑保存服务源代码,并在访问远程应用时查看相应变更会立即生效。 还可以使用调试器或任何其他本地开发工具运行本地服务。
4、 是如何工作的?
会在远程集群中运行的现有应用程序容器旁边安装流量代理 。 当它捕获进入 Pod 的所有流量请求时,不是将其转发到远程集群中的应用程序, 而是路由所有流量(当创建全局拦截器时) 或流量的一个子集(当创建自定义拦截器时) 到本地开发环境
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666