2025년 CKA 최신 경향 및 최근 기출 문제 를 분석해 주제별 핵심 영역을 다시 간단 명료하고 실전 중심으로 재정리해드릴게요. By chatGPT
(*2024년~2025년 출제경향, 공식 커리큘럼 및 수험생 후기 기반 요약)

리소스마다 실제 yaml을 매번 직접 작성해서 실습
공식 도큐먼트에서 예제 yaml 검색(시험 중 검색 가능한 링크로 연습)
kubectl 명령어 옵션(-o yaml, -n, --dry-run 등) 암기
실제 트러블슈팅 시나리오(파드 장애, 네트워크 불능 등) 실습
etcd, 업그레이드, RBAC, SecurityContext 등 보안/관리 분야 준비
2025년 신규 유형 대비 : https://www.youtube.com/@jaydemytech/videos
시험 환경 예습 / dump 실습 환경 : https://killercoda.com/cka
kubectl 차트 시트 / 자동 완성 : https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/
k alias
alias k='kubectl'
| 개념 | 담당하는 역할 | 관련 리소스 |
|---|---|---|
| CSR (CertificateSigningRequest) | 클러스터에 “나 인증서 발급해줘” → 인증(Authentication) | CertificateSigningRequest |
| Role / RoleBinding / ClusterRole / ClusterRoleBinding | 인증된 사용자가 “무엇을 할 수 있는가” → 인가(Authorization) | Role, ClusterRole, RoleBinding, ClusterRoleBinding |
✅ 요약
🔑 간단히 말해
CSR = "접속할 수 있게 해줘"
Role = "접속한 뒤 할 수 있는 일은 이것뿐이야"
파일 찾기
- sudo find / -name kubeadm.conf 2>/dev/null
alias 설정
- alias kd='kubectl describe'
라벨 조회
- kubectl get pods --show-labels
특정 라벨 조회
- kubectl get pods -L app
- kubectl get pods -L app,env
static pod 확인
- ps -ef | grep kubelet
kubectl 먹통
- sudo systemctl status kubelet로 kubelet : running 확인
- 런타임이 containerd면 crictl ps, docker면 docker ps : 리소스 상태 점검
컨트롤 플레인 트러블슈팅
- service kube-scheduler status
- service kube-apiserver status
- service kube-controller-manager status
- service kubelet status
- service kube-proxy status
- kubectl logs kube-apiserver-master -n kube-system
- sudo journalctl -u kube-apiserver
static pod는 /etc/kubernetes/manifests 의 yaml 파일을 수정해야 함!!
| 구분 | Static Pod (kubeadm 기본) | systemd 서비스 (바이너리 직접 설치) | |
|---|---|---|---|
| 확인 위치 | /etc/kubernetes/manifests/ (yaml) | /usr/lib/systemd/system/ (unit 파일) | |
| Pod 확인 | kubectl get pod -n kube-system | ps -ef / grep kube-apiserver | |
| 상태 확인 | kubectl get pod -n kube-system | service <컴포넌트> statussystemctl status <컴포넌트> | |
| 로그 확인 | kubectl logs <pod> -n kube-system | sudo journalctl -u <컴포넌트> | |
| 대표 컴포넌트 | kube-apiserver-<node>kube-scheduler-<node>kube-controller-manager-<node> | kube-apiserver.servicekube-scheduler.servicekube-controller-manager.service | |
| 설치 방식 | kubeadm init 시 기본 생성 | 직접 바이너리 설치 (/usr/bin/kube-*) | |
| 시험 출제 경향 | ✅ 가장 많이 등장 | ⚠️ 일부 트러블슈팅 문제에서 등장 |
중요 파일 위치
- 인증서 키 파일: /etc/kubernetes/pki
- static Pod manifest: /etc/kubernetes/manifests
- kubelet 설정 및 상태 정보: /var/lib/kubelet
워커 노드 트러블슈팅
- ssh node01
- service kubelet status
- service kubelet start -> active(running) 확인
- journalctl -u kubelet
- vi /etc/kubernetes/kubelet.conf
- vi /var/lib/kubelet/config.yaml
- service kubelet restart
- controlplane의 포트는 6443
로그 확인
- kubectl logs 파드이름
- kubectl logs 파드이름 -c 컨테이너이름 (파드 중 여러 컨테이너 있을 때)
ip/mac 확인
- ip a
- ip link show eth0
internal ip 확인
- kubectl get nodes -o wide
노드 스위칭
- ssh node01
프로세스 확인
- ps -aux | grep -i kubelet | grep runtime
파일/폴더
- 파일 이름 변경
- mv a.file b.file
- 파일 이동
- mv a.file /home/user/docs/
- 폴더 생성
- mkdir mydir
pod로 들어가서 로그 보기
- kubectl exec -it frontend -- curl 'BACKEND-POD-IP'
현재 네임스페이스 변경
- kubecl config set-context --current --namespace=alpha
마스터 노드 버전 업그레이드
| 부분 | 의미 |
|---|---|
| Given an existing Kubernetes cluster running version 1.20.0 | 현재 클러스터 전체는 Kubernetes 1.20.0 버전임 |
| upgrade all of the Kubernetes control plane and node components | control plane (apiserver, controller-manager, scheduler 등)과 node components (kubelet, kubectl 등)를 모두 업그레이드하라는 뜻 |
| on the master node only | 하지만 “master 노드에 한해서만” 업그레이드하라는 의미. 즉, 워커 노드는 건드리지 말라는 뜻 |
| to version 1.20.1 | 목표 버전은 1.20.1 (마이너 패치 업그레이드) |
# 0. 마스터 노드 root 접근
ssh <MASTER_HOST>
sudo -i
# 1. cordon/drain master
kubectl cordon <MASTER_HOST>
kubectl drain <MASTER_HOST> --ignore-daemonsets --delete-local-data
# 2. kubeadm 업그레이드 (control plane 업그레이드)
apt-get install -y kubeadm=1.20.1-00
kubeadm upgrade plan
kubeadm upgrade apply v1.20.1 --etcd-upgrade=false
# 3. kubelet, kubectl 업그레이드
apt-get install -y kubelet=1.20.1-00 kubectl=1.20.1-00
systemctl daemon-reload
systemctl restart kubelet
# 4. uncordon
kubectl uncordon <MASTER_HOST>
# 5. check
kubectl get nodes
kubelet --version
kubectl version --short
클러스터 정보
- kubectl cluster-info
jsonpath 확인방법
- kubectl get node controlplane -o yaml | grep -C5 podCIDR
- kubectl explain node.spec
k get node controlplane -o jsonpath='{.spec.podCIDR}'
1️⃣ kubectl get node 'name' -o yaml | grep -C5 'keyword'
2️⃣ kubectl explain 'resource'.'field'
grep 옵션 : A(after), B(before), C(앞뒤로)