Killer Shell CKA - NetworkPolicy Misconfigured

Jmnote (토론 | 기여)님의 2025년 9월 24일 (수) 20:56 판 (→‎같이 보기)

1 개요

Killer Shell CKA - NetworkPolicy Misconfigured

2 사전 확인

라벨과 테스트 리소스를 확인한다.

controlplane:~$ kubectl get ns --show-labels
controlplane:~$ kubectl get pod -A --show-labels
controlplane:~$ kubectl get svc,pod -A --show-labels | grep tester

기존 네트워크정책 확인:

controlplane:~$ kubectl -n default get networkpolicy np-100x -o yaml

3 문제 원인

  • 기존 NetworkPolicy의 namespaceSelector 중 하나가 잘못된 네임스페이스 라벨을 가리키고 있어 level-1001로의 통신이 차단됨
  • NetworkPolicy에서 namespaceSelector는 네임스페이스의 라벨을 사용한다. kubeadm 기반 클러스터는 보통 kubernetes.io/metadata.name={namespace} 라벨이 있다.

4 해결

NetworkPolicy를 올바르게 수정한다.

controlplane:~$ kubectl -n default edit networkpolicy np-100x

수정 예시(YAML):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: np-100x
  namespace: default
spec:
  podSelector:
    matchLabels:
      level: 100x
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: level-1000
      podSelector:
        matchLabels:
          level: 100x
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: level-1001   # CHANGE: 올바른 네임스페이스로 수정
      podSelector:
        matchLabels:
          level: 100x
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: level-1002
      podSelector:
        matchLabels:
          level: 100x
  - ports:
    - port: 53
      protocol: TCP
    - port: 53
      protocol: UDP

5 검증

아래 호출들이 성공해야 한다.

controlplane:~$ kubectl exec tester-0 -- curl tester.level-1000.svc.cluster.local
controlplane:~$ kubectl exec tester-0 -- curl tester.level-1001.svc.cluster.local
controlplane:~$ kubectl exec tester-0 -- curl tester.level-1002.svc.cluster.local

6 참고/주의

  • 본 정책은 default 네임스페이스의 파드 중 level=100x 라벨에만 적용되며, Egress만 제한/허용한다.
  • DNS 허용은 목적지 제한 없이 53/TCP, 53/UDP를 개방한다. 더 엄격히 하려면 CoreDNS 파드가 있는 kube-system 네임스페이스와 파드 셀렉터를 사용해 특정 대상으로 한정할 수 있다.
  • CNI 플러그인(Calico, Cilium 등)에서 NetworkPolicy 기능이 활성화되어 있어야 정책이 적용된다.

7 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}