题目主干

Task - 1(可能会考的问题1)
在现有的namespace my-app中创建一个名为allow-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许namespace echo中的Pods连接到namespace my-app中的Pods的9000端口。

进一步确保新的NetworkPolicy:
不允许对没有在监听 端口9000的Pods的访问
不允许非来自 namespace echo中的Pods的访问

参考说明

https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/

题目解答

查看命名空间echo是否有标签

  1. student@master01:~$ kubectl get ns echo --show-labels
  2. NAME STATUS AGE LABELS
  3. echo Active 71d kubernetes.io/metadata.name=echo
  4. student@master01:~$

发现当前没有,这里打一个标签

  1. student@master01:~$ kubectl label ns echo project=echo
  2. namespace/echo labeled
  3. student@master01:~$ kubectl get ns echo --show-labels
  4. NAME STATUS AGE LABELS
  5. echo Active 71d kubernetes.io/metadata.name=echo,project=echo
  6. student@master01:~

创建网络策略文件networkpolicy.yaml

  1. apiVersion: networking.k8s.io/v1
  2. kind: NetworkPolicy
  3. metadata:
  4. name: allow-port-from-namespace
  5. namespace: my-app
  6. spec:
  7. podSelector:
  8. matchLabels: {}
  9. policyTypes:
  10. - Ingress
  11. ingress:
  12. - from:
  13. - namespaceSelector:
  14. matchLabels:
  15. project: echo
  16. ports:
  17. - protocol: TCP
  18. port: 9000

检查网络策略

  1. student@master01:~$ kubectl apply -f networkpolicy.yaml
  2. student@master01:~$ kubectl -n my-app get networkpolicy allow-port-from-namespace
  3. NAME POD-SELECTOR AGE
  4. allow-port-from-namespace <none> 65s
  5. student@master01:~$
  6. student@master01:~$ kubectl -n my-app describe networkpolicy allow-port-from-namespace
  7. Name: allow-port-from-namespace
  8. Namespace: my-app
  9. Created on: 2022-05-06 16:20:38 +0800 CST
  10. Labels: <none>
  11. Annotations: <none>
  12. Spec:
  13. PodSelector: <none> (Allowing the specific traffic to all pods in this namespace)
  14. Allowing ingress traffic:
  15. To Port: 9000/TCP
  16. From:
  17. NamespaceSelector: project=echo
  18. Not affecting egress traffic
  19. Policy Types: Ingress
  20. student@master01:~$