CNI 준비 전 스케줄링되는 레이스 컨디션을 해결하고 완벽한 서비스 메시 등록을 보장하는 방법
Istio의 사이드카리스 아키텍처인 Ambient 모드에서 발생할 수 있는 치명적인 스케줄링 결함을 분석합니다. istio-cni와 Pod 생성 시점 간의 비동기 문제를 Untaint Controller라는 혁신적인 방식으로 해결하는 과정을 다룹니다. 클러스터 운영 안정성을 한 단계 높여주는 실전 트러블슈팅 가이드를 제공합니다.
Istio Ambient 모드 도입을 검토 중이거나 사이드카리스 메시 환경에서 네트워크 유실 문제를 겪고 있는 플랫폼 엔지니어에게 필독을 권장합니다.
Istio Ambient 모드 운영 중 istio-cni 에이전트가 노드에서 완전히 준비되기 전에 Pod가 스케줄링되어, 서비스 메시에 정상적으로 등록되지 못하는 'Partially Enrolled' 현상이 발생합니다.
노드의 준비 상태를 감시하고 istio-cni가 활성화될 때까지 스케줄링을 차단하는 Taint를 활용하며, 준비 완료 시 이를 제거하는 Untaint Controller 메커니즘을 도입하여 해결합니다.
Pod가 항상 CNI 설정이 완료된 환경에서만 생성되도록 보장함으로써 네트워크 가시성 누락 및 보안 정책 미적용 문제를 원천 차단하고 Ambient Mesh의 안정성을 확보했습니다.
Trade-off
컨트롤러를 통한 추가적인 상태 확인 과정으로 인해 노드 추가 시 Pod가 실제 배치되기까지의 지연 시간이 미세하게 발생할 수 있으며 관리 구성 요소가 늘어나는 부담이 있습니다.
사이드카 주입 없이 L4 ztunnel과 L7 Waypoint 프록시를 통해 서비스 메시 기능을 구현하는 Istio의 차세대 아키텍처입니다.
Kubernetes 노드에서 Pod의 네트워크 설정을 조작하여 트래픽이 Istio 구성 요소로 흐르도록 유도하는 플러그인입니다.
특정 조건이 만족될 때까지 노드의 Taint를 유지하다가, 조건 충족 시 Taint를 제거하여 Pod 스케줄링을 허용하는 사용자 정의 컨트롤러입니다.

