쿠버네티스, 최신 버전에서 클라우드 공급자 코드 제거

쿠버네티스 1.31 버전이 최근 공개됐다. 최신 버전의 가장 큰 변화는 클라우드 공급자 통합 코드의 완전한 제거였다. 쿠버네티스를 더 공급자 중립적 플랫폼으로 회복하려는 시도다. 이제 아마존웹서비스(AWS), 구글클라우드, 마이크로소프트 애저, 오픈스택, VM웨어 V스피어 등을 쿠버네티스에 통합할 때 외부 플러그인을 활용해야 한다.

지난 5월 쿠버네티스 개발팀은 ′쿠버네티스 역사상 가장 큰 마이그레이션’이라 묘사하면서 기본 코드에 포함돼 있던 클라우드 공급자 통합을 제거한다고 발표했었다.

쿠버네티스에서 클라우드 공급사의 코드를 기본 포함하면 주요 서비스의 인프라를 편리하게 통합할 수 있다. 하지만, 클라우드 공급자의 수가 늘어나면서 모든 사업자의 코드를 추가하면 유지보수 부담이 커지고, 코드의 복잡성이 기하급수적으로 늘어난다. 무엇보다 특정 기업에 구애받지 않는 중립적 플랫폼이란 기본 개념을 훼손한다는 문제가 있다.

이에 개발팀은 2018년 기본 제공 클라우드 공급자를 제거하는 제안(KEP-2395)을 내놨다.

AWS, 구글클라우드, 애저, 오픈스택, V스피어 등이 제거돼야 했는데, 기본 제공 통합에 의존하는 중요 코드 경로가 많았기 때문에 오랜 작업을 거쳐서야 마무리될 수 있었다. 개발팀은 이를 위해 처음부터 4개의 서브시스템을 새로 구축했다. 새로운 서브 시스템은 클라우드 컨트롤러 매니저, API 서버 네트워크 프록시, 쿠브렛(kubelet) 자격 증명 공급자 플러그인, 컨테이너스토리지인터페이스(CSI)를 이용한 스토리지 마이그레이션 등이다.

개발팀의 이런 노력으로 쿠버네티스에서 약 150만 라인의 코드가 제거됐고, 핵심 구성 요소의 바이너리 크기는 약 40% 줄었다.

클라우드 공급자 코드 제거 작업은 점진적으로 시행돼 이론상 파괴적 문제는 일으키지 않는다. 쿠버네티스 1.26버전에서 오픈스택이 제거됐고, AWS기 1.27 버전에서 제거됐다. 작년 쿠버네티스 1.29 버전에서 클라우드 공급자 통합에 대한 새로운 방법이 안내됐다.

쿠버네티스 외부 클라우드를 통합하려면 ‘클라우드 컨트롤러 매니저’로 마이그레이션하면 된다. 클라우드 컨트롤러 매니저는 클라우드 API와 직접 상호 작용하는 kube-controller-manager 및 kubelet 내 기능을 대체한다. 이 필수 요소는 노드를 실행 중인 클라우드 지역 및 구역을 나타내는 메타데이터 레이블과 클라우드 공급자에게만 알려진 IP 주소를 적용해 노드를 초기화하는 역할을 한다. 또한 로드밸런서 유형의 서비스에 대한 클라우드 로드밸런서를 프로비저닝하는 서비스 컨트롤러를 실행한다.

쿠버네티스의 클라우드 컨트롤러 매니저 개념도

쿠버네티스 1.31 버전은 새로운 안정화, 베타 및 알파 기능을 포함한다. 45개 개선 사항으로 구성됐다.

1.31 버전의 테마는 엘리(Elli)다. 개발팀은 “엘리는 귀엽고 명량한 강아지로, 따뜻한 마음씨와 멋진 선원 모자를 쓰고 있다”며 “이는 거대하고 다양한 쿠버네티스 기여자 가족에게 장난기 어린 인사를 전하는 것”이라고 설명했다.

글. 바이라인네트워크
<김우용 기자>yong2@byline.network

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다