blog
blog copied to clipboard
post/kubectl-debug-intro/
具体到实现上,一条 kubectl debug
命令背后是这样的。
该流程图是用啥工具画的?
@withlin 手绘的
赞!有这样一个工具会变得非常的方便。
在第一个PR之前还没有写过GO鼓励了我,嘻嘻
直接通过debug这个应用向apiserver发起请求? 好奇怎么把对apiserver的操作做到集群外面的。
外面的集群和内部的服务可以直接 尝试exec这种方式进行交互也是可以吧
感谢不断更新和完善,年初搜索Codis的时候无意中进入你的Blog,阅读了面试经历, kubectl-debug 两篇文章,后者给我留下了更深刻的印象。如今在All in k8s的公司项目中也把你的解决方案推荐给了同事,目前算是解决了一个痛点,等项目架构成熟后还再推荐给haosong。
关于容器日志不知道你有没有推荐方案,之前一直是Scribe,目前在吐血测试EFK/ELK,Loki是我个人想尝试的方向。
@XuHaoIgeneral debug 是向节点上的 agent 发起请求,再由 agent 操作容器运行时启动 debug 容器
@wsgzao 容器日志方面我是个外行,从个人体会来讲仍然是 ELK/EFK 这套最成熟,但我非常看好 Loki 的思路,现在 loki 支持 fluent-bit 了,等几个版本后 server 端能做得稳定一点是一个成本效益很好的方案
好奇的问一下agent的设计意义是什么
是为了集群外部的debug么
@abhty822 启动 debug 容易需要与对应机器上的容器运行时(dockerd/containerd)做交互,而它们一般不暴露给外部访问,因此需要一个 agent 运行到对应机器上去做这些交互。同时,agent 也统一了不同容器运行时的差异,给客户端的 kubectl plugin 提供了统一的接口。
日志有下错误,需要额外安装lxcfs 吗?
/usr/bin/nsenter -m/proc/1/ns/mnt -- fusermount -u /var/lib/lxc/lxcfs
true
/usr/bin/nsenter -m/proc/1/ns/mnt -- '[' -L /etc/mtab ]
/usr/bin/nsenter -m/proc/1/ns/mnt -- mkdir -p /var/lib/lxc/lxcfs
LXCFS_USR=/usr/bin/lxcfs
LXCFS=/usr/local/bin/lxcfs
/usr/bin/nsenter -m/proc/1/ns/mnt -- '[' -f /usr/bin/lxcfs ]
grep -q io.containerd.runtime.v1.linux /proc/13560/cmdline
exec /usr/bin/nsenter -m/proc/1/ns/mnt -- /usr/local/bin/lxcfs -p /run/lxcfs-13578.pid /var/lib/lxc/lxcfs/ nsenter: can't execute '/usr/local/bin/lxcfs': No such file or directory
export 'KCTLDBG_CONTAINERDV1_SHIM=io.containerd.runc.v1'
/bin/debug-agent No config file provided. Using all default values. 2020/11/28 09:35:56 server.go:38: Listening on 0.0.0.0:10027 2020/11/28 09:35:59 server.go:70: receive debug request
日志有下错误,需要额外安装lxcfs 吗?
/usr/bin/nsenter -m/proc/1/ns/mnt -- fusermount -u /var/lib/lxc/lxcfs true /usr/bin/nsenter -m/proc/1/ns/mnt -- '[' -L /etc/mtab ] /usr/bin/nsenter -m/proc/1/ns/mnt -- mkdir -p /var/lib/lxc/lxcfs LXCFS_USR=/usr/bin/lxcfs LXCFS=/usr/local/bin/lxcfs /usr/bin/nsenter -m/proc/1/ns/mnt -- '[' -f /usr/bin/lxcfs ] grep -q io.containerd.runtime.v1.linux /proc/13560/cmdline exec /usr/bin/nsenter -m/proc/1/ns/mnt -- /usr/local/bin/lxcfs -p /run/lxcfs-13578.pid /var/lib/lxc/lxcfs/ nsenter: can't execute '/usr/local/bin/lxcfs': No such file or directory export 'KCTLDBG_CONTAINERDV1_SHIM=io.containerd.runc.v1' /bin/debug-agent No config file provided. Using all default values. 2020/11/28 09:35:56 server.go:38: Listening on 0.0.0.0:10027 2020/11/28 09:35:59 server.go:70: receive debug request
DaemonSet 模式需要更新 agent, 可以试试 --agentless 模式使用插件中预定义的镜像
请问kube-debug不支持挂载目录吗?我需要本地机器的一些头文件。想挂载进容器。
大佬,可以列一下代码目录说明吗?
大佬,报这个错是啥原因?一直定位不出来。 Type Reason Age From Message
Warning PodFitsHostPorts 8m27s kubelet, docker-9 Predicate PodFitsHostPorts failed
pod状态如下: debug-agent-lb24p 1/1 Running 0 5m50s debug-agent-m46hl 1/1 Running 0 5m50s debug-agent-pod-71deb2a8-9a0f-11ec-b073-005056bfc8c5 0/1 PodFitsHostPorts 0 3m3s