CKA — 쿠버네티스 관리자 · 서비스와 네트워킹 · 퀴즈
퀴즈: 서비스와 네트워킹
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
Service, Deployment, 파드가 모두 정상인데 접속이 안 된다. 가장 먼저 확인해야 할 것은?
- kube-proxy 파드의 로그
- CoreDNS 의 Corefile 설정과 업스트림 지정
- NodePort 포트 범위 설정
- 서비스 셀렉터가 파드 라벨과 일치하는지, 그리고 파드가 Ready 인지 (즉 엔드포인트에 IP 가 있는지)
kube-proxy 를 아예 설치하지 않고 Cilium 의 eBPF 로 대체한 클러스터에서 노드의 iptables KUBE- 체인이 0개인 이유는?
- 그 노드에 iptables 자체가 설치돼 있지 않아서
- kube-proxy DaemonSet 을 나중에 삭제해 규칙만 청소된 것
- 서비스의 프론트엔드와 백엔드가 eBPF 해시맵에 들어가고 커널이 그 맵을 조회해 목적지를 바꾸기 때문
- 아직 Service 를 하나도 만들지 않아서
kubeProxyReplacement 를 켤 때 k8sServiceHost 와 k8sServicePort 를 반드시 지정해야 하는 이유는?
- kubernetes 서비스 VIP 를 만들어 줄 주체가 Cilium 자신이라, 기동 전에는 그 VIP 를 쓸 수 없기 때문
- Cilium 이 kube-proxy 를 대신 설치하기 때문
- apiserver 인증서 SAN 에 ClusterIP 가 없기 때문
- CoreDNS 가 아직 뜨지 않아 이름을 풀 수 없기 때문
clusterIP 를 None 으로 둔 헤드리스 서비스의 DNS 동작은?
- 서비스 이름이 여전히 하나의 단일 가상 IP 주소로만 해석된다
- DNS 레코드가 전혀 생기지 않는다
- NodePort 를 통해서만 접근할 수 있다
- 서비스 이름이 백엔드 파드 IP 들로 직접 해석되고, StatefulSet 과 함께 쓰면 파드별 DNS 이름도 생긴다
NetworkPolicy 에서 from 항목을 두 개로 나눠 각각 namespaceSelector 와 podSelector 를 쓴 것과, 한 항목 안에 둘을 함께 쓴 것의 차이는?
- 둘은 의미가 같고 표기만 다르다
- 나누면 OR (둘 중 하나만 맞아도 허용), 한 항목에 함께 쓰면 AND (둘 다 맞아야 허용)
- 나누면 AND, 한 항목에 함께 쓰면 OR
- namespaceSelector 가 있으면 podSelector 는 항상 무시된다
v1.33 에서 Endpoints API 가 deprecated 된 뒤, 백엔드 목록을 읽어야 하는 코드가 취해야 할 조치는?
- kubernetes.io/service-name 라벨로 EndpointSlice 를 조회하도록 바꾼다
- Service 의 externalIPs 필드를 대신 읽는다
- kube-proxy 의 메트릭 엔드포인트를 파싱한다
- Ingress 의 status 필드를 읽는다