CKA 명령어 시험

2026. 1. 15. 14:17·CKA

A-1) 생성/적용/스케일

문제

  1. pod.yaml 파일에 있는 리소스를 클러스터에 적용하라.
  2. 이름이 nginx이고 이미지가 nginx인 Pod를 커맨드로 생성하라.
  3. 위 nginx Pod를 실제 생성하지 말고, 클라이언트 드라이런 + YAML 출력으로 nginx-pod.yaml 파일로 저장하라.
  4. rs-definition.yaml 파일에 정의된 ReplicaSet(또는 스케일 가능한 리소스)의 레플리카를 6으로 스케일하라.
  5. 이미지 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

문제

  1. web Deployment를 Service로 노출하라. Service 포트는 80, targetPort는 8080이다.
  2. web Deployment를 NodePort Service로 노출하라. Service 포트는 80, targetPort는 8080이다.
  3. 이름이 redis인 ClusterIP Service를 커맨드로 만들되, 실제 생성하지 말고 YAML로 출력하라. TCP 6379:6379 이다.
  4. 클러스터에 존재하는 Endpoints 리소스를 조회하라.
  5. 클러스터에 존재하는 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

문제

  1. dev 네임스페이스를 생성하라.
  2. 현재 kubeconfig context의 기본 네임스페이스를 dev로 설정하라.
  3. 모든 네임스페이스의 Pod를 조회하라(긴 옵션 사용).
  4. 모든 네임스페이스의 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 탐색 / 스키마 확인

문제

  1. 클러스터에서 사용할 수 있는 API 리소스 목록을 출력하라.
  2. Pod 리소스의 설명(스키마)을 확인하라.
  3. Pod의 .spec 하위 필드 설명을 확인하라.
  4. Pod 스키마를 재귀적으로 출력하라.

답

15.

kubectl api-resources

16.

kubectl explain pod

17.

kubectl explain pod.spec

18.

kubectl explain pod --recursive

A-5) Scheduling / Node

문제

  1. node1에 app=blue taint를 NoSchedule로 추가하라.
  2. node1에 size=large 라벨을 추가하라.
  3. PriorityClass 목록을 조회하라.

답

19.

kubectl taint nodes node1 app=blue:NoSchedule

20.

kubectl label node node1 size=large

21.

kubectl get priorityclass

A-6) Rollout / Deployment 운영

문제

  1. api Deployment의 rollout 진행 상태를 확인(완료 대기)하라.
  2. 특정 Deployment의 rollout history를 확인하라.
  3. 특정 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

문제

  1. multi-container-pod에서 컨테이너 event-simulator 로그를 보라.
  2. Pod <pod>의 컨테이너 <container> 로그를 보라. 단, 이전(previous) 인스턴스 로그여야 한다.
  3. Pod <pod> 로그를 마지막 100줄만 출력하라.
  4. 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

문제

  1. 리터럴 값으로 ConfigMap appconfig를 생성하라. (APP_COLOR=blue, APP_MODE=prod)
  2. 리터럴 값으로 Secret app-secret를 생성하라. (DB_HOST=mysql, DB_USER=root, DB_PASSWORD=passw0rd)
  3. 문자열 passw0rd를 개행 없이 base64 인코딩하라.
  4. base64 문자열 bXlzcWw=를 디코딩하라.
  5. 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)

문제

  1. Deployment myapp에 대해 HPA를 생성하라. (min=1, max=10, cpu-percent=50)
  2. HPA 목록을 조회하라.
  3. HPA myapp을 삭제하라.
  4. 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 유지보수

문제

  1. <node-name> 노드를 cordon 하라.
  2. <node-name> 노드를 uncordon 하라.
  3. <node-name> 노드를 drain 하되, daemonset은 무시하라.

답

38.

kubectl cordon <node-name>

39.

kubectl uncordon <node-name>

40.

kubectl drain <node-name> --ignore-daemonsets

A-11) OS/버전/패키지(업그레이드 흐름)

문제

  1. OS 배포판 정보를 출력하라.
  2. Kubernetes 버전을 출력하라
  3. apt 패키지 인덱스를 갱신하라.
  4. kubeadm 패키지의 설치 가능한 버전들을 조회하라.
  5. kubeadm을 특정 버전 1.29.x-1.1로 설치하라.
  6. kubeadm 버전을 확인하라.
  7. kubeadm 업그레이드 플랜을 확인하라.
  8. kubeadm으로 Kubernetes를 v1.28.0으로 업그레이드 적용하라.
  9. systemd 데몬을 reload 하라.
  10. kubelet을 재시작하라.
  11. 클러스터에 노드를 조인하는 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

