繁体   English   中英

用于禁用 AWS 上特定命名空间的所有互联网连接的 kubernetes 网络策略 - EKS

[英]kubernetes network policy to disable all internet connections for specific namespace on AWS - EKS

我想拒绝容器访问公共互联网。

经过长时间的研究,我发现了这个例子:DENY external egress traffic

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: foo-deny-external-egress
spec:
  podSelector:
    matchLabels:
      app: foo
  policyTypes:
  - Egress
  egress:
  - ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP
   to:
    - namespaceSelector: {}

但它不起作用。 事实上,我运行wget https://google.com并得到了积极的回应。 任何提示都适用

网络策略在 calico 上运行良好。 网络策略对使用 flannel network plugin 的集群没有影响

正如在此链接中提到的,法兰绒专注于网络。 对于网络策略,可以使用 Calico 等其他项目。

网络策略使用 calico 在集群上按预期阻止流量

我有两个集群,一个使用法兰绒,一个使用印花布,测试在印花布上按预期工作。

日志:

$ kubectl apply -f networkpolicy.yaml
networkpolicy.networking.k8s.io/foo-deny-external-egress created


ubuntu@calico-master-1:~$ kubectl run busybox --image=busybox --restart=Never -- sleep 3600
pod/busybox created


$ kubectl get networkpolicy
NAME                       POD-SELECTOR   AGE
foo-deny-external-egress   run=busybox    30m

$ kubectl exec -it busybox -- /bin/sh
/ # wget https://google.com
Connecting to google.com (74.125.193.102:443)
wget: can't connect to remote host (74.125.193.102): Connection timed out

在集群上使用 Flannel 创建网络策略无效

ubuntu@k8s-flannel:~$ kubectl exec -it busybox -- /bin/sh
/ # curl https://google.com
/bin/sh: curl: not found
/ # wget https://google.com
Connecting to google.com (216.58.207.238:443)
wget: note: TLS certificate validation not implemented
Connecting to www.google.com (172.217.20.36:443)
saving to 'index.html'
index.html           100% |*************************************************************************************************************************************************| 12498  0:00:00 ETA
'index.html' saved

应用政策

$ kubectl apply -f networkpolicy.yaml
networkpolicy.networking.k8s.io/foo-deny-external-egress created

$ kubectl get networkpolicy
NAME                       POD-SELECTOR   AGE
foo-deny-external-egress   run=busybox    32m

我们仍然可以访问外部网络,因为网络策略在 flannel 上不起作用

$ kubectl exec -it busybox -- /bin/sh
/ # wget https://google.com
Connecting to google.com (172.217.22.174:443)
wget: note: TLS certificate validation not implemented
Connecting to www.google.com (172.217.20.36:443)
saving to 'index.html'
index.html           100% |*************************************************************************************************************************************************| 12460  0:00:00 ETA
'index.html' saved

EKS 上的默认 CNI 不支持网络策略。 你应该

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM