CKA [Installation] – NetworkPolicy例子1,block 全部 ingress 和 egress

根据以上截图使用的NetworkPolicy是不选择任何的podSelector, 那么就意味着是选择了整个production namespace。policyTypes 使用了Ingress和Egress但是没有任何ingress和egress的配置,那么就是默认Ingress和Egress都封了所有的inbound rule和outbound rule

✅ 实验案例

1. 创建一个curl pod

kubectl run test-pod --image=alpine/curl -- sleep 36000

2. 进入pod内进行ping google.com

kubectl exec -it test-pod -- sh
ping google.com

3. 创建NetworkPolicy

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: example-1
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
kubectl apply -f netpol.yaml
kubectl get netpol -n default

4. 重新进入pod来进行ping的测试,你会发现到无法进行ping

kubectl exec -it test-pod -- sh
ping google.com

如果ping得到的话就代表着你的CNI不支持NetworkPolicy,我使用的Minikube默认是bridge CNI,所以需要改用Calico的CNI才行。

minikube delete
minikube start --cni=calico

5. 删除创建的资源

kubectl delete networkpolicy example-1 -n default
kubectl delete pod test-pod -n default

Loading

Facebook评论