Intro
저는 클라우드 엔지니어로 최근에 AWS의 EKS기반 인프라를 구축하고 운영을 하였는데요. 그중에 컨테이너 오케스트레이션인 쿠버네티스를 공부하지 않을 수가 없었습니다. 직접 구축과 운영을 하면서 내가 얼마나 잘 알고 하는지 확인해보고 싶었고 그이유로 CKA를 독학하여 합격하였습니다. 독학은 어떤 강의로 진행하였고, 시험은 어디서 어떻게 진행되는지 또 어떤 문제들이 나오는지 그 절차를 공유해드리고자 합니다.
CKA 자격증 이란?
CKA는 Certified Kubernetes Administrator의 약자로 컨테이너 관리도구인 Kubernetes의 관리 역량을 검증해주는 자격증입니다.
주관은 CNCF를 리딩하고 있는 리눅스재단(Linux Foundation)에서 하고 있으며, CNCF(Cloud Native Computing Foundation)는 컨테이너 생태계를 확산하기 위해 2015년에 만들어진 리눅스 재단의 산하 단체입니다.
CNCF는 구글에서 시작한 오픈소스 프로젝트인 Kubernetes를 시작으로 컨테이너 환경에서 많이 쓰이는 프로젝트들을 관리하고 있습니다.
CKA 시험 상세 (21년 최신 커리큘럼 기준)
- 시험 시간 : 2 시간
- 시험 유형 : Hands-on Practical Lab(온라인 시험)
- 시험 가격 : $375 (2021.07.02부터 가격 인상됨)
- 쿠버네티스 버전 : v1.21
- 시험 합격 : 100점 만점에 66점 이상
- 시험 유효기간 : 3년
- 시험 가능 회수 : 2회 (2번의 기회가 주어집니다)
- 시험 문제 개수 : 17 문제
CKA강의 수강
CKA에 관련된 이론 및 실습 강의는 Udemy에서 제공되는 강의 certified Kubernetes Administrator (CKA) with Practice Tests를 추천드립니다.
Udemy추천 강의 링크
추천 이유는 우선 강의 커리큘럼이 엄청 탄탄합니다. 목차를 보면 쿠버네티스와 관련된 IT 기본 배경 지식에 대한 강의도 포함되어있고, 대부분의 강의에 애니메이션이 들어가 있기 때문에 이해하기도 더 쉽습니다. 또한 kodekloud에서 제공해주는 실습을 무료로 등록할 수 있기 때문에 시험 보는데 많은 도움을 받을 수 있습니다.
조금 아쉬운 점은 강의에 한글 지원이 안되며 영어 자막 또한 발음하는 대로 그대로 보이기 때문에 정확하지가 않습니다. 강의를 들으면서 별도의 구글링을 하며 들어야 합니다만 그림 설명이 대부분이기 때문에 조금만 익숙해지면 편하게 강의를 시청할 수 있습니다.
Udemy CKA 독학 정리 자료
강의를 들으면서 나름대로 정리한 자료입니다. 강의 내용 바탕으로 필요한 내용만 정리하였으므로 참고만 하시기 바랍니다.
CKA독학 정리 자료 바로가기
시험 신청
시험신청은 linuxfoundation 홈페이지에서 하면 되고, 결재 이후 12개월 이내에 일정을 등록하여 시험을 신청하면 됩니다.
시험 신청 및 쿠폰 정보 바로가기
결재를 완료하면 아래와 같이 체크리스트를 진행을 하는데 여기서 Verify Name에 여권 또는 카드에 있는 영문 이름으로 등록을 하면 되고, 마지막 Take Exam버튼은 시험 시작하기 15분 전에 활성화됩니다.
시험 전 알아두면 좋은 것들
시험 장소는 공공장소는 안된다
시험장소는 공공장소에서 보시면 안 됩니다. 저 같은 경우는 스터디룸에서 진행하였습니다.
시험 시간은 뒤로 30분 넉넉히 잡아야 한다
예를 들어서 시험시간을 2시에 잡았으면 대략적으로 15-30분은 시험에 필요한 준비사항을 체크하는 시간이기 때문에 실제 시험은 2시 30분에 시작한다고 보시면 됩니다. 따라서 혹시 스터디룸을 예약하실 예정이시면 뒤로 30분은 여유로 가져가시기를 추천드립니다.
신분증 준비는 여권 or 주민등록증 + 신용카드로
신분증은 여권이 있으면 여권을 준비하면 됩니다. 만약 여권이 없다면 주민등록증과 추가로 영문으로 기입되어있는 신용카드를 준비하면 됩니다.
웹캠은 꼭 필수가 아니다
별도의 웹캠이 필수로 있어야 하는 것은 아닙니다. 노트북에 있는 캠으로도 가능합니다.
Chrom 또는 Chromium 웹브라우저에서 시험을 본다
개인적으로는 크롬을 자주 사용하므로 시험도 크롬에서 진행하였으며, CKA시험에서 필요한 구글 번역 플러그인을 설치해두었습니다.
크롬 구글번역 플러그인 설치 바로가기
구글번역 플러그인이 필요한 이유는 문제가 영어로 나오는데 쉬운 단어라도 당황하면 해석이 잘 안될 때가 있습니다. 이때 아래 그림과 같이 우측 상단의 크롬 플러그인 버튼을 클릭하여 번역을 하여 시험을 진행하였습니다.
오픈북으로 시험을 본다
시험을 보는 터미널 창에서 추가로 탭 하나를 더 열 수 있으며 아래 URL 중 하나만 가능합니다.
따라서, 저는 별도의 쿠버네티스 북마크 폴더를 만들어 아래와 같이 정리해 두었습니다.
manifest파일을 모두 외워서 시험을 보는 것이 아니라 문서에 나와있는 예제를 가져와서 활용을 잘할 수 있으면 됩니다.
북마크 정리 팁
쿠버네티스 공식 문서를 들어가보면 각 주제마다 소제목이 달려있습니다. 아래 캡처와 같이 소제목에 마우스를 가져다 놓으면 링크 버튼이 생깁니다. 해당 버튼을 누르면 URL 가장 뒤에 #소제목 으로 소제목에대한 URL을 확인할 수 있습니다. 예시:https://kubernetes.io/docs/concepts/storage/persistent-volumes/#claims-as-volumes
이렇게 #소제목 까지 북마크로 저장해두면 해당 페이지와 찾고자하는 소제목으로 한번에 이동 할 수 있으므로 빠르게 찾을 수 있습니다.
제가 정리했던 북마크들 입니다. 북마크의 제목은 찾아가기 쉽게 커스텀 하시면 될 것 같습니다.
복사 붙여넣기
Ctrl+C & 및 Ctrl+V는 검사 터미널에서 지원되지 않습니다. 따라서 텍스트를 복사하여 붙여 넣으려면 아래와 같이 하면 됩니다.
- Mac: 복사 ⌘+C, 붙여넣기 ⌘+V
- Windows: 복사 Ctrl+Insert, 붙여넣기 Shift+Insert
참고로 시험을 보는 터미널 창 기능에서 복사 기능이 제공됩니다. 문제안에 있는 명명규칙들을 마우스 왼쪽 클릭하면 복사가 됩니다. 웬만하면 직접 타이핑하지 않는 것을 추천드립니다. (오타가 있으면 무조건 감점입니다.)
터미널 환경을 잘 파악을 해야 한다
터미널에 처음 노드는 정확히 기억이 나지 않는데, tester 노드였던 것 같습니다. 어쨌든 이 노드는 master노드도 아니고, worker노드도 아니기 때문에 tester노드에서 문제에서 주어지는 클러스터를 선택하고 해당 노드(master 또는 worker 노드에서 작업을 해야 합니다.)
클러스터 변경 또는 원격(ssh) 접근 방법은 문제에서도 주어지기 때문에 당황하지 말고 천천히 문제를 읽어보시면 됩니다.
시험 문제는 17문제에 배점이 모두 다르다 (웬만하면 4점짜리 문제부터 풀기)
시험 문제는 총 17문제이며 각각 7점 5점 4점짜리 문제로 구성되어있습니다.
7점짜리가 5문제 정도로 생각보다 많이 나왔던 것 같고, 5점짜리는 4문제 정도, 나머지는 4점짜리 문제가 나왔던 것 같습니다.
저는 만점을 목표로 처음부터 순서대로 풀려고 하였습니다. 그런데 문제 초반부터 7점짜리 cluster upgrade 문제가 나와서 업데이트 및 업그레이드되는 시간이 너무 오래 걸리고 시험 중간에 혹시 터미널 창에 행이 걸리는 건 아닌지 엄청 노심초사하였습니다. 시험 창 왼쪽 아래에 플래그 표시를 해둘 수 있으므로 우선 체크만 해두고 웬만하면 4점, 5점짜리 문제부터 풀기를 추천드립니다.
kodekloud로 커버되지 않는 문제가 2문제 정도 나온다
kodekloud에 있는 모든 문제를 3-4번씩 풀어 보니, 문제만 봐도 바로 구현할 수 있을 정도가 되었습니다. 그런데도 시험문제에서 커버되지 않는 문제가 있었습니다. 정확히 7점짜리 2문제였는데 첫 번째가 networkpolicy규칙을 namespace로 허용하는 문제였습니다. 쿠버네티스 공식 문서에 namespace selector 라고 나오고 그 안에 있는 필드는 라벨로 구분하게 되어있습니다. 문제안에서 파드는 라벨을 갖고 있지 않으므로 라벨이 아니라 namespace로 지정해야 하는데 이 부분은 결국 해결하지 못하였습니다. 향후에 직접 구현해보고 블로그 업데이트하도록 하겠습니다.
두 번째는 컨테이너를 sidecar형태로 구성하시오 라는 문제입니다. 첫 번째 컨테이너에서 특정 위치 /var/log/test.logs 라는 로그를 생성하면 그 로그를 tail로 읽는 컨테이너를 추가로 구성하라는 문제였습니다. 볼륨 구성이 pvc도 아닌데 어떻게 다른 컨테이너에서 작성한 로그를 읽을 수 있을지 고민 고민하다가 결국 해결을 못하였습니다. 아직 많이 부족한 것 같습니다.. 이 부분도 향후에 직접 구현해보고 업데이트하도록 하겠습니다.
(2021.10.06 추가 )위 문제는 기억을 되살려서 테스트 예제를 만들어 보았으니 아래 URL을 참고하여 주시기 바랍니다.
https://kim-dragon.tistory.com/148
기출문제 (생각나는 대로..)
json으로 출력하는 문제
custom-columns, jsonpath를 사용하여 특정 파일에 출력 결과를 작성하는 문제가 2-3문제 나왔습니다.
아래 cheat sheet를 참고하여 문제를 풀면 수월하게 풀 수 있습니다.
https://kubernetes.io/docs/reference/kubectl/cheatsheet/#viewing-finding-resources
특정 조건에 맞는 node 개수 출력하는 문제
taint가 문제에서 주어진 조건으로(예를 들어 color=red) 설정이 되어있고, noschedule인 노드가 몇 개인지 출력 결과를 특정 파일에 작성하라
multi pod 생성하는 문제
어렵지 않게 풀 수 있었습니다.
etcd 스냅샷 생성/복구 문제
다른 분들 후기 보면 이문제는 꼭 필수로 나오기 때문에 생성하고 복구까지 꼭 해보시기를 추천드립니다.
클러스터 업그레이드 문제
클러스터 업그레이드를 할 때 반드시 업그레이드 순서를 지켜야 합니다. 아래 URL을 참고하여 연습해보시기 바랍니다.
kubernetes Cluster Maintenance 정리
ingress 생성 문제
어렵지 않게 풀 수 있었습니다.
pv를 hostpath로 생성하는 문제
어렵지 않게 풀 수 있었습니다.
pvc만들고 pod에 mount 하는 문제
어렵지 않게 풀 수 있었습니다.
pod생성하고 service 붙이기 (nodeport type)
kubectl expose 명령어 옵션에 nodeport에 대한 정보는 없습니다. 따라서 명령형을 -o yaml --dry-run=client > svc.yaml 옵션으로 선언형으로 바꾸어 nodeport를 해당 문제에서 제시해준 번호로 설정해야 합니다.
pod생성 문제 - nodeselector
어렵지 않게 풀 수 있었습니다.
등등... 유데미 뭄샤드(갓샤드) 형님 제자라면 쉽게 풀 수 있는 문제들이었습니다. (위에서 말한 2문제 제외하고는)
끝으로 다들 하는 자격증 자랑하며 끝.
혹시 추가 문의가 있으시면 공지사항에 기재된 메일이나 댓글 주세요. 성심 성의껏 답변드리도록 하겠습니다. 감사합니다.
'IT > Kubernetes' 카테고리의 다른 글
[쿠버네티스] Liveness Probe와 Readiness Probe란? (0) | 2024.11.27 |
---|---|
[k8s] Ingress란? Ingress controller란? (0) | 2021.09.23 |
[CKA독학] Deployment update &Rollback (0) | 2021.07.05 |
[CKA독학] 트러블 슈팅 - Network troubleshooting (0) | 2021.07.05 |
[CKA독학] 트러블 슈팅 - Worker Node Failure (2) | 2021.07.02 |