IT/Kubernetes

[Kubernetes] CKA (Certified Kubernetes Administrator) (v1.19 기준) 시험 후기

wookiist 2021. 1. 16. 12:46

3줄 TL;DR

- 시험 구매는 할인을 많이 할 때..

- 시험공부는 Udemy에서...

- Imperative 명령어는 사드세요... 제발...

 

후기 및 시험 준비 과정

지난 20년 12월 31일, 작년의 마지막을 Kubernetes와 함께 하겠다는 마음가짐으로 CKA 시험을 치르게 되었다. 비싼 시험 비용을 지불했기 때문에 꼭 붙어야 한다는 생각이 컸다. 특히 시험의 기준 버전이 v1.18에서 v1.19로 올라 v1.18에서 쓰인 후기들은 많이 봤지만 v1.19 후기가 별로 없어 v1.20으로 오르기 전에 빨리 쳐야 할 것 같은 압박감 아닌 압박감을 느끼고 있던 중이었다. 

 

내 경우, 20년 블랙 프라이데이가 끝나고 찾아온 Cyber Monday 때 할인을 받아, CKA+LF Training course를 60% 저렴하게 구입하였다. 2020년 기준 12월 9일에 구매했다.

종종 Linux Foundation에서 보내주는 프로모션 메일을 열어보는데, 할인 마지막 날이길래 급하게 구매했던 기억이 난다. 할인을 받아도 비싸니까, 꼭 할인을 받자ㅎㅎ

60% 할인을 받았는데도 22만원....

시험을 준비하기 위해서 여러 강의를 찾아보다가 Udemy에서 엄청 저렴한 가격에 판매하고 있는 CKA 강의를 구매해 수강하게 되었다.

v1.20으로 오르기 전에는 봐야 하니 빠르게 수강했다.

 

뒷광고 없읍니다.. 내돈내산으로 들었읍니다.. (애초에 광고를 받을 수 있을 정도로 영향력이 있지도 않지만..) 광고 환영합니다..ㅎ

사실 CKA 준비를 위한 거라, Kubernetes 전반에 대한 내용을 훑기만 할 줄 알았는데, 내 기준에서 그리 얕지 않게 충분한 설명을 곁들여 하나하나 익힐 수 있었다.

 

기존에도 Kubernetes를 사용해오기도 했고, 대학원 시절에는 Kubernetes로 연구 논문을 준비하기도 했어서 크게 난이도 있게 느껴지지는 않았지만, Security 파트와 Network Policy, Ingress 파트는 평소에도 궁금해하던 쪽이라 꼭 듣고 싶었는데 궁금증을 해결할 수 있었다. 

무엇보다 가성비가 정말 대박이다. 18시간짜리 고오급 강의를 저 가격에 들을 수 있다는 게 정말 놀라웠다.

(고마워요 뭄샤드 형..)

 

Udemy CKA 코스에서는 강의 + Practice Test의 형태로 공부를 할 수 있다. Practice Test는 직전 강의에서 배웠을 내용을 터미널 환경에서 직접 실행해보며 실습 공부를 할 수 있도록 해준다. 그리고 마지막에 제공되는 Lightening Lab과 Mockup Test는 실제 시험 형식과 유사한 편이니 반드시 여러번 풀어보고 명령어나 작업 순서, 문서 검색 등에 익숙해질 때까지 익히도록 하자.

 

또, Mockup Test를 하면서, Kubernetes Docs를 일부러라도 찾아보는 습관을 들이는 게 좋다. 

 

나는 몇 가지 뻔한 블루프린트(PV, PVC, NP, Ingress 등)를 바로 찾을 수 있게 북마크를 해두었다.

 

몇몇 분들은 북마크를 누르기보다는 그냥 docs에서 검색어로 검색을 하는 게 훨씬 빠르다고 하시긴 하시는데, 내 경우 바로 카피&페이스트 할 수 있는 블루프린트를 검색어로 찾기보다는, 버튼 하나 눌러서 바로 이동하는 게 훨씬 편했다. 

 

이렇게 시험과 비슷한 환경에서 꾸준히 연습하고 익숙해지면 시험을 치를 준비는 끝났다.

 

