내용 요약

카카오에서는 사내 제품인 DKOS 를 이용하고 있고, 쿠버네티스 서비스를 제공하기 위해 일련의 과정(VM 생성, 쿠버네티스 클러스터 구축, CNI 등 managed pod 생성) 을 수행 해줘야 함

  • 초기에는 부담이 되었기 때문에 직접 자동화 하기보다는 프로비저닝 툴을 사용하기로 결정함

프로비저닝 툴로는 1) 안정성 2) 앤서블을 통해 단일 작업으로 다수 노드 제어 가능 3) VM 생성 이후 작업들을 자동화 할 수 있다는 장점으로 kubespray 를 선택

운영하면서 느낀 아쉬운 점

  1. 보안 (원격 처리를 위한 SSH 접근에 대한 보안 취약점 존재 가능)
  2. 의존성 (앤서블, 파이썬 등의 구성요소의 의존성 가짐)
  3. 설치 시간 (OS 설치부터 managed pod 설치까지 약 7~8분 소요 -> 장애 시에는 다소 긴 시간) 및 유지보수

→ 위와 같은 아쉬운 점으로 인해 kubespray 를 사용하지 않고, 직접 프로비저닝을 자동화하기로 결정

데이터 플레인 프로비저닝 자동화

잘 변경되지 않는 정적 데이터는 VM Image 로, 동적 데이터는 cloud-init 스크립트로 구성함으로써 1) 신속하고 2) 경량으로 외부 툴에 의존하지 않고도 프로비저닝을 자동화 할 수 있었음

  • 프로비저닝 순서: VM 이미지 생성 → cloud-init 스크립트와 함께 VM 생성 요청 → VM 생성 → cloud-init 스크립트로 동적 데이터 처리 → control plane 에 노드 조인
  • 정적 데이터: 컨테이너 런타임, 쿠버네티스에 필요한 실행파일, 커널/OS 파라미터와 같은 데이터
  • 동적 데이터: 인증서와 같은 데이터

느낀점

  1. 지금까지는 주로 매니지드 서비스를 이용하여 쿠버네티스 클러스터를 구축하였기 때문에 쿠버네티스 프로비저닝 툴에 대해 깊게 고민해본 적이 없었는데, 해당 발표를 통해 실제로 프로비저닝 툴을 사용해본 실무자 분의 경험과 생각을 들을 수 있어서 좋았음
  2. 개인적으로 쿠버네티스 클러스터를 구축해 볼 때는 매니지드 서비스를 사용하지 않고 직접 구축 해볼 생각이었기 때문에 kubeadm 과 같은 툴을 고려 했었는데, 해당 영상을 통해 툴을 사용하지 않고 직접 자동화 하는 방식도 고려해봐도 좋겠다는 생각이 들었음.