CKA(쿠버네티스) 자격증 취득 후기
안녕하세요. 아임웹 Foundation Squad에서 백엔드 개발을 하고 있는 이무원입니다.
오늘은 제가 최근에 취득한 CKA 자격증 후기를 공유 드리려고 합니다. 저처럼 CKA 자격증에 도전하시는 분들에게 조금이나마 도움이 되었으면 하는 바람입니다.
CKA 자격증이 뭔가요?
CKA(Certified Kubernetes Administrator) 자격증은 리눅스 재단(The Linux Foundation)에서 인증하는 쿠버네티스(Kubernetes) 관련 자격증입니다. ( 관련 문서 )
쿠버네티스 관련 자격증은 총 3가지가 있습니다.
CKA는 쿠버네티스 운영, CKAD는 쿠버네티스 개발, CKS는 쿠버네티스 보안과 관련된 사항을 인증하는 자격증입니다.
왜 취득했나요?
현재 아임웹은 모던 스택인 쿠버네티스 환경으로 인프라를 점차 변경하고 있는 과정인데요. 이에 따라 쿠버네티스를 제대로 이해하고, 이를 실무에 적용하기 위해 도전하게 됐습니다.
도움이 됐나요?
많은 도움이 됐습니다. AWS 자격증과 달리 CKA 자격증은 100% 실기입니다. 시험 준비 과정에서 셀 수 없이 쿠버네티스 관련 요소들을 만들고 부수고 해결하는 과정을 거치다 보니, 이제 웬만한 것들은 막힘없이 생성할 수 있을 것 같아요. 특히 도움이 된 부분 몇 가지를 추려봤습니다.
- 쿠버네티스를 짧은 시간에 깊이 있게 이해할 수 있었습니다.
- 쿠버네티스 클러스터 하나에 간단히 아임웹 서비스 하나만 띄운다고 하더라도, 그 클러스터 자체를 유지하기 위해서 수많은 요소들이 필요합니다. 예를 들면 다음과 같은 것들이죠. (api-server, etcd DB, controller, core dns, scheduler, network cni, kubelet, kube-proxy, containerd)
- AWS EKS는 관리형 서비스이기 때문에 위와 같은 요소들에 접근할 수 없습니다. 그래서 기존에는 그냥 개념적으로만 알고 있었습니다. 하지만 자격증을 준비하면서 저 요소 하나하나를 직접 설치하고 삭제하고 들어가 로그를 확인해 보면서, 그들의 역할과 클러스터의 흐름이 선명하게 그려졌습니다.
2. 하나의 서비스를 안정적으로 운영하기 위해 쿠버네티스를 어떻게 활용해야 하는지 알 수 있었습니다.
- 쿠버네티스는 하나의 텅 빈 상자 같습니다. 그리고 쿠버네티스는 거기에 채워 넣을 수 있는 것들을 많이 준비해 두었죠.
- 시험 문제의 까다로운 기준(가용성, 우선순위, 성능 등)들을 하나씩 해결하면서 그 요소 하나하나를 어떻게 활용하여 채워 넣을지에 대한 인사이트를 얻게 되었습니다.
3. 디버깅, 업그레이드, 복구 등 쿠버네티스를 운영할 때 겪게 되는 어려운 주제들에 접근하는 방식을 배웠습니다.
- 어떤 이슈가 발생했을 때, 그 이슈의 가능성 높은 원인들을 리스트업하고 진단하여 해결하는 과정에 대한 노하우를 얻을 수 있었습니다.
- 쿠버네티스의 업그레이드와 복구는 디버깅과 더불어 가장 많은 노력을 기울였던 부분입니다. 좋은 경험이 되었습니다.
시험은 어떻게 진행되나요?
100% 실기입니다.
- 보안 브라우저 형식의 VDI가 제공됩니다. VDI의 운영체제는 리눅스만 가능하며, ubuntu와 centos 중 하나를 선택할 수 있습니다. 그래도 최근에 변경되어서 GUI로 제공되고 있습니다. 들어가면 좌측에 문제가 나오고, 우측에서 터미널 창 하나를 열 수 있습니다. 그 터미널에서 문제를 해결합니다. 리눅스 명령어와 단축키에 익숙해야 합니다.
오픈북입니다.
- VDI 안에서 쿠버네티스 공식 문서와 블로그에는 들어갈 수 있습니다. 모든 것을 암기할 수 없기 때문에, 그곳에서 정보를 빨리 찾는 것도 연습해야 합니다. 또한 모니터는 1대만 사용할 수 있는데, 좌측에 문제 영역이 자리를 많이 차지해서 생각보다 글씨가 작을 수 있습니다. 가능한 큰 모니터 사용을 추천드립니다.
원격 시험만 가능합니다.
- 저는 시험장을 선호하지만 원격시험만 가능해서 당황했어요. 시험 공간에는 아무도 없어야 하고, 감독관이 웹캠으로 책상 아래와 마우스 패드 밑까지 꼼꼼하게 체크합니다.
시험시간은 2시간이고 문제는 17문제입니다.
- 생각보다 시간이 부족합니다. 쉬운 문제는 문서 없이 기계적으로 해결할 수 있게 연습이 되어있어야 어려운 문제에 시간을 충분히 할애할 수 있습니다.
실제 시험 전에 시험환경과 동일한 환경을 2회 제공해 줍니다.
- 그 환경은 killer.sh에서 제공되고 실제 시험보다 1.5배 정도 더 어려운 24개의 문제와 2시간 타임아웃이 세팅됩니다. 그리고 36시간 동안 세션이 유지되며 반복 테스트할 수 있습니다. 그런데 특이하게 각종 후기를 보면 이 killer.sh 문제가 불필요하다는 의견과 꼭 필요하다는 의견으로 나뉘는데요.
- 저는 꼭 필요하다고 생각합니다. 그 이유는
- 우리는 linux 운영체제의 단축키가 익숙하지 않습니다. 특히 Copy&Paste! 미리 익숙해지도록 연습해야 합니다.
- 실제 시험에서 어려운 문제들은 제 기억에 5문제 정도인데, 이는 killer.sh 의 문제들과 난이도가 유사합니다. 저는 killer.sh 문제들이 실제 시험 때 도움이 되었습니다.
문제 난이도별로 배점이 다르며, 100점 만점 중 66점 이상을 받아야 합격할 수 있습니다.
시험 내용은 어떤가요?
가장 많은 유형은 조건에 맞는 무언가를 만들라는 문제입니다.
- Pod, Deployment, PV, PVC, Ingress 등 요구하는 것들은 다양하며, 거의 모든 쿠버네티스 리소스가 그 대상입니다.
- 그런데 그 조건이 생각보다 까다롭고 복합적입니다. 예를 들면 deploy 하나를 생성하는데 다음과 같은 조건들을 붙이는 식입니다.
(조건 1) 파드에게 linux의 특정 권한을 부여하면서
(조건 2) 사이드카 컨테이너를 옆에 붙여서 로그를 표준 출력으로 보내야 하고
(조건 3) 파드가 노드들에 고르게 분포되는 것이 보장되어야 하고
(조건 4) 그 노드에는 다른 파드들이 들어오면 안 된다. - 따라서 많은 유형의 문제를 풀어보고, 그에 맞는 설정을 문서에서 빨리 검색하는 연습이 필요합니다.
다음으로 많은 유형은 클러스터의 특정 정보를 수집하라는 것인데요.
- 예를 들면 <특정 네임스페이스에 있는 파드들의 컨테이너 이미지를 파드 이름순으로 정렬해서 파일에 저장하라>와 같은 것들입니다.
- 문제 난이도는 낮습니다. 다만, 워낙 많은 요소들이 있다 보니 수동으로 일일이 확인하기는 어렵고 시간도 부족합니다. kubectl 명령과 리눅스 명령으로 원하는 정보들만 필터링 해내는 연습이 필요합니다.
디버깅 문제도 있습니다. 출제자가 어딘가를 망가뜨려 놓았는데, 그것을 찾아서 고치라는 요구입니다. 배점도 높고 난이도 역시 높습니다.
- 디버깅 대상은 인프라 영역뿐 아니라 서비스의 어플리케이션 영역까지도 포함됩니다.
- 예를 들어, <그냥 지금 사이트에 접속이 안 되는데 접속되게 해줘!> 라는 문제가 있다면 맨 처음 Ingress 부터 시작해서 Service, Network Policy, deploy, Pod 등 인프라 영역뿐만 아니라, 어플리케이션 영역의 DB 패스워드까지 하나씩 짚어봐야 합니다.
- 그리고 인프라 영역은 단순히 파드 수준이 아니라, 직접 문제가 발생하는 노드에 SSH로 들어가서 kubelet 프로세스 로그를 하나하나 확인하고, SSL인증서의 만료 일자를 확인하는 정도까지 해당합니다.
- 시간이 많이 소모되는 문제입니다. 이슈의 유형에 따른 가능성 높은 원인들의 리스트업을 미리 해두는 것이 좋습니다.
쿠버네티스 업그레이드와 ETCD DB의 백업 및 복구는 꼭 나오는 문제입니다. 저도 다른 후기에서 보고 알고 있었지만, 이렇게 시간이 오래 걸리는 문제가 진짜로 나올까 의심했는데 진짜로 나옵니다. 배점도 높아요.
- 업그레이드 문제는 단순히 버전업에서 그치는 것이 아니라 몇 가지 조건이 붙습니다. 예를 들면 다음과 같습니다.
(조건1) 업그레이드 간 특정 pod는 다운타임이 절대 발생하지 않게 하고,
(조건2) 업그레이드하는 김에 이번에 새로운 노드도 하나 같이 업그레이드 해서 클러스터에 연결하라 - 업그레이드는 물리적으로 시간이 오래 걸립니다. 특히 일부 명령은 하나에 5~10분도 걸립니다. 충분히 반복 연습해서 기계적으로 업그레이드를 진행할 수 있는 수준이 되어야 합니다.
- etcd 백업 및 복구는 다른 리소스에 비해서 많이 다루지 않아 낯설 수 있습니다. 그리고 etcd의 유형에 따라서 해결 방법이 달라지기 때문에 까다롭습니다. etcd가 쿠버네티스 클러스터의 일부인 파드로 존재할 수 있고, 아예 별도의 서버에서 쿠버네티스와 분리되어 존재할 수도 있습니다. 그리고 그 분리된 etcd 서버가 한 대가 아니라 여러 대이면서 자체 클러스터를 이루고 있는 경우도 있습니다. 각각 경우의 백업 및 복구 연습을 해 보시길 추천드립니다.
그 외 꿀팁이 있다면?
시험을 응시할 테스트 기기는 Compatible 체크 이후 최신버전의 운영체제로 업그레이드를 하지 않는 것이 좋습니다.
저는 사실 10월에 CKA 시험을 한번 응시했었는데요. 그때 정상적인 테스트를 진행하지 못해 시험을 중단하고 이번에 다시 응시하게 됐습니다. 그 이유는 시험보기 며칠 전에 업데이트한 MacOS sonoma 14.1.1 버전과 시험을 위해 제공된 보안 브라우저가 충돌을 일으키는 문제가 있었기 때문입니다. 브라우저가 안 되다 보니까 감독관과 채팅도 끊겨서 미국에 전화했던 기억이 있네요.
시험 준비는 다른 후기들을 봤을 때 특정 udemy 강의를 추천하시더라구요. 저 역시 그 강의로 시험 준비를 했고, 강의 구매는 아임웹에서 지원받았습니다. 이 강의와 제공되는 killer.sh 문제들만 다 소화를 해도 시험 범위는 충분히 커버 될 것이라고 생각합니다. ( 강의 링크 )
가격은 글 작성일 기준으로 확인했을 때 $395네요. 할인 쿠폰을 얻을 수 있는 곳이 여러 곳 있다고 하니 한번 찾아보시는 것도 좋을 것 같습니다. 저도 할인받아 결제했습니다.
마무리
혹시 CKA 자격증 도전을 마음먹으셨다면 응원합니다.
꼭 합격하시기를 바랍니다. 긴 글 읽어주셔서 감사합니다.