1) Persistent Volumes 문제
문제
List all persistent volumes sorted by capacity, saving the full kubectl output to /opt/KUCC00102/volume_list. Use kubectl's own functionality for sorting the output, and do not manipulate it any further.
풀이
- 클러스터 내의 모든 Persistent Volumes를 가져와서 저장 용량을 기준으로 정렬된 목록을 출력한다.
# PersistentVolumes을 용량별로 정렬해서 조회
kubectl get pv --sort-by=.spec.capacity.storage
2) emptyDir 문제
문제
Create a pod as follows:
- Name: non-persistent-redis
- container Image: redis
- Volume with name: cache-control
- Mount path: /data/redis
- The pod should launch in the staging namespace and the volume must not be persistent.
apiVersion: v1
kind: Pod
metadata:
name: non-persistent-redis
namespace: staging
spec:
containers:
- name: redis
image: redis
volumeMounts:
- name: cache-control
mountPath: /data/redis
volumes:
- name: cache-control
emptyDir: {}
3) pvc와 pod 만들기 (스토리지 클래스는 이미 생성되어있음, storage 증설) 문제
문제
Create a new PersistentVolumeClaim
- Name: pv-volume
- Class: csi-hostpath-sc
- Capacity: 10Mi
Create a new Pod which mounts the PersistentVolumeClaim as a volume:
- Name: web-server
- Image: nginx
- Mount path: /usr/share/nginx/html
- Configure the new Pod to have ReadWriteOnce Finally, using kubectl edit or kubectl patch PersistentVolumeClaim to a capacity of 70Mi and record that change.
# PVC 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-volume
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 10Mi
storageClassName: csi-hostpath-sc
# POD 생성 후 마운트
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
volumes:
- name: volume
persistentVolumeClaim:
claimName: pv-volume
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: volume
4) 사이드카 컨테이너 생성해서 로그 추출하기 (emptydir 사용) 문제
CKA(Certified Kubernetes Administrator) 시험에서는 사이드카 컨테이너를 생성하고 해당 사이드카 컨테이너를 통해 로그를 추출하는 문제가 출제될 수 있습니다. 이 문제를 해결하기 위해서는 사이드카 컨테이너와 로그 추출을 위한 적절한 설정을 해야 합니다. 대표적으로 emptyDir 볼륨을 활용하여 로그를 공유하는 방법이 있습니다.
아래는 이러한 문제를 해결하는 YAML 파일의 예시입니다.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: main-container
image: nginx
volumeMounts:
- name: shared-log
mountPath: /var/log/nginx
- name: sidecar-container
image: busybox
command: ['sh', '-c', 'while true; do date >> /var/log/nginx/access.log; sleep 1; done']
volumeMounts:
- name: shared-log
mountPath: /var/log/nginx
volumes:
- name: shared-log
emptyDir: {}
이 예시에서는 nginx 이미지를 사용하는 메인 컨테이너와 busybox 이미지를 사용하는 사이드카 컨테이너가 포함된 파드를 생성합니다. 사이드카 컨테이너는 간단한 명령을 실행하여 주기적으로 /var/log/nginx/access.log 파일에 현재 날짜를 기록합니다.
주요 포인트는 다음과 같습니다:
- 메인 컨테이너(main-container)와 사이드카 컨테이너(sidecar-container)를 정의합니다.
- 메인 컨테이너는 nginx 이미지를 사용하며, /var/log/nginx 경로에 마운트될 공유 볼륨을 정의합니다.
- 사이드카 컨테이너는 busybox 이미지를 사용하며, /var/log/nginx 경로에 마운트될 공유 볼륨을 정의하고, 해당 볼륨에 로그를 기록하는 간단한 스크립트를 실행합니다.
- 공유 볼륨은 emptyDir 유형으로 정의되어 있어서, 파드의 라이프사이클 동안에만 유지되는 임시 디렉토리를 생성합니다.
이렇게 하면 사이드카 컨테이너가 메인 컨테이너와 함께 동작하여 로그를 추출할 수 있습니다. 이러한 유형의 문제는 CKA 시험에서 출제될 수 있으므로 실습과 함께 이해하는 것이 중요합니다.
'Kubernetes > Cert' 카테고리의 다른 글
[CKA] PV 생성 (0) | 2025.02.11 |
---|---|
[CKA] Node 유형 (0) | 2025.02.10 |
[CKA] Service 유형 (0) | 2025.02.09 |
[CKA] Pod 유형 (0) | 2025.02.07 |
[CKA] Apiserver Crash (0) | 2025.02.03 |