결과적으로 마이크로소프트는 많은 자체 쿠버네티스 관리 도구를 고안했다. AI 추론 워크로드를 배포하는 카이토(Kaito), 쿠버네티스 클러스터의 대규모 관리를 위한 플릿(Fleet)등을 말한다. 마이크로소프트의 다양한 모든 도구는 애저 쿠버네티스 서비스와 애저 컨테이너 서비스, 두 가지 관리형 쿠버네티스 서비스 하위에 위치하며, 관리 프레임워크를 구축할 필요 없이 컨테이너 기반 애플리케이션을 배포하고 조율할 수 있게 해준다. 모두 무료이며 API, 포털, 명령줄 인터페이스
도 함께 제공된다.
예전이라면 여기서 끝나고, 마이크로소프트가 이런 기능으로 브랜드와 쿠버네티스 클라우드를 차별화했을 것이다. 그러나 오픈소스 모델에 진심인 마이크로소프트는 실제로 내부 쿠버네티스 이니셔티브를 담당하는 경영진 상당수를 오픈소스 출신으로 채웠다. 또한 쿠버네티스 도구를 내부 전용으로 묶어두지 않고 오픈소스 프로젝트로 출시해서 누구나 사용하고 새 코드를 기여할 수 있도록 했다.
관측가능성 플랫폼 ‘레티나’의 등장
최근에 오픈소스 프로젝트가 된 애저 도구 중 관측가능성 도구인 레티나(Retina)가 있다. 레티나는 구성 방식이나 사용하는 운영체제에 관계없이 모든 클러스터의 네트워크 트래픽을 살펴보기 위한 용도로 설계됐다. 애저에 묶이지도 않으므로 온프레미스나 AWS, 애저, GCP 등 모든 쿠버네티스 인스턴스에서 레티나를 실행할 수 있다.레티나의 중심에는 팔코(Falco) 보안 도구와 마찬가지로 확장된 버클리 패킷 필터(extended Berkeley Packet Filters: eBPF)가 있다. eBPF는 애플리케이션 컨테이너 외부인 호스트 OS의 커널 내에서 코드를 실행해 실행 중인 코드에 별다른 영향을 미치지 않으면서 eBPF 프로브를 사용할 수 있다. 컨테이너에 에이전트를 추가하거나 코드에 모니터링 라이브러리를 추가할 필요가 없으며, 클라우드 가상머신이든 온프레미스의 물리적 하드웨어든 관계없이 하나의 eBPF 프로브가 호스트에서 실행 중인 모든 노드를 모니터링할 수 있다.
커널 내에서 레티나 프로브를 실행하면 네트워크 모니터링이 간편해진다. 호스트 서버에 어느 네트워크 카드가 설치되어 있는지, 또는 쿠버네티스 환경이 서비스 메시를 어떻게 사용하는지 알 필요가 없다. 호스트 운영체제의 네트워킹 스택이 패킷을 어떻게 처리하고 있는지를 살펴볼 수 있고 상위 수준에서는 접근하지 못할 수도 있는 저수준 TCP/IP 기능을 활용하여 패킷 유형, 지연, 패킷 손실을 추적할 수 있다.
레티나는 클라우드 네이티브 네트워킹의 관측가능성 구현에 초점을 두므로 어느 모니터링 도구셋 또는 쿠버네티스 설치 환경에나 잘 들어맞는다. 리눅스와 윈도우를 모두 지원하므로 리눅스와 윈도우 서비스를 혼합하는 하이브리드 애플리케이션을 모니터링하고 디버깅하는 데 유용하다. eBPF 프로브는 코드이므로 맞춤 구성 가능한 플러그인이라고 생각하면 된다. 이를 통해 새로운 쿠버네티스 기능과 함께 발전하면서 모니터링 요구사항에 필요한 메트릭을 지원할 수 있다.
데이터는 노드 수준에서 익숙한 프로메테우스(Prometheus) 로깅 서비스에 전달된다. 수집되는 데이터에는 DNS, 레이어 4 작업, 패킷 캡처가 포함된다. 데이터에는 레이블이 지정되므로 쿠버네티스 환경에서 작업 맵을 구축할 수 있고, 레티나가 쿠버네티스 인스턴스 내부와 그 주변의 흐름 패턴을 기록하므로 흐름을 막는 마이크로서비스와 같은 문제를 추적하는 데 유용하다.
레티나 시작하기
먼저 레티나 깃허브 리포지토리를 클론한 다음 번들로 제공되는 헬름(Helm) 차트를 사용해 설치한다. 레티나가 확실히 데이터를 기록하도록 하기 위해 프로메테우스 구성이 필요할 수도 있다. 레티나 CLI를 사용하려면 리눅스에서 호스팅되는 쿠버네티스에서 실행 중이어야 한다. CLI는 kubectl에서 실행되므로 다른 쿠버네티스 CLI 도구와 함께 사용하기 쉽다. 또는 YAML 맞춤 리소스 정의를 사용해 네트워크 캡처를 구성하고 실행할 수도 있다.리눅스에서 eBPF 네트워크 캡처 플러그인은 오픈소스인 인스펙터 가젯(Inspektor Gadget) 도구의 한 버전이다. 킨볼크(Kinvolk) 팀이 처음 개발했고, 지금은 애저의 한 부분이며 여전히 컨테이너 엔지니어링에 초점을 둔다. 인스펙터 가젯은 쿠버네티스 eBPF 도구 라이브러리로, 단일 노드부터 대규모 클러스터까지 모든 규모의 쿠버네티스 애플리케이션에 사용 가능하다. 레티나는 인스펙터 가젯의 트레이스 기능을 사용해서 네트워크 시스템 이벤트를 관찰한다.
컨테이너 네트워크 관찰
레티나 웹사이트는 도구 사용법에 대한 세부적인 지침을 제공한다. 레티나에는 세 가지 작동 모드가 있다. 노드별 수준의 기본 메트릭, 소스 및 대상 포드(pod)별로 집계를 지원하는 더 세부적인 "원격 컨텍스트" 메트릭, 그리고 모니터링할 포드를 선택할 수 있게 해주는 "로컬 컨텍스트" 옵션이 있다.참고로 기본 상태에서는 모든 항목이 표시되지는 않는다. 다 표시될 경우 너무 많을 수 있기 때문이다. 대신 다양한 플러그인에 따라 서로 다른 메트릭이 활성화된다. 예를 들어 DNS 호출을 추적하려면 DNS 플러그인을 활성화하면 된다. 모든 메트릭에는 클러스터 및 인스턴스 메타데이터가 포함되므로 레이블을 사용한 필터링과 보고를 통해 특정 대상 노드와 포드를 식별할 수 있다. 로컬 및 원격 컨텍스트 옵션은 소스와 대상을 추적하는 레이블을 추가한다.
레티나를 구성하기 위해서는 데이터의 프로메테우스 대상과 적절한 그라파나(Grafana) 대시보드도 설정해야 한다. 마이크로소프트는 깃허브와 레티나 리포지토리에서 샘플 구성을 제공한다. 기본 상태에서는 클러스터에 대한 네트워킹과 DNS 데이터가 표시된다. 프로메테우스에 데이터를 두면 다른 도구를 사용해서 레티나 데이터로 작업할 수 있다. 예를 들어 정책 에이전트에 데이터를 제공해 알림을 트리거하거나 특정 작업을 자동화할 수 있다.
레티나를 설치하고 프로메테우스와 그라파나를 구성했으니, 이제 기본값을 벗어나 YAML을 사용해 레티나 에이전트와 플러그인을 구성할 수 있다. 부가적인 메트릭 구성은 쿠버네티스 맞춤형 리소스 정의를 통해 이뤄진다.
쿠버네티스 네트워크 작업 측정
레티나는 패킷 수준에서의 지속적인 모니터링을 위한 도구는 아니다. 정책 기반 도구와 함께 사용해서 정상적인 작업에서 예외를 식별하지 않는 한 사용량이 많은 클러스터에서 많은 양의 데이터가 생성되기 때문이다.실제 환경에서는 실행 중인 클러스터에서 발생하는 문제의 근본 원인을 파악하기 위해 레티나를 사용하는 것이 아마 최선일 것이다. 노드가 상호 통신하지 못하는 상황일 수도 있고, 특정 서비스 상호작용에서의 지연으로 인해 오류가 의심되는 상황일 수도 있다. 여기서 진단을 위해 필요한 모든 데이터를 수집하는 하나의 명령으로 필요한 패킷 캡처를 트리거할 수 있다.
지속적인 운영은 주요 네트워크 문제에 대한 통계 정보를 제공하는 메트릭을 통해 보고된다. 프로메테우스를 사용해서 알림을 생성하고, 그라파나 대시보드로 다른 관측가능성 도구의 데이터와 함께 클러스터의 전체적인 성능에 대한 개요를 제공해서 이러한 메트릭을 관리할 수 있다.
레티나가 제공하는 유용한 메트릭 중 하나인 API 지연은 무시되는 경우가 많지만 클라우드 네이티브 개발에서는 서드파티 API를 자주 다루게 된다. 그 중에는 클라우드 업체의 플랫폼 서비스도 있고, 세일즈포스 또는 SAP 하나(Hana) 같은 필수적인 비즈니스 데이터 소스도 있을 것이다. 여기서 레티나의 API 서버 지연을 사용해서 서버 응답 시간을 추적하는 데 유용한 메트릭을 구할 수 있다.
이 데이터를 확보하면 API 제공업체와 함께 진단 프로세스를 시작해서 지연의 원인을 보다 쉽게 추적할 수 있다. API 액세스의 지연은 애플리케이션에서 중대한 장애 요소가 될 수 있는 만큼 이 데이터를 확보하면 더 안정적이고 응답성 높은 애플리케이션을 제공하는 데 도움이 된다.
성숙해지는 쿠버네티스 생태계
마이크로소프트는 레티나 기반 관측가능성 도구의 프리뷰 버전을 애저 쿠버네티스 서비스를 위한 네트워크 관측가능성 추가 기능으로 공개했다. 이 도구는 애저의 관리형 프로메테우스 및 그라파나와 함께 작동한다. 도구 문서에서 사전 구성된 메트릭 목록을 찾을 수 있지만 현재는 레티나 기능의 일부만 제공하며 노드 수준 메트릭만 사용할 수 있다.레티나와 관련해서 고려해야 할 중요한 사항은 레티나가 쿠버네티스에 대한 애저의 경험을 바탕으로 한다는 점이다. 기본적으로 캡처되는 메트릭은 애저 팀이 중요하다고 여기는 메트릭이다. 사용자는 세계에서 가장 크고 가장 활발한 쿠버네티스 환경을 뒷받침하는 지식을 기반으로 삼을 수 있다. 다른 메트릭이 필요하다면 자체적인 레티나용 eBPF 프로브를 구축하고, 이후 더 폭넓은 쿠버네티스 커뮤니티와 공유해야 할 것이다.
오픈소스의 성공을 위해서는 전문 지식의 공유가 필요하다. 마이크로소프트는 코드 베이스를 개방함으로써 레티나 개발자가 각자의 지식을 하나의 플랫폼으로 가져오도록 독려하는 한편 AWS, GCP 및 기타 대규모 쿠버네티스 운영 사업자가 각자의 네트워크 관련 교훈을 세계와 공유하기를 희망하고 있다. 쿠버네티스가 성숙해짐에 따라 레티나, 팔코 같은 eBPF 기반 도구의 중요성은 점점 커지고 안전하고 신뢰할 수 있는 클라우드 네이티브 애플리케이션을 대규모로 구현하기 위해 필요한 데이터를 제공할 것이다.
editor@itworld.co.kr