blog icon indicating copy to clipboard operation
blog copied to clipboard

post/kubectl-debug-intro/

Open utterances-bot opened this issue 6 years ago • 17 comments

简化 Pod 故障诊断: kubectl-debug 介绍

https://aleiwu.com/post/kubectl-debug-intro/

utterances-bot avatar Jun 04 '19 09:06 utterances-bot

具体到实现上,一条 kubectl debug 命令背后是这样的。

该流程图是用啥工具画的?

withlin avatar Jun 04 '19 09:06 withlin

@withlin 手绘的

aylei avatar Jun 05 '19 09:06 aylei

赞!有这样一个工具会变得非常的方便。

double12gzh avatar Jun 16 '19 01:06 double12gzh

在第一个PR之前还没有写过GO鼓励了我,嘻嘻

zheng199512 avatar Jul 31 '19 13:07 zheng199512

直接通过debug这个应用向apiserver发起请求? 好奇怎么把对apiserver的操作做到集群外面的。

XuHaoIgeneral avatar Aug 22 '19 10:08 XuHaoIgeneral

外面的集群和内部的服务可以直接 尝试exec这种方式进行交互也是可以吧

XuHaoIgeneral avatar Aug 22 '19 10:08 XuHaoIgeneral

感谢不断更新和完善,年初搜索Codis的时候无意中进入你的Blog,阅读了面试经历, kubectl-debug 两篇文章,后者给我留下了更深刻的印象。如今在All in k8s的公司项目中也把你的解决方案推荐给了同事,目前算是解决了一个痛点,等项目架构成熟后还再推荐给haosong。

关于容器日志不知道你有没有推荐方案,之前一直是Scribe,目前在吐血测试EFK/ELK,Loki是我个人想尝试的方向。

wsgzao avatar Sep 06 '19 10:09 wsgzao

@XuHaoIgeneral debug 是向节点上的 agent 发起请求,再由 agent 操作容器运行时启动 debug 容器

aylei avatar Oct 26 '19 08:10 aylei

@wsgzao 容器日志方面我是个外行,从个人体会来讲仍然是 ELK/EFK 这套最成熟,但我非常看好 Loki 的思路,现在 loki 支持 fluent-bit 了,等几个版本后 server 端能做得稳定一点是一个成本效益很好的方案

aylei avatar Oct 26 '19 08:10 aylei

好奇的问一下agent的设计意义是什么

abhty822 avatar May 23 '20 16:05 abhty822

是为了集群外部的debug么

abhty822 avatar May 23 '20 16:05 abhty822

@abhty822 启动 debug 容易需要与对应机器上的容器运行时(dockerd/containerd)做交互,而它们一般不暴露给外部访问,因此需要一个 agent 运行到对应机器上去做这些交互。同时,agent 也统一了不同容器运行时的差异,给客户端的 kubectl plugin 提供了统一的接口。

aylei avatar May 25 '20 13:05 aylei

日志有下错误,需要额外安装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

zlcolin avatar Nov 28 '20 09:11 zlcolin

日志有下错误,需要额外安装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 模式使用插件中预定义的镜像

aylei avatar Dec 10 '20 13:12 aylei

请问kube-debug不支持挂载目录吗?我需要本地机器的一些头文件。想挂载进容器。

smartxff avatar Dec 25 '20 07:12 smartxff

大佬,可以列一下代码目录说明吗?

qyk1995 avatar Nov 05 '21 09:11 qyk1995

大佬,报这个错是啥原因?一直定位不出来。 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

lixf168 avatar Mar 02 '22 10:03 lixf168