본문 바로가기

운영경험

EKS node이미지 BottleRocket 운영 경험 (2020.11.10 ~ 2020.12.03)

본 문서는 2020 2학기 졸업프로젝트 - 오픈소스 기여에서 BottleRocket을 운영한 경험을 문서로 정리한 것입니다.

운영 계기

금번 오픈소스 기여 프로젝트에서는 BottleRocket AMI 인스턴스를 운영해보고자 하였다. 이미 EKS용으로 제공하는 이미지가 있음에도, 새로운 AMI를 내놓은 만큼, 무언가 개선점이 있으리라 추정했기 때문이다.

이에 따라, 두 노드 중 하나는 BottleRocket으로 운영하고 리스크 회피를 위해 하나는 고전적인 이미지를 사용하였다

운영 결과

1. 자원 효율성 면에서 조금 더 나은 것으로 보인다.

 

하단은 기존 이미지, 상단은 BottleRocket 이미지다.

  • CPU : 3920m vs 4000m

  • 메모리 : 약 15GB vs 약 16GB

CPU는 아주 조금, 메모리는 800MB 가량 더 활용할 수 있음을 확인할 수 있다. CPU는 큰 차이가 없지만 메모리는 경우에 따라서 유용성이 클 수 있다. 스팟 인스턴스를 효율적으로 사용하고자 하는 등, 불가피하게 작은 인스턴스를 사용할 경우 이 정도 메모리 절감도 크게 다가올 수 있기 때문이다.

2. 자동 업데이트 서비스를 지원하고 있다.

https://github.com/bottlerocket-os/bottlerocket-update-operator

아마존은 해당 이미지를 사용하는 best practice로 bottlerocket udpate operator를 설치해 노드 업데이트를 자동으로 반영할 것을 권장하고 있다. 이미지 버전 갱신은 보안 등 중요한 변화를 담고 있기 때문에, 이를 반영하는 것이 대단히 중요하다는 것이다.

그러나 이는 양날의 검이 될 수 있을 것으로 보인다. 이미지를 자동으로 업데이트 해준다는 점은 큰 이점이지만, 노드 이미지 갱신에 따라 기존에 사용하던 플러그인 등이 비활성될 수 있기 때문이다.

또한, 업데이트가 정상적으로 완료된 것인지는 알 수 없지만, 업데이트 이후 노드가 cordon된 것을 확인했다. 업데이트 중에는 필연적으로 재부팅을 동반하므로 필요한 점이지만, 업데이트 후에는 uncordon되어야 할텐데, 어쩐 일인지 이 절차가 자동으로 처리되지 않았다. 다만, 해당 노드에 위치하던 pod들은 떠 있는 상태로 추가 스케줄링만 막혀있었다.

따라서 해당 기능을 사용하는 것은 신중하게 생각할 필요가 있다.

Trouble Shooting

어쩐 일인지, 첫 부팅시 bottlerocket이 계속 종료되는 문제점이 있었다. 확인 결과, bottlerocket은 EKS에 참가하는 방식이 종전 이미지와 달랐다.

 

정상 처리를 위해 시작 구성에서 별도의 사용자 데이터를 입력해야했다.

'운영경험' 카테고리의 다른 글

Spot Instance 운영 경험 (2020.11.10 ~ 2020.12.03)  (0) 2020.12.03