문제

  1. CSR 목록을 조회하라.
  2. CSR jane-csr를 approve 하라.
  3. 현재 kubectl 사용자가 누구인지 확인하라.
  4. Service Account dashboard-sa가 default namespace에서 pods를 list 할 수 있는가?
  5. default 네임스페이스에서 dev-user가 deployments를 create 할 수 있는지 확인하라.
  6. default 네임스페이스에 서비스어카운트 dashboard-sa를 생성하라.
  7. default 네임스페이스에 pod를 get,list,watch할 수 있는 Role developer를 생성하라.
  8. 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 백업/복원

문제

  1. etcd 스냅샷을 저장하라.
  • ETCDCTL_API=3 etcdctl
  • endpoint=https://127.0.0.1:2379
  • --cacert/--cert/--key 포함
  • snapshot save <backup-file-location>
  1. 스냅샷 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

문제

  1. kubeadm 인증서 만료를 점검하라.
  2. kubeadm 인증서를 모두 갱신하라.
  3. apiserver 인증서만 갱신하라.
  4. 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 관련

문제

  1. kubeconfig 내용을 출력하라.
  2. 현재 context의 기본 namespace를 kube-system으로 설정하라.

답

66.

kubectl config view

67.

kubectl config set-context --current --namespace=kube-system

A-16) Linux 네트워크 기본

문제

  1. 링크(인터페이스) 목록을 확인하라.
  2. IP 주소 정보를 확인하라.
  3. 라우팅 테이블을 확인하라.
  4. eth0를 up 상태로 올려라.
  5. eth0에 192.168.1.11/24 IP를 추가하라.
  6. 192.168.2.0/24로 가는 라우트를 192.168.1.1 via로 추가하라.
  7. 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

문제

  1. bitnami Helm repo를 추가하라.(주소: https://charts.bitnami.com/bitnami)
  2. Helm repo 인덱스를 업데이트하라.
  3. repo에서 wordpress 차트를 검색하라.
  4. blog 네임스페이스에 bitnami/wordpress my-wp 릴리스를 설치하라. (없으면 네임스페이스 생성)
  5. bitnami/wordpress의 기본 values를 values.yaml로 저장하라.
  6. values.yaml을 사용하여 blog 네임스페이스에 my-wp를 upgrade 하되, 없으면 install 하라.
  7. blog 네임스페이스의 Helm 릴리스 목록을 보라.
  8. blog 네임스페이스에서 my-wp 릴리스 상태를 보라.
  9. blog 네임스페이스에서 my-wp의 values를 조회하라.
  10. blog 네임스페이스에서 my-wp 히스토리를 보라.
  11. blog 네임스페이스에서 my-wp를 revision 1로 롤백하라.
  12. blog 네임스페이스에서 my-wp를 삭제하라.
  13. Helm 도움말을 보라.
  14. 로컬 차트 ./my-chart를 values.yaml로 템플릿 렌더링만 하라.
  15. install 시 --set으로 blogName/email을 오버라이드하여 설치하라.
  16. bitnami/wordpress 차트를 pull 받고 tar를 풀어라.
  17. 풀린 로컬 디렉터리 ./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

문제

  1. ./k8s kustomize 디렉터리를 apply 하라.
  2. standalone kustomize로 ./k8s를 build 해서 less로 보라.
  3. ./k8s kustomize 디렉터리를 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
'CKA' 카테고리의 다른 글
  • CKA 시험 팁
  • CKA 파일 경로 및 옵션 정리
  • CKA 명령어 정리
  • CKA 시험 대비 - Scheduling
5jyan5
5jyan5
  • 5jyan5
    jyan
    5jyan5
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • 김영한의 스프링 핵심 원리(기본편) (8)
      • 김영한의 스프링 핵심 원리 - 고급편 (11)
      • 김영한의 스프링 MVC 1편 (1)
      • 김영한의 스프링 DB 1편 (3)
      • 김영한의 스프링 MVC 2편 (3)
      • 김영한의 ORM 표준 JPA 프로그래밍(기본편) (9)
      • 김영한의 스프링 부트와 JPA 활용2 (2)
      • 김영한의 실전 자바 - 중급 1편 (1)
      • 김영한의 실전 자바 - 고급 1편 (9)
      • 김영한의 실전 자바 - 고급 2편 (9)
      • Readable Code: 읽기 좋은 코드를 작성.. (2)
      • 김영한의 실전 자바 - 고급 3편 (9)
      • CKA (118)
      • 개발 (37)
      • 경제 (4)
      • 리뷰 (1)
      • 정보 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      gesingleresult
      jpq
      JPQL
      양방향 맵핑
      @discriminatorcolumn
      @discriminatorvalue
      프록시
      @within
      김영한
      typequery
      빈 후처리기
      자바
      단방향 맵핑
      Target
      log trace
      고급
      @args
      WAS
      Thread
      cglib
      hibernate5module
      버퍼
      조회 성능 최적화
      스레드
      requset scope
      jdk 동적 프록시
      reentarantlock
      락
      페치 조인
      프록시 팩토리
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    5jyan5
    CKA 명령어 시험
    상단으로

    티스토리툴바