gpt4 book ai didi

docker - K8S iptables与Pod内的一个容器之间的关系

转载 作者:行者123 更新时间:2023-12-02 21:01:16 29 4
gpt4 key购买 nike

我已经在容器中启用了特权模式,并向其中添加了一条规则,

iptables -N udp2rawDwrW_191630ce_C0
iptables -F udp2rawDwrW_191630ce_C0
iptables -I udp2rawDwrW_191630ce_C0 -j DROP
iptables -I INPUT -p tcp -m tcp --dport 4096 -j udp2rawDwrW_191630ce_C0

kt exec放入容器并使用 iptables --table filter -L,我可以看到添加的规则。
/ # iptables --table filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
udp2rawDwrW_191630ce_C0 tcp -- anywhere anywhere tcp dpt:4096

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain udp2rawDwrW_191630ce_C0 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere

当我登录到容器所在的节点并运行 sudo iptalbes --table filter -L时,看不到相同的结果。

我在想默认情况下会丢弃 previleged,因为容器可能会利用它来更改节点中的iptables之类的内容,但是看起来并非如此。

所以我的问题是“K8S iptables与Pod中的一个容器之间的关系是什么”和“为什么我们要阻止用户修改没有 privileged字段的容器的iptables”?

最佳答案

如果您想操纵节点的iptables,那么您肯定需要将pod放置在主机的网络上(podt的hostNetwork: true中的spec)。之后,授予容器NET_ADMINNET_RAW功能(在containers[i].securityContext.capabilities.add中)就足够了。
示例json slice :

  "spec": {
"hostNetwork": true,
"containers": [{
"name": "netadmin",
"securityContext": {"capabilities": { "add": ["NET_ADMIN", "NET_RAW"] } }

我不确定特权模式最近是否与操纵主机的iptables有关。

关于docker - K8S iptables与Pod内的一个容器之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60230369/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com