모두
step11네임스페이스와manifests/01-redis-statefulset.yaml를 배포한 상태에서 진행합니다.export PATH="/opt/homebrew/bin:$PATH"를 먼저 실행하세요. 답은 각 문제 아래 접힌 블록에 있습니다.
replicas: 3 인 redis StatefulSet 이 있을 때, 세 번째 파드의 이름과 그 파드가 쓰는 PVC 이름을 규칙만 보고 적으세요. 그리고 실제로 확인하세요.
redis-2 (서수는 0부터 시작 → 세 번째는 2)data-redis-2 (규칙: <volumeClaimTemplates의 name>-<statefulset이름>-<서수>)data-redis-2 가 목록에 있으면 정답입니다.
spec.clusterIP: None 을 지운(=일반 ClusterIP) 서비스로 바꾸면 redis-0.redis... 개별 DNS 가 어떻게 되는지 예측하고, 그렇게 만드는 이유를 한 줄로 쓰세요.
redis-0.redis.step11.svc.cluster.local)가 생성되지 않습니다. 서비스 이름은 VIP 하나로만 해석되고, 그 뒤로 무작위 로드밸런싱됩니다.clusterIP: None) 가 필수입니다.(주의: 실서비스를 바꾸기 전에 kubectl get svc redis -n step11 -o yaml > /tmp/redis-svc.yaml 로 백업하세요. clusterIP 필드는 immutable 이라 바꾸려면 서비스를 재생성해야 합니다.)
redis-1 에 키 role=replica 를 저장한 뒤, redis-1 파드만 지웠다가 다시 뜨면 값이 남아 있음을 증명하세요. 반대로 데이터를 완전히 초기화하려면 무엇을 지워야 하나요?
data-redis-1 은 유지되고, 재생성된 redis-1 이 같은 PVC 를 다시 붙기 때문에 값이 남습니다.kubectl delete pvc data-redis-1 -n step11 (그 후 파드가 재생성되면 빈 볼륨을 새로 받습니다).replicas 를 3 에서 1 로 줄일 때, 어느 파드가 가장 먼저 종료되고 어느 파드가 남을지 적고, watch 로 확인하세요.
redis-2 (가장 큰 서수부터, 즉 2→1 순서로 종료). 남는 것: redis-0.watch 에서 redis-2 ... Terminating 이 먼저, 그다음 redis-1 ... Terminating 이 뜨면 정답입니다. 끝나면 --replicas=3 으로 원복하세요.
kubectl delete statefulset redis -n step11 만 실행하면 스토리지까지 깨끗이 정리될까요? 실제로 확인하고, 남는 것이 있다면 무엇이며 어떻게 지우는지 쓰세요.
volumeClaimTemplates 로 만든 PVC(그리고 그에 바인딩된 PV)는 남습니다.kubectl delete pvc -n step11 --all. 기본 StorageClass(local-path)의 ReclaimPolicy 가 Delete 라, PVC 를 지우면 PV 도 함께 회수됩니다. 방치하면 비용이 계속 발생합니다.