暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes网络排障瑞士军刀容器——NetShoot详解

IT运维大爆炸 2023-12-19
336

1、简介

netshoot是一款开源的容器网络诊断工具,本质上是一个容器,里面默认安装了一些常用网络诊断工具,如tcpdump、netstat等,被称为网络排障瑞士军刀容器。

众所周知,容器下网络空间是相互隔离的,与宿主机的网络空间也是隔离的,往往需要通过工具进入容器空间排查问题,但是业务容器不一定安装了常见的调试工具,netshoot在这样的场景提供了很大的便利。

2、特点

  • 提供了“瑞士军刀”式的开箱即用的工具箱,包括各类网络诊断工具。

  • 通过与业务容器共享网络命名空间,可以不重启、“不侵入”业务容器,对容器网络进行调试排错。

  • K8s环境下pod中的容器共享网络命名空间,netshoot可以以sidecard对业务容器进行排错。

3、netshoot镜像构成

netshoot代码比较少,核心代码就是这样一个dockerfile,可以看到里面安装了很多的工具,与另一款Linux系统瑞士军刀busybox不同,netshoot主要关注在网络工具。

4、Docker下网络排障

启动容器

# 调试某个容器网络
docker run -it --net container:<container_name> nicolaka/netshoot
# 调试宿主机网络
docker run -it --net host nicolaka/netshoot

Docker Compose

version: "3.6"
services:
tcpdump:
  image: docker.io/nicolaka/netshoot
  depends_on:
     - nginx
  command: tcpdump -i eth0 -w data/nginx.pcap
  network_mode: service:nginx
  volumes:
     - $PWD/data:/data

nginx:
  image: nginx:alpine
  ports:
     - 80:80

5、Kubernetes下网络排障

启动pod

# 临时容器
kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot
# 在宿主机网络下
kubectl run tmp-shell --rm -i --tty --overrides='{"spec": {"hostNetwork": true}}' --image nicolaka/netshoot

Kubernetes Yaml

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
  app: netshoot
name: netshoot
spec:
replicas: 1
selector:
  matchLabels:
    app: netshoot
template:
  metadata:
    labels:
      app: netshoot
  spec:
    containers:
     - image: docker.io/nicolaka/netshoot
      name: netshoot
      args:
       - bin/bash
       - -c
       - >
          while :; do
            echo "[$(date +%F\ %T)] hello"
            sleep 1
          done

6、总结

  • 简单却流行:netshoot实现原理虽然比较简单,包了一些网络工具,但却也有不少的Star数。同时,另一个K8s环境下的排障工具kubectl-debug也借助netshoot进行pod的诊断调试。

  • 纯手工操作:对于喜欢手动操作的人来说,netshoot确实像瑞士军刀一样方便,手到擒来。遇到问题,直接进入容器进行调试,方便快捷。

  • 与可观测性系统对比:可观测性通过白盒的方式,让业务暴露自身的状态指标,来进行健康状态的诊断,同时对于指标可以进行一些智能化的监控告警;站在使用者的角度,可观测性系统可以将错误异常推送过来,是一种被动发现的机制,可以减轻使用者的负担,从这个角度看,netshoot更像是一种主动诊断的机制。

  • 主流产品:在netshoot中一个issue提到将几个月前刚开源的eBPF工具eCapture(通过ePBF技术获取TLS加密的明文捕获)加入到工具集中,可以看出netshoot生命力还是比较旺盛。

欢迎大家扫码关注:

本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。

文章转载自IT运维大爆炸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论