当使用k8s碰上pod起不来 crash loop 或是pod 网路不通时,不外乎就是kubectl logs
或者 使用 kubectl exec
进入pod後,安装curl tcp-dump 等工具来检测,但是一来麻烦,二来建立pod的image通常是最小化的image,可能没有apt-get
之类的安装工具,在这种情况下,就会很难debug。
而kubectl-debug 就是能解决这种情况的工具。
kubectl-debug,是一个帮助你诊断以及debug的工具,他能够在有问题的pod内建立一个工具容器,并且会加入目标容器的pid
, network
, user
和 ipc namespaces
内,所以你就可以透过这个工具容器内的工具来进行故障排除,而不用把这些工具加到出问题的容器image内了。
官网有不同的安装方式,这边挑如何用brew安装:
brew install aylei/tap/kubectl-debug
安装完成後,可以用kubectl-debug -h
来测试看看是否有成功安装,成功安装的话就会像下图:
这样子就是安装成功了。
要注意的是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工具,希望对在看的人有帮助。
>>: [NestJS 带你飞!] DAY21 - HTTP Module
上一篇我们的基因体时代-AI, Data和生物资讯 Day24- 使用tidyverse观念来分析基...
终於完成了这一次的赛程~ 我很庆幸有参加这一次的铁人赛,回想一开始参加铁人赛那忐忑不安的感觉,在经历...
启航罗~~~ 此篇开始,会介绍AWS上使用完全托管的Kubernetes服务之EKS系列。一般自己托...
安装前 要执行的动作 昨天有讲到安装後的执行动作,那安装之前要执行的动作勒?! ex 我想先侦测出本...
前言 昨天引用了许多函式库,今天就来使用他们所提供的功能,真正来实作chatroom内容吧~~ Sp...