首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【内核模块auth_rpcgss】netns引用计数泄露导致容器弹性网卡残留

    的内核数据结构是struct net,其中的count字段表示引用计数,只有当netns的引用计数归零之后才能执行销毁动作: struct net { refcount_t passive;...是谁导致了netns引用计数泄露? 由于弹性网卡残留现象只出现在privileged容器,那么加不加privileged有什么区别呢?...对比发现,privileged容器里多了很多后台服务,怀疑是其中某个服务导致了netns引用计数泄露。我们一个一个依次排除,最终找到了直接导致netns泄露的后台服务是:gssproxy。...可是,容器终止后,在gssproxy后台进程也消失的情况下,netns引用计数仍然不能归零,这就很难解释了,因为用户态进程退出之后应该会释放它占用的所有资源,不应该影响内核,说明问题没那么简单,很可能内核有...我的patch是把它放进nsfs_evict()中,当netns被卸载的时候,nsfs_evict()会被调用,在这个时刻调用rpcsec_gss_exit_net()比较合理。

    2.9K71

    5张图诠释了容器网络

    创建网络命名空间的一种方法是 ip 工具,它是 iproute2 的一部分: $ sudo ip netns add netns0 $ ip netns netns0 如何使用刚才创建的命名空间呢...将 netns0 命名空间连接到 root 命名空间,需要将一个设备留在 root 命名空间,另一个挪到 netns0 里: $ sudo ip link set ceth0 netns netns0...netns1 可以连通,但是 netns0 就不行了。 如果我们为 netns1 选择其他的网段,应该就都可以连通。但是,多个容器在同一个 IP 网段上应该是合理的使用场景。...删除网络命名空间: $ sudo ip netns delete netns0 $ sudo ip netns delete netns1 $ sudo ip link delete veth0...ip link set veth1 up $ sudo ip link set ceth1 netns netns1 $ sudo nsenter --net=/var/run/netns/netns1

    1K20

    获取docker容器的主机虚拟网卡

    首先得到容器的命名空间目录 CON_NET_SANDBOX=$(docker inspect '--format={{ .NetworkSettings.SandboxKey }}' test) #在netns...目录下创建至容器网络名字空间的链接,方便下面在docker主机上执行ip netns命令对容器的网络名字空间进行操作 rm -f /var/run/netns/$CON_PID mkdir -p /var.../run/netns ln -s $CON_NET_SANDBOX /var/run/netns/$CON_PID #获取主机虚拟网卡ID VETH_ID=$(ip netns exec $CON_PID...) #获取主机虚拟网卡名称 VETH_NAME=$(ip link|grep "if${VETH_ID}:"|awk '{print $2}'|awk -F@ '{print $1}') #最后删除在netns...目录下创建的链接 rm -f /var/run/netns/$CON_PID 可以看到上述方案比原方案的优点在于仅使用了ip命令,比较简单,可惜原作者的博客没有开放评论权限,我也没法将这个改进办法告诉他

    4.8K40
    领券