A-1) 생성/적용/스케일
문제
pod.yaml파일에 있는 리소스를 클러스터에 적용하라.- 이름이
nginx이고 이미지가nginx인 Pod를 커맨드로 생성하라. - 위
nginxPod를 실제 생성하지 말고, 클라이언트 드라이런 + YAML 출력으로nginx-pod.yaml파일로 저장하라. rs-definition.yaml파일에 정의된 ReplicaSet(또는 스케일 가능한 리소스)의 레플리카를 6으로 스케일하라.- 이미지
nginx를 사용하는nginx라는 이름의 Deployment를 생성하라.
답
1.
kubectl apply -f pod.yaml
2.
kubectl run nginx --image=nginx
3.
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx-pod.yaml
4.
kubectl scale --replicas=6 -f rs-definition.yaml
5.
kubectl create deployment nginx --image=nginx
A-2) Service / Endpoint / EndpointSlice
문제
webDeployment를 Service로 노출하라. Service 포트는 80, targetPort는 8080이다.webDeployment를 NodePort Service로 노출하라. Service 포트는 80, targetPort는 8080이다.- 이름이
redis인 ClusterIP Service를 커맨드로 만들되, 실제 생성하지 말고 YAML로 출력하라. TCP 6379:6379 이다. - 클러스터에 존재하는 Endpoints 리소스를 조회하라.
- 클러스터에 존재하는 EndpointSlice 리소스를 조회하라.
답
6.
kubectl expose deploy web --port=80 --target-port=8080
7.
kubectl expose deploy web --type=NodePort --port=80 --target-port=8080
8.
kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml
9.
kubectl get endpoints
10.
kubectl get endpointslices
A-3) Namespace / Context
문제
dev네임스페이스를 생성하라.- 현재 kubeconfig context의 기본 네임스페이스를
dev로 설정하라. - 모든 네임스페이스의 Pod를 조회하라(긴 옵션 사용).
- 모든 네임스페이스의 Pod를 조회하라(짧은 옵션 사용).
답
11.
kubectl create namespace dev
12.
kubectl config set-context --current --namespace=dev
13.
kubectl get pods --all-namespaces
14.
kubectl get pods -A
A-4) API 탐색 / 스키마 확인
문제
- 클러스터에서 사용할 수 있는 API 리소스 목록을 출력하라.
- Pod 리소스의 설명(스키마)을 확인하라.
- Pod의
.spec하위 필드 설명을 확인하라. - Pod 스키마를 재귀적으로 출력하라.
답
15.
kubectl api-resources
16.
kubectl explain pod
17.
kubectl explain pod.spec
18.
kubectl explain pod --recursive
A-5) Scheduling / Node
문제
node1에app=bluetaint를NoSchedule로 추가하라.node1에size=large라벨을 추가하라.- PriorityClass 목록을 조회하라.
답
19.
kubectl taint nodes node1 app=blue:NoSchedule
20.
kubectl label node node1 size=large
21.
kubectl get priorityclass
A-6) Rollout / Deployment 운영
문제
apiDeployment의 rollout 진행 상태를 확인(완료 대기)하라.- 특정 Deployment의 rollout history를 확인하라.
- 특정 Deployment를 revision
<n>으로 롤백하라.
답
22.
kubectl rollout status deployment api
23.
kubectl rollout history deployment/<deployment-name>
24.
kubectl rollout undo deployment/<deployment-name> --to-revision=<n>
A-7) Logs / Metrics
문제
multi-container-pod에서 컨테이너event-simulator로그를 보라.- Pod
<pod>의 컨테이너<container>로그를 보라. 단, 이전(previous) 인스턴스 로그여야 한다. - Pod
<pod>로그를 마지막 100줄만 출력하라. - Pod 리소스 사용량(metrics)을 조회하라.
답
25.
kubectl logs multi-container-pod -c event-simulator
26.
kubectl logs <pod> -c <container> --previous
27.
kubectl logs <pod> --tail=100
28.
kubectl top pod
A-8) ConfigMap / Secret / base64
문제
- 리터럴 값으로 ConfigMap
appconfig를 생성하라. (APP_COLOR=blue,APP_MODE=prod) - 리터럴 값으로 Secret
app-secret를 생성하라. (DB_HOST=mysql,DB_USER=root,DB_PASSWORD=passw0rd) - 문자열
passw0rd를 개행 없이 base64 인코딩하라. - base64 문자열
bXlzcWw=를 디코딩하라. - docker-registry secret
regcred를 생성하라.
- server=
registry.mycorp.com, username=myuser, password=mypassword, email=myuser@mycorp.com, namespace=default
답
29.
kubectl create configmap appconfig \
--from-literal=APP_COLOR=blue \
--from-literal=APP_MODE=prod
30.
kubectl create secret generic app-secret \
--from-literal=DB_HOST=mysql \
--from-literal=DB_USER=root \
--from-literal=DB_PASSWORD=passw0rd
31.
echo -n 'passw0rd' | base64
32.
echo 'bXlzcWw=' | base64 -d
33.
kubectl create secret docker-registry regcred \
--docker-server=registry.mycorp.com \
--docker-username=myuser \
--docker-password='mypassword' \
--docker-email=myuser@mycorp.com \
-n default
A-9) Autoscaling (HPA/VPA)
문제
- Deployment
myapp에 대해 HPA를 생성하라. (min=1, max=10, cpu-percent=50) - HPA 목록을 조회하라.
- HPA
myapp을 삭제하라. - VPA
myapp-vpa를 describe 하라.
답
34.
kubectl autoscale deployment myapp --min=1 --max=10 --cpu-percent=50
35.
kubectl get hpa
36.
kubectl delete hpa myapp
37.
kubectl describe vpa myapp-vpa
A-10) Node 유지보수
문제
<node-name>노드를 cordon 하라.<node-name>노드를 uncordon 하라.<node-name>노드를 drain 하되, daemonset은 무시하라.
답
38.
kubectl cordon <node-name>
39.
kubectl uncordon <node-name>
40.
kubectl drain <node-name> --ignore-daemonsets
A-11) OS/버전/패키지(업그레이드 흐름)
문제
- OS 배포판 정보를 출력하라.
- Kubernetes 버전을 출력하라
- apt 패키지 인덱스를 갱신하라.
kubeadm패키지의 설치 가능한 버전들을 조회하라.kubeadm을 특정 버전1.29.x-1.1로 설치하라.kubeadm버전을 확인하라.- kubeadm 업그레이드 플랜을 확인하라.
- kubeadm으로 Kubernetes를
v1.28.0으로 업그레이드 적용하라. - systemd 데몬을 reload 하라.
- kubelet을 재시작하라.
- 클러스터에 노드를 조인하는
kubeadm join을 실행하라(세부 인자는 생략 가능).
답
41.
cat /etc/*release*
42.
kubectl get nodes
43.
sudo apt-get update
44.
apt-cache madison kubeadm
45.
sudo apt-get install -y kubeadm=1.29.x-1.1
46.
kubeadm version
47.
kubeadm upgrade plan
48.
kubeadm upgrade apply v1.28.0
49.
sudo systemctl daemon-reload
50.
sudo systemctl restart kubelet
51.
kubeadm join
A-12) CSR / Auth / RBAC
문제
- CSR 목록을 조회하라.
- CSR
jane-csr를 approve 하라. - 현재 kubectl 사용자가 누구인지 확인하라.
- Service Account dashboard-sa가 default namespace에서 pods를 list 할 수 있는가?
default네임스페이스에서dev-user가 deployments를 create 할 수 있는지 확인하라.default네임스페이스에 서비스어카운트dashboard-sa를 생성하라.default네임스페이스에 pod를 get,list,watch할 수 있는 Roledeveloper를 생성하라.- dev-user에게 default namespace에서 developer 권한을 바인딩하는 RoleRoleBinding
dev-user-to-developer를 생성하라.
답
52.
kubectl get csr
53.
kubectl certificate approve jane-csr
54.
kubectl auth whoami
55.
kubectl auth can-i list pods -n default --as=system:serviceaccount:default:dashboard-sa
56.
kubectl auth can-i create deployments --as=dev-user -n default
57.
kubectl create serviceaccount dashboard-sa -n default
58.
kubectl -n default create role developer --resource=pods --verb=get,list,watch
59.
kubectl -n default create rolebinding dev-user-to-developer --role=developer --user=dev-user
A-13) etcd 백업/복원
문제
- etcd 스냅샷을 저장하라.
ETCDCTL_API=3 etcdctl- endpoint=
https://127.0.0.1:2379 --cacert/--cert/--key포함- snapshot save
<backup-file-location>
- 스냅샷
snapshot.db를<data-dir-location>에 복원하라.
답
60.
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \
snapshot save <backup-file-location>
61.
etcdutl snapshot restore snapshot.db --data-dir <data-dir-location>
A-14) kubeadm certs
문제
- kubeadm 인증서 만료를 점검하라.
- kubeadm 인증서를 모두 갱신하라.
- apiserver 인증서만 갱신하라.
- apiserver-etcd-client 인증서만 갱신하라.
답
62.
kubeadm certs check-expiration
63.
kubeadm certs renew all
64.
kubeadm certs renew apiserver
65.
kubeadm certs renew apiserver-etcd-client
A-15) kubeconfig 관련
문제
- kubeconfig 내용을 출력하라.
- 현재 context의 기본 namespace를
kube-system으로 설정하라.
답
66.
kubectl config view
67.
kubectl config set-context --current --namespace=kube-system
A-16) Linux 네트워크 기본
문제
- 링크(인터페이스) 목록을 확인하라.
- IP 주소 정보를 확인하라.
- 라우팅 테이블을 확인하라.
eth0를 up 상태로 올려라.eth0에192.168.1.11/24IP를 추가하라.192.168.2.0/24로 가는 라우트를192.168.1.1via로 추가하라.- default route를
192.168.1.1로 설정하라.
답
68.
ip link
69.
ip addr
70.
ip route
71.
ip link set eth0 up
72.
sudo ip addr add 192.168.1.11/24 dev eth0
73.
sudo ip route add 192.168.2.0/24 via 192.168.1.1
74.
sudo ip route add default via 192.168.1.1
A-17) Helm
문제
- bitnami Helm repo를 추가하라.(주소: https://charts.bitnami.com/bitnami)
- Helm repo 인덱스를 업데이트하라.
- repo에서
wordpress차트를 검색하라. blog네임스페이스에 bitnami/wordpressmy-wp릴리스를 설치하라. (없으면 네임스페이스 생성)- bitnami/wordpress의 기본 values를
values.yaml로 저장하라. values.yaml을 사용하여blog네임스페이스에my-wp를 upgrade 하되, 없으면 install 하라.blog네임스페이스의 Helm 릴리스 목록을 보라.blog네임스페이스에서my-wp릴리스 상태를 보라.blog네임스페이스에서my-wp의 values를 조회하라.blog네임스페이스에서my-wp히스토리를 보라.blog네임스페이스에서my-wp를 revision 1로 롤백하라.blog네임스페이스에서my-wp를 삭제하라.- Helm 도움말을 보라.
- 로컬 차트
./my-chart를values.yaml로 템플릿 렌더링만 하라. - install 시
--set으로 blogName/email을 오버라이드하여 설치하라. - bitnami/wordpress 차트를 pull 받고 tar를 풀어라.
- 풀린 로컬 디렉터리
./wordpress로my-wp를 설치하라.
답
75.
helm repo add bitnami https://charts.bitnami.com/bitnami
76.
helm repo update
77.
helm search repo wordpress
78.
helm install my-wp bitnami/wordpress -n blog --create-namespace
79.
helm show values bitnami/wordpress > values.yaml
80.
helm upgrade --install my-wp bitnami/wordpress -n blog -f values.yaml
81.
helm list -n blog
82.
helm status my-wp -n blog
83.
helm get values my-wp -n blog
84.
helm history my-wp -n blog
85.
helm rollback my-wp 1 -n blog
86.
helm uninstall my-wp -n blog
87.
helm help
88.
helm template my-test ./my-chart -f values.yaml
89.
helm install my-wp bitnami/wordpress \
--set wordpressBlogName="Helm Tutorials" \
--set wordpressEmail="john@example.com"
90.
helm pull bitnami/wordpress --untar
91.
helm install my-wp ./wordpress
A-18) Kustomize
문제
./k8skustomize 디렉터리를 apply 하라.- standalone kustomize로
./k8s를 build 해서less로 보라. ./k8skustomize 디렉터리를 delete 하라.
답
92.
kubectl apply -k ./k8s
93.
kustomize build ./k8s | less
94.
kubectl delete -k ./k8s'CKA' 카테고리의 다른 글
| CKA 시험 팁 (0) | 2026.02.09 |
|---|---|
| CKA 파일 경로 및 옵션 정리 (0) | 2026.01.15 |
| CKA 명령어 정리 (1) | 2026.01.15 |
| CKA 시험 대비 - Scheduling (0) | 2026.01.09 |
| Kustomize - 총 정리 (0) | 2026.01.08 |