한 달 전, Certified Kubernetes Administrator (CKA) 시험을 치렀고, 두 번의 도전 끝에 마침내 합격할 수 있었다. 이번 경험은 단순한 자격증 취득을 넘어, Kubernetes의 핵심 개념과 운영 방식을 깊이 이해하는 중요한 계기가 되었다.
처음 CKA를 준비하게 된 이유는, PaaS 환경에서의 애플리케이션들이 점점 늘어나고 있었기 때문이다. Kubernetes는 이제 거의 필수 기술처럼 자리잡았고, 언젠가 꼭 필요할 것이라는 생각으로 학습을 시작했다. 하지만 초기 설정 과정에서부터 여러 어려움에 부딪혔다. 설치 중 발생하는 오류들을 해결하기 위해 필요한 개념적 이해가 부족했고, Kubernetes의 구조와 원리를 제대로 파악하지 않고는 문제를 해결할 수 없다는 걸 절실히 느꼈다.
이러한 경험을 통해 CKA가 단순히 자격증 이상의 의미를 지닌다는 것을 깨달았다. CKA는 Kubernetes의 구조와 원리를 체계적으로 이해하고, 실제 운영 환경에서 적용할 수 있는 능력을 검증하는 시험이었다. 그래서 본격적으로 CKA를 준비하기로 결심했다.
1. 시험 준비 과정
1) 유데미(Udemy) 뭄샤드 강의
Udemy: Certified Kubernetes Administrator with Practice Tests
많은 이들이 선택하는 대표적인 강의로, 일명 “인도형 강의”라 불린다. 한글 자막이 지원되는 영어 강의라 듣는 데 큰 어려움은 없었다. 이 강의는 Kubernetes의 전반적인 내용을 깊이 있게 다루지만, 양이 방대해 모두 수강하기엔 시간이 부족할 수 있다. 그럼에도 불구하고 각 세션마다 실습할 수 있는 환경을 제공해, Kubernetes 명령어에 익숙해지는 데 큰 도움이 된다. 실습은 KodeKloud 플랫폼에서 제공되며, 강의를 수강하면 무료로 실습할 수 있는 쿠폰이 제공된다.
CKA Certification Course – Certified Kubernetes Administrator | KodeKloud
필자 또한 강의를 전부 다 듣지는 않았지만, 실습 환경은 여러 번 반복하며 진행했다. 특히 Lightning-lab과 Mock-exam은 실제 시험과 유사한 문제들로 구성되어 있어, 실제 시험 준비에 큰 도움이 되었다.
2) 따베씨 유튜브 강의
유튜브: 따배씨 Kubernetes 강의
자격증 커뮤니티에서 추천받아 접하게 된 이선미 강사님의 따배씨 강의는 자신감을 높이는 데 크게 기여했다. 기초부터 실전 문제까지 다루고 있으며, 총 30개의 모의고사 형식 문제와 함께 풀이를 제공한다. 특히 아래 세 가지 강의는 실전에서도 큰 도움이 되었다.
• ETCD Backup & Restore
• Kubernetes Upgrade
• Network Policy
이 강의들은 어려운 개념을 명확하게 설명하며, 위 3개 강의는 필자가 실제 시험에서 풀게 되었던 문제들이다.
3) 인프런 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
인프런: 쿠버네티스 어나더 클래스
이 강의는 CKA에 직접적으로 관련된 강의는 아니지만, Kubernetes의 개념을 처음 접했을 때 큰 도움이 되었다. 강의를 통해 Kubernetes의 전체적인 구조와 각 컴포넌트의 동작 원리를 익히는 데 많은 도움을 받았다. 특히, 트러블슈팅을 통해 설치 및 구성 과정에서 발생하는 문제들을 해결하는 방법을 배울 수 있었다.
4) killer.sh
CKA 시험을 결제하게 되면 제공되는 2번의 모의고사 시험이다. Linux Foundation 에서 접수한 CKA 시험 디테일 페이지 에서 exam 버튼을 통해 시험을 진행할 수 있다.
2. 시험 후기
필자는 시험을 두번이나 치루게 되었다. 첫번째 시험은 추석첫날 (9/16) 에 진행하였다.
시험은 휴일인 관계로 집 서재방에서 시험을 치뤘으며 Macbook 으로 시험을 진행하였다.
시험을 볼때 준비할 것은 크게 다음과 같다.
1. 시험을 볼 노트북 또는 데스크톱
2. 외부인의 출입이 없는 조용한 공간
3. 시험 환경을 감독관이 볼수있는 카메라
4. 주변 소리가 들리는 마이크
보통 카메라와 마이크는 노트북을 사용할 경우 노트북에 내장된 장치를 사용하는게 가장 편하다.
필자는 여러 시험 후기글을 본 결과 원래 시험에서는 듀얼모니터를 사용하면 안되지만 노트북 화면은 닫고 사용중인 큰 화면 모니터로 듀얼모니터로 설정하여 시험을 치루게 되었다. 시험 감독관이 처음에는 노트북이 왜 있냐고 물었지만 자초지종 설명을 하여 모니터 하나만 사용한다고 설명하니 사용해도 된다하여 쓰게 되었다.
이때 캠은 맥북의 카메라를 사용할수 없어 이전에 사용하던 logi 웹캠을 사용하였다. 모델은 C922 을 사용하였다.
시험은 PSI 환경에서 진행되며 해당 환경 툴을 설치후에 시험환경 점검을 진행한 후 감독관의 여러 지시에 따라 시험장소를 체크한 후에 시험이 진행된다.
PSI 환경은 Linux Foundation 에서 제공해주는 Example 을 통해 확인할수 있다.
https://docs.linuxfoundation.org/tc-docs/certification/lf-handbook2/exam-user-interface/examui-performance-based-exams
linux 환경의 서버를 한개 받게되며 해당 서버는 k8s가 구성되어 있으며 firefox 를 통해 k8s docs 페이지를 검색할 수 있다.
첫날 시험은 점심 12:00 에 시작하였는데 해당 시험에서 아주 큰 곤욕을 겪게 되었다.
시험 볼때는 몰랐는데 마이크를 웹캠 마이크를 사용했는데 웹캠마이크가 생각보다 많이 민감했던 것이다.
평소 습관으로 문제가 잘 안풀리거나 혼자말로 문제를 읽으면서 시험을 진행했는데 일정 데시벨 이상 소리가 들릴경우 PSI 환경에서 소리를 내지말라는 경고와 함께 3번 이상 경고를 받을시 시험이 종료될수 있다는 경고 문구가 계속 발생했다.
그런데 아뿔싸.. 2번 경고를 받고 난 이후에 8번 문제쯤 풀던상황에서 문제가 잘 풀리지 않아 혼잣말로 "어 왜이래" 이 한마디와 함께 3번째 경고를 받음과 동시에 시험이 종료된다는 문구와 함께 나는 30분만에 시험을 끝내야만 했다.
너무 짜증나고 어이가 없었는데 3번째에 이렇게 바로 시험을 종료시킬줄은 몰랐지만 정말 칼같이 시험이 꺼지더라.......
너무 어이가 없고 화나서 시험 문의게시판에 못하는 영어를 번역기를 돌려가며 한번만 봐달라고 구구절절 문의글을 적었다..
총 2번의기회가 주어지는데 어이없게 1번을 날렸다 생각하니 안그래도 가격도 비싼 시험인데 혹시나 떨어질까 너무 불안하고 초조했다.
문의를 적고 다음날.. 해당시험은 취소된 상태로 처리되었고 (원래 실격되면 취소처리가 되는지는 모르겠다.) 아직 두번의 기회가 남았으니 스케쥴을 다시 잡으라는 메일을 받았다.
정말 다행이다 생각과 동시에 고민하지 않고 바로 수요일 저녁에 시험을 신청하였다. 시험은 현재시간 기준 24시간 뒤 시간부터 스케쥴이 가능하다.
시험에 나온 문제들을 복기해 보면 다음과 같다.
- pv 만들기
- networkPolicy 설정하기 (A 네임스페이스를 갖는 pod들만 B 네임스페이스로 접근 가능하도록) *
- 주어진 조건으로 pvc 생성하고 pod 에 할당한 후에 pvc 메모리 사이즈 증가시키기. *
- pod 로그에서 특정 문구 추출하기
- 전체 노드에서 NoSchedule Taints 조건 갯수구하기
- deployment scale up
- worker node drain
- etcd 백업후 문제에서 주어진 파일로 복원 *
- 특정 서비스 /hello url 로 ingress 만들기
- 특정 label 있는 노드로 실행되도록 파드만들기
- 멀티 컨테이너 생성하기
- 동작중인 deploy 에서 nginx 컨테이너를 http 이름으로 expose 한 이후에 http 를 expose 하는 http-service 서비스만들기 (뭔소리인지 모르겠음) *
- 사이드카 패턴 *
- 워커노드 NotReady 원인찾기 - (kubelet inactive 상태였음)
- 특정 label 갖는 pod 들을 cpu 순으로 정렬해서 파일저장
- cluster role, clusterrolebinding 만들고 serviceaccount 연결하기
- master node 만 업그레이드 1.30.0 -> 1.30.1
총 17문제가 나왔으며 난이도는 문제마다 많이 상이했지만 간단하게 pod 를 생성하는 것부터 node upgrade 와 같이 어려운 문제까지 다양하게 나왔던 것 같다.
이중에서 어려웠던 케이스를 꼽자면 2. networkPolicy 설정과 3. pvc 동적으로 변경하기, 8. etcd 백업 등이 있다. (지금도 12번 문제는 이해가 가지 않는다.)
networkPolicy 문제의 경우 연습했던 예제는 특정 pod로 특정 네임스페이스를 갖는 pod 로 ingress 설정을 하는 문제만 연습하다가 실전 문제에서는 모든 pod에 대하여 특정 네임스페이스의 파드로만 egress 설정을 하는 문제가 주어졌다.
문제 연습시에는 matchLabels 를 통해 특정 label을 갖는 정보에 대해서만 다뤄봤는데 모든 pod 에 대해 설정하라는 설정이 다소 생소했으나 docs 에 주어진 값들을 확인하면서 아래와 같이 설정하면 모든 pod에 대해 설정이 되는것을 알게 되었다.
https://kubernetes.io/docs/concepts/services-networking/network-policies/#allow-all-egress-traffic
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-egress
spec:
podSelector: {}
egress:
- {}
policyTypes:
- Egress
위 설정처럼 podSelector 값에 빈 객체값을 주게 되면 모든 pod에 대해 설정이 되는것을 이번 시험을 통해 배울수 있었다.
이처럼 간단하지만 2시간이라는 짧은 시간안에 모든 문제를 완벽하게 풀어 나간다는 긴장감에 풀다보니 두시간이 생각보다 짧았다.
CKA 시험을 통해 k8s 를 실무에서 아직은 사용하지 않지만 이번 시험을 통해 k8s를 간접적으로 경험해 볼수 있는 시험이었고 해당 툴을 다루는 숙련도를 작게나마 기를수 있는 시험이었다.
시험결과는 시험 종료후 24시간 뒤에 발표되며 100점 만점중 66점 이상을 얻으면 시험에 통과할수 있었다.
생각보다 아슬아슬한 점수로 통과해서 무척이나 다행이다 느낀다. 앞으로는 CKA 를 넘어서 k8s 관련된 자격증(CKAD, CKS) 를 포함하여 AWS 자격증(SOA, SAA) 자격증도 도전해 볼 예정이다.
'IT 기술 > k8s' 카테고리의 다른 글
[cka] NetworkPolicy (0) | 2024.09.17 |
---|---|
[cka] killer.sh 문제풀이 - (6-14) (1) | 2024.09.15 |
[cka] killer.sh 문제풀이 - (1-5) (2) | 2024.09.14 |
[cka] TroubleShooting - Worker Node Failure (0) | 2024.08.25 |
[cka] TroubleShooting - Control Plane Failure (0) | 2024.08.25 |
댓글