我正在我的kubernetes集群中设置我的默认名称空间,以允许来自外部节点/主机的传入流量,但拒绝任何可能的pod间通信。我有2个Nginx Pod,我想将它们完全隔离在集群内部。这两个Pod均使用nodePort类型的服务公开,并且可以从外部进行访问。
我首先应用以下默认拒绝网络策略:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
- Ingress
然后,我尝试使用以下网络策略允许外部流量:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-external
spec:
podSelector: {}
ingress:
- from:
- ipBlock:
cidr: 192.168.0.0/16
但是不幸的是,我无法从集群的内部和外部访问该服务。
运行示例: -macOS High Sierra v10.13.6 -minikube v1.5.2->使用网络插件= cilium -kubectl v1.16.2
我怎么面对这个问题?
答案 0 :(得分:1)
如果要允许任何传入的流量到除群集中的流量之外的任何Pod,可以在允许来自所有IP的流量的规则中使用“除外”符号。在下面的内容中,将172.17.1.0/24
替换为包含您的广告连播的cidr:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-internal
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 172.17.1.0/24