关键字高亮脚本 分享几个超级实用的插件和工具,轻松提高工作效率

11/28 09:23:47 来源网站:辅助卡盟平台

kubectx / kubens

kubectx用于快速切换Kubernetes context,而kubens则用于快速切换namespace,我认为二者强大之处在于可以结合fzf使用。任何工具只要和fzf结合,都会很强大。

如切换到kube-systemnamespace:

  1. kubectl ns kube-system

    如果不指定namespace,则调用fzf交互式选择:

    如上黄色的namespace表示当前namespace,通过方向键移动箭头选择需要切换的目标namespace,切换context也一样,由于测试环境只有一个admin,因此只有一个选项。

    debug

    我们知道容器的最佳实践是只运行单个应用进程,因此为了精简镜像,我们通常在构建镜像时只包含进程运行所需要包和程序,但这样其实也给排查故障带来问题,尤其是网络问题,想抓个包实在太麻烦。

    我们常规的做法是先手动进入Pod所在的Node节点,然后找到对应的网络namespace,参考我之前的文章,最后切换到容器的网络namespace中进行抓包,特别麻烦。

    为了解决这个问题,社区中也提供了许多插件方案,

    kubectl-debug通过EphemeralContainers的方式在运行的Pod中增加一个debugger的容器,然后通过kubectl exec进入该容器进行调试。

    ksniff工具主要用于容器抓包,其实现方式是把本地静态的tcpdump工具拷贝到容器的/tmp目录,然后就可以通过kubectl exec进入容器运行tcpdump工具了。

    但我觉得最好用的还是国内PingCAP公司开源的debug工具,其实现原理是在目标Node节点上创建一个DebugAgentPod,创建的Debug Pod会在目标Node上创建一个新的容器,这个容器会加入到目标Pod的各个Namespace中,于是就可以进入这个新的容器进行调试了,这个新的容器目前使用的默认镜像是nicolaka/netshoot,这个镜像里面包含netstat、ip、tcpdump等各种网络调试工具,真是太方便了。

    更多关于debug设计和用法可参考作者的文章简化Pod故障诊断: kubectl-debug 介绍。

    如下是我的一个演示动画:

    grep

    基于name搜索资源辅助卡盟,资源包括DaemonSets、Pods、Deployments、Nodes等,如搜索名字中带web的所有Pods:

    1. # kubectl grep pod web

      NAMESPACE NAME READY STATUS RESTART AGE

      default web-0 1/1 Running 0 37h

      default web-1 1/1 Running 0 37h

      default web-2 1/1 Running 0 37h

      在所有的namespaces搜索名字带virt的Deployments:

      1. # kubectl grep deployment virt --all-namespaces

        NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

        kubevirt virt-api 2 2 2 2 5h32m

    暂无相关资讯
关键字高亮脚本 分享几个超级实用的插件和工具,轻松提高工作效率