시험을 치르기 위해 Linux Foundation Portal에서 시험 일정을 예약했다. 시험 일정을 예약하는 페이지의 반응속도가 매우 느린 편이니 인내를 가지고 천천히 수행하자. 

 

우선 시험 기준 시각을 KST로 변경하고, 원하는 날짜와 원하는 시각을 선택하면, 그 시간대에 가능한 일정이 뜬다. 클릭해서 예약하면 된다.

 

시험 예약이 끝나면 시험을 치를 장소가 필요한데, 회사까지 가기는 좀 멀어서 집 근처 스터디 룸의 4인실 방을 예약했다.

코로나라 그런지 꽤나 저렴했고, 환경도 깔끔하고 정리가 잘 되어 있어서 좋았다. 안정적인 네트워크와 방음, 그리고 깨끗한 환경을 제공하는 곳이면 가능하다. 

 

벽에는 글 등이 써져있으면 안되고, 그림도 없는 것이 좋다고 하니 참고하자. (내 경우에는 벽 한쪽에 그림이 붙어 있긴 했는데, 이걸 문제 삼지는 않으셨다)

 

이렇게 시험 장소까지 예약을 했다면 이제 시험 당일까지 잘 준비하는 일만 남았다!

 

시험 당일

시험 환경 세팅

시험 시각보다 45분정도 일찍인 10시에 스터디 룸에 도착했다. 일부러 10시 45분에 시험을 예약해뒀고, 10시 30분까지는 주변 정돈, 시험 환경 세팅 등을 마쳤다. 화장실도 미리 다녀왔다. 시험 보는 와중에 화장실을 다녀올 수 있기는 하지만 시간을 멈춰주지는 않기 때문에 꼭 시험 전에 해결하고 오는 것이 좋다.

 

10시 30분이 되자 Launch Exam 버튼이 활성화됐다. 시험 시작 15분 전부터 시험 사이트로 입장이 가능하다. 그리고 입장을 해서 원격에 위치한 감독관 분과 Live Chat을 통해 준비를 진행하면 된다.

신분증

신분증의 경우, 나는 현재 전문연구요원을 하고 있어서, 여권을 따로 발급받기 귀찮아 그냥 우리나라 주민등록증을 보여줬다.

그리고 혹시 모르니 영어 이름(본인이 작성한 이름)과 한국어 이름이 같이 있는 체크카드도 가져갔다. 사실 둘 다 인쇄되어있는 것은 아니었고, 영어 이름만 인쇄되어 있다. 한국어 이름은 사인란에 기재한 것을 보여주었다. 또박또박 써두길 잘했다. 

시험 환경 점검(feat. 웹캠)

주변을 웹캠으로 보여주어야 하는데, 나는 맥북을 가져가서, 맥북을 들고 온 방을 이리저리 휘저었다. (밖에서 보았다면 굉장히 이상한 사람처럼 보였을 것 같다.)

외장 키보드나 마우스 등을 가지고 간다면 해당 키보드 밑에도 보여달라고 한다.

나를 담당했던 감독관 분은 천장과 바닥, 그리고 책상 아래도 보여달라고도 했다. 그냥 보여달라는대로 보여주면 되니까 이건 크게 문제 되지 않을 것이다. 

책상 위에는 불필요한 물건이 있어선 안된다. 내 경우

 

맥북 / 외장 블루투스 마우스 / 외장 유선 키보드 / 팜레스트 / 맥북 충전기 / 스티커가 부착되지 않아 속이 투명하게 보이는 물병(삼X수 사서 스티커를 뜯어놓았다)

 

만 올려놓았다. 다른 후기에서 매직 트랙패드도 못 쓰게 했다는 글을 본 적이 있어서 팜레스트를 못 쓰게 할까봐 매우 조마조마했는데 다행히 큰 문제가 되진 않았다. 

추가로

시험을 시작하기 위해, 감독관 분이 "Step 1, Step 2, Step 3" 이런식으로 3단계로 구성된 행동 순서를 보내주실 텐데,  반드시 감독관 분의 지시 순서에 따르도록 하자. 1차 시험 때 내 멋대로 혼자 다했다가 시험 사이트를 껐다 다시 켜야 하는 상황이 발생했다... 당시 감독관 분이 매우 답답해하셨다.. 모든 문장을 대문자로 보내셨던 기억이 난다 ㅎㅎ

