쿠버네티스 운영 실무 · NetworkPolicy 적용 · 퀴즈
퀴즈: NetworkPolicy
문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
web 파드에서 api 파드로 가는 트래픽만 허용하려 합니다. 정책의 `podSelector` 는 무엇을 골라야 하는가?
- 트래픽을 받는 api 파드
- 보내는 web과 받는 api 파드 둘 다
- 네임스페이스 전체를 고르는 빈 셀렉터
- 트래픽을 보내는 web 파드
다음 중 '네임스페이스의 모든 파드에 대해 인그레스를 전부 거부'하는 정책은?
- 정책을 아예 만들지 않아 네임스페이스에 인그레스 규칙이 하나도 없는 상태로 두는 것
- `podSelector: {}` 에 `policyTypes: [Ingress]` 이고 ingress 규칙이 없는 정책
- `podSelector: {}` 에 `ingress: [{}]` 하나만 있고 policyTypes 는 생략한 정책
- `policyTypes` 를 비워 두고 ingress 규칙만 여러 개 나열한 정책
`from` 항목 하나 안에 `namespaceSelector` 와 `podSelector` 를 함께 쓰면 의미는?
- 두 조건을 모두 만족해야 허용(AND)
- 문법 오류
- 둘 중 하나만 만족하면 허용(OR)
- namespaceSelector 가 무시된다
이그레스 기본 거부를 적용했더니 모든 서비스가 죽었습니다. 가장 먼저 확인할 것은?
- DNS(53) 이그레스 허용 정책이 있는지
- 노드의 커널 버전이 CNI 요구 사항보다 낮은지
- Service 의 타입이 ClusterIP 인지
- 파드의 CPU 사용량이 limit 에 닿았는지
DNS 허용 정책에서 UDP 53 만 열면 생길 수 있는 문제는?
- CoreDNS 파드가 이그레스 정책에 막혀 기동하지 않는다
- TCP 53 이 막혀 파드 IP 할당이 실패한다
- 응답이 커서 TCP 로 넘어가는 질의가 실패할 수 있다
- 문제가 없다. DNS 질의는 규격상 UDP 53 만 쓴다
NetworkPolicy 를 만들었는데 아무것도 차단되지 않습니다. 가장 가능성 높은 원인은?
- CNI 플러그인이 NetworkPolicy 를 지원하지 않는다
- 정책의 metadata 에 대상 네임스페이스를 지정하지 않았다
- 정책 이름에 대문자가 들어가 라벨 셀렉터 매칭이 실패했다
- apiVersion 을 v1 으로 적어 정책이 무시되고 있다
`ipBlock` 을 클러스터 내부 파드 간 통신 제어에 쓰는 것이 권장되지 않는 이유는?
- ipBlock 에서는 except 로 예외 대역을 뺄 수 없어서
- 파드 IP 는 재생성 때마다 바뀌므로 라벨 기반 선택이 더 안정적이어서
- ipBlock 은 인그레스 규칙에만 쓸 수 있고 이그레스에는 못 써서
- CIDR 표기가 IPv6 파드 네트워크를 지원하지 않아서