Day28- 你都用什麽debug kubectl-debug

当使用k8s碰上pod起不来 crash loop 或是pod 网路不通时,不外乎就是kubectl logs 或者 使用 kubectl exec进入pod後,安装curl tcp-dump 等工具来检测,但是一来麻烦,二来建立pod的image通常是最小化的image,可能没有apt-get之类的安装工具,在这种情况下,就会很难debug。
而kubectl-debug 就是能解决这种情况的工具。

什麽是kubectl-debug

kubectl-debug,是一个帮助你诊断以及debug的工具,他能够在有问题的pod内建立一个工具容器,并且会加入目标容器的pid, network, useripc namespaces内,所以你就可以透过这个工具容器内的工具来进行故障排除,而不用把这些工具加到出问题的容器image内了。

安装 kubectl-debug

官网有不同的安装方式,这边挑如何用brew安装:

brew install aylei/tap/kubectl-debug

安装完成後,可以用kubectl-debug -h来测试看看是否有成功安装,成功安装的话就会像下图:
https://ithelp.ithome.com.tw/upload/images/20211005/20129607FxJMqLaPrg.png

这样子就是安装成功了。
要注意的是k8s 1.18版本後,内建kubectl debug,这个跟我们刚刚介绍的kubectl-debug是不同东西,要注意一下。

测试

kubectl-debug建立出来的pod是基於nicolaka/netshoot的image而来的(有兴趣的人可以去看看netshoot的readme,有介绍到不少工具的使用,以及不同网路问题的排除。)
要测试也很简单,只要下这句即可

kubectl-debug <pod-name>

将你的pod名称代入後,就可以进行查看host或是使用netstat的操作。

如果你的pod正在crash loop,无法连接的情况下,可以使用下面指令

kubectl-debug <pod-name> --fork

他会复制一个相同的pod出来,这时你就可以去对复制的pod进行诊断了。

透过这个工具,我们能够比较容易地针对pod进行测试以及诊断,下一章会介绍最後一个k8s工具,希望对在看的人有帮助。


<<:  AI & machine learning 组别

>>:  [NestJS 带你飞!] DAY21 - HTTP Module

我们的基因体时代-AI, Data和生物资讯 Day25- 再深一点:AnnotationHub,从注释到序列

上一篇我们的基因体时代-AI, Data和生物资讯 Day24- 使用tidyverse观念来分析基...

Android Studio 菜鸟笔记本-Day 30 -感言

终於完成了这一次的赛程~ 我很庆幸有参加这一次的铁人赛,回想一开始参加铁人赛那忐忑不安的感觉,在经历...

成为我们的夥伴,一起航向伟大的航道吧

启航罗~~~ 此篇开始,会介绍AWS上使用完全托管的Kubernetes服务之EKS系列。一般自己托...

@Day10 | C# WixToolset + WPF 帅到不行的安装包 [自订动作介接画面-安装前执行]

安装前 要执行的动作 昨天有讲到安装後的执行动作,那安装之前要执行的动作勒?! ex 我想先侦测出本...

Day#21 Chat

前言 昨天引用了许多函式库,今天就来使用他们所提供的功能,真正来实作chatroom内容吧~~ Sp...