시험 진행

위 모든 스텝을 밟고 마지막으로 시험을 시작하겠냐는 감독관 분의 질문에 YES YES YES 라 대답하면, 아래 그림과 유사(?)한 화면이 열린다. 사실 터미널이 열리기 전에 컨텍스트 변경과 관련된 팁을 주는 화면이 먼저 켜진다. 아마 그 화면에서 잘 찾아보면 터미널을 켜는 버튼이 있을 것이다.

 

시험 진행 화면

대충 기억나는 건 이정도.. 열심히 그렸어요. ㅎㅎ 무단 이용은 불가능합니다!

해당 탭에 위와 같은 화면이 열렸다면, 추가로 딱 하나의 탭을 더 켜도 된다. 해당 탭에서는 Kubernetes 공식 docs 사이트, github 등에 접근할 수 있게 해준다.

따라서 오픈 북과 크게 다르지 않지만 내가 찾아야 하는 내용이 무엇인지, 그리고 그 내용을 찾기 위해선 어떻게 검색해야 하고, 찾은 내용을 어떻게 활용할 것인지에 대해서는 전적으로 시험자의 능력에 달렸다. (문서를 활용하는 연습을 많이 해보라는 의미..)

 

또 시험 진행 관련 메뉴에는 메모장이 있는데, OS에서 제공하는 메모장이 아니라, 시험 환경에서 제공하는 메모장만을 활용해야 한다. 애초에 시험과 무관한 애플리케이션이 켜져있는 경우 감독관 분께서 끄도록 지시한다.

 

해당 메모장을 잘 활용하는 것도 굉장히 중요했던 것 같다.

 

Tips

이번 시험을 합격하기까지 주요했던 내용을 팁으로 정리해보았다.

사실상 CKA는 Kubernetes 시험이라기보다는 Kubectl 활용 능력 시험이라고 봐도 무관할 정도로 Kubectl 로 해결할 수 있는 문제가 많다.  kubectl Cheat Sheet | Kubernetes 를 잘 활용하자.

Imperative Commands로 해결할 수 있는 것들은 반드시 Imperative로 해결하는 게 좋다. 일일이 Delcarative 형식으로 블루프린트 작성해서 apply -f  명령어로 해결하는 건 시간 소요가 크다. 빠르게 해결할 수 있는 건 빠르게 해결해야 한다.

시험이 시작됨과 동시에 17문제 모두를 빠르게 순회하며 배점을 확인하여 메모장에 적어두자. 그리고 가장 낮은 배점인 문제들부터 돌파하자.

120분으로 시간이 줄었다. 문제 수도 줄었다고는 하지만 몇몇 군데에서 막히기 시작하면 시간 관리 실패로 시험을 망칠 위험성이 있다. 따라서 가장 낮은 배점의 문제들부터 빠르게 해결해두는 것이 좋다. 

풀다가 막히면 바로 넘어가자.

해결해야할 문제가 적다면 모르겠지만, 아무리 쉬운 문제라고 해도 한 문제를 계속 붙잡고 있게 되면 나머지 문제를 풀 시간이 부족해진다. 다른 문제를 하나라도 더 맞힐 수 있도록 빠른 스킵도 중요하다고 생각한다.

현재 내가 어떤 컨텍스트에서 문제를 해결하고 있는지 항상 확인한다.

CKA 시험을 치를 땐 hk8s, wk8s, k8s 등의 다양한 컨텍스트가 주어진다. 그리고 문제마다 해당하는 컨텍스트가 다르기 때문에 문제가 지시하는 컨텍스트로 이동하여 해결하여야 한다. 다행히 컨텍스트를 변경하는 명령어는 카피해서 쓸 수 있도록 주어지니 올바른 컨텍스트에서 문제를 해결할 수 있도록 하자.

PV, PVC, Ingress 등의 블루프린트를 바로 확인할 수 있도록 북마크에 저장해두자. 특히 #부분까지 같이 저장해두면, 바로 블루프린트 위치까지 이동할 수 있다.

물론 블루프린트 작성 방법을 너무 많이 보거나 연습해서 바로 작성하실 수 있는 분들도 있겠지만, 아무리 그렇다고 해도 복붙보다 빠르기는 어렵지 않을까. 

요로코롬 이미 완성된 것이 있는데.. 굳이 새로 작성할 필요가 있을까.

예를 들어 pv를 생성하라는 문제가 있다면 다음의 사이트에서 바로 블루프린트를 얻어올 수 있다.

Configure a Pod to Use a PersistentVolume for Storage | Kubernetes

 

Configure a Pod to Use a PersistentVolume for Storage

This page shows you how to configure a Pod to use a PersistentVolumeClaim for storage. Here is a summary of the process: You, as cluster administrator, create a PersistentVolume backed by physical storage. You do not associate the volume with any Pod. You,

kubernetes.io

특히 # 이하 부분까지 저장해두면 바로 블루프린트 위치까지 이동할 수 있으니 참고하자.

ETCD 백업, 복원 명령어는 반드시 익혀두자. 반드시. 반드시. 반드시. 반드시. 제발.

이렇게 강조할 정도라면 굳이 더 말씀 안드려도 될 것 같다. 

# Backup
ETCDCTL_API=3 etcdctl \
--endpoints {endpoint url} \
--cert={etcd-client.crt} \
--key={etcd-client.key} \
--cacert={etcd-ca.crt} \
snapshot save etcd-backup.db

# Restore
ETCDCTL_API=3 etcdctl \
--endpoints {endpoint url} \
--cert={etcd-cert.crt} \
--key={etcd-key.key} \
--cacert={etcd-ca.crt} \
--data-dir={backup-dir-path} \
--initial-advertise-peer-urls={address} \
--initial-cluster={address} \
--name=${name} \
snapshot restore etcd-backup.db

또 클러스터 업그레이드 순서도 반드시 익혀두자. 업그레이드는 기본 노드에서 수행하는 게 아니라는 것도 잊지 말자!!!!!

이것도 굳이 더 말씀 안 드려도 될 것 같다. 

 

(1) node drain

(2) kubeadm upgrade

(3) kubelet upgrade

(4) kubectl upgrade

(5) node uncordon

 

대체로 이 순서를 따르게 된다. 중요한 점은 문제마다 업그레이드하라고 하는 대상이 다를 수 있으니 유의해서 문제를 읽자. 그리고 내 경우 엉뚱한 곳에서 업그레이드를 수행하려 해서 미궁에 빠진 적이 있다 ㅋㅋㅋㅋ. 어느 곳에서 수행해야 하는지 명확하게 파악하자.

복잡한 파일 이름이나 오브젝트의 이름은 직접 쓰지 말고 문제에서 복사하자. 문제에서 이름을 클릭하면 클립보드로 복사가 된다.

오브젝트를 생성하거나 변경할 때, 엉뚱한 이름으로 접근하게 되면 문제를 다 풀고 나서도 틀리게 된다. 문제 화면에서 파일의 이름이나 오브젝트의 이름 등은 클릭하면 자동으로 클립보드에 복사가 되도록 만들어져 있다. 그러니 꼭.. 활용하자.

 

마지막으로 자격증 자랑입니다 ㅎㅎ

붙었다. CKA

 

사실 자격증의 Date of Completion을 보면 알 수 있지만, 20년 12월 31일에 치른 CKA는 합격선인 66점에서 2점 모자라 떨어졌다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

너무 긴장하고 봤던 기억이 있어, 바로 그다음 주 토요일인 21년 1월 9일에 다시 시험 예약을 했고, 다행히 이번엔 무난하게 통과할 수 있었다! 다른 건 몰라도 진짜 긴장만 안 해도 무난하게 통과할 수 있을 것이다.



CKA 준비하시면서 어려움이 있으시거나 궁금하신 점이 있으시면 댓글 달아주세요. 빠른 시간 내에 확인하고 답변드릴 수 있도록 하겠습니다 😃

단, 시험 문제를 직접적으로 물어보시는 것에 대해서는 답변드리기 어렵습니다 🥲

반응형