实验环境:calico版本:v0.23,kubernetes版本:1.35
kubernetes网络使用calico,当namespace使用以下命令配置隔离policy的后:
kubectl annotate ns <namespace> "net.beta.kubernetes.io/network-policy={\"ingress\": {\"isolation\": \"DefaultDeny\"}}"
问题:跨主机node访问pod被隔离了。但是kubernetes中外网访问service需要node节点可以访问所有pod。
通过分析calico创建的iptables,node跨主机访问pod进过FORWARD链的时候被drop掉了。创建namespace的时候,calico默认会创建felix-p-_e9d3a9f50c6dd3a-i felix-p-k8s_ns.net1-sub1-i 这两条链,第一条链会把非pod的流量给drop掉。