실습
StatefulSet
Service 생성
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Service metadata: name: web labels: app: httpd spec: ports: - port: 80 clusterIP: None selector: app: httpd EOF생성된 Service 및 Endpoint 확인
kubectl get svc,ep -l app=httpdStatefulSet 생성
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: StatefulSet metadata: name: httpd labels: app: httpd spec: serviceName: web replicas: 1 selector: matchLabels: app: httpd template: metadata: labels: app: httpd spec: containers: - name: httpd image: httpd EOF생성된 StatefulSet 및 Pod 확인
kubectl get sts,pod -l app=httpdEndpoint 확인
kubectl get ep webEndpoint에 포함된 Pod의 상세정보 확인
kubectl get ep web -o=jsonpath='{.subsets}' | jq생성된 Pod의 이름 및 IP 확인
kubectl get pod -l app=httpd -o widePod 생성
kubectl run curl --image=curlimages/curl --command -- sleep 3600cURL 명령어로 기존에 생성한 Pod에 배포된 웹서버 호출
kubectl exec curl -- curl -s httpd-0.webStatefulSet의 Replica 수를 3개로 수정
kubectl scale statefulset httpd --replicas=3생성된 Pod 확인
kubectl get pod -l app=httpdcURL 명령어로 새로 생성된 Pod에 배포된 웹서버 호출
{ kubectl exec curl -- curl -s httpd-1.web kubectl exec curl -- curl -s httpd-2.web }첫번째로 생성된 Pod를 삭제
kubectl delete pod httpd-0Pod가 다시 생성되는지 확인
kubectl get pod -l app=httpd생성된 리스소 삭제
{ kubectl delete sts httpd kubectl delete svc web kubectl delete pod curl }
Persistent Volume
Persistent Volume 종류 확인 - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes
현재 설정된 Storage Class 확인
NFS 서버 생성
NFS 서버 생성 확인
NFS 서버에 HTML 파일 생성
HTML 파일이 정상적으로 생성되었는지 확인
PersistentVolume 생성
생성된 PersistentVolume 확인
생성된 PVC가 있는지 확인
PVC 생성
생성된 PVC 확인
PV 확인
데모 애플리케이션 배포
위에서 배포한 애플리케이션의 Pod가 정상적으로 생성되었는지 확인
배포된 NGINX 웹서버들이 동일한 페이지를 보여주는지 확인
PVC 상태 확인
하나의 Pod에 접속해서 PV가 마운트된 경로에 파일 생성
NFS 서버에 접속해서 위에서 생성한 파일이 보이는지 확인
배포된 Pod들에서 위에서 생성한 파일이 보이는지 확인
데모 애플리케이션 삭제
NFS 서버에 접속해서 파일이 삭제되었는지 확인
PVC 상태 확인
데모 애플리케이션 재배포
이전에 생성했던 파일이 존재 하는지 확인
PVC 삭제 시도
위에서 실행한 명령어가 완료되지 않을 경우에 Ctrl+C를 입력해서 명령어 종료
PVC 상태 확인
PVC에 명시된 Finalizers 확인 - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#storage-object-in-use-protection
데모 애플리케이션 삭제
PVC가 삭제되었는지 확인
PV 상태 확인
PVC 생성
PVC 상태 확인
PV에 명시된 PVC 정보 확인
새로 생성한 PVC 상세정보 확인
PV 수정 -
spec.claimRef삭제PVC 상태 확인
PV에 명시된 PVC 정보 확인
PVC의 uid 확인
PV 삭제 시도
위에서 실행한 명령어가 완료되지 않을 경우에 Ctrl+C를 입력해서 명령어 종료
PV 상태 확인
PV에 명시된 Finalizers 확인 - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#storage-object-in-use-protection
PVC 삭제
PV가 삭제되었는지 확인
NFS 서버에 접속해서 파일이 삭제되었는지 확인
NFS 서버 삭제
Dynamic Volume Provisioning
현재 설정된 StorageClass 확인
PVC 생성
PVC 상태 확인
PVC 상태가 Pending인 이유 확인
데모 애플리케이션 배포
위에서 배포한 애플리케이션의 Pod가 정상적으로 생성되었는지 확인
Pod 상태가 Pending인 이유 확인
PVC 상태가 Pending인 이유 확인
PVC 재생성
Pod 상태 확인 - Running 상태로 될때까지 시간이 걸릴수도 있음
PVC 상태 확인
PVC에 명시된 PV가 생성되었는지 확인
PVC에 명시한 볼륨 요청 크기 만큼 실제로 할당되었는지 확인
EBS (gp2)의 최소 볼륨 크기 확인 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#solid-state-drives
데모 애플리케이션 삭제
PVC 삭제
PV가 삭제되었는지 확인 - 삭제 될때까지 시간이 걸릴수도 있음
LimitRange 생성
LimitRagne 확인
PVC 생성 시도
PVC 생성
PVC 상태 확인
데모 애플리케이션 배포
Pod 상태 확인
PVC 상태 확인
PVC에 명시된 PV가 생성되었는지 확인
PVC에 명시한 볼륨 요청 크기 만큼 실제로 할당되었는지 확인
Deployment의 Replica 수를 10개로 수정
추가로 생성되는 Pod 상태 확인
Pending 상태의 Pod가 있다면 그 이유 확인
PV에 명시된 Node Affinity 확인 - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#node-affinity
각 Node의 가용영역 확인
Pod가 배포된 Node 확인
Deployment의 Replica 수를 1개로 수정
Pod가 배포된 Node의 이름 확인
해당 Node에 문제가 생겼다는 상황을 가정하고 Pod를 다른 Node로 이전하고 Node 상태를 SchedulingDisabled로 변경
Pod가 생성되는지 확인
Pod가 Pending 상태라면 그 이유를 확인
Node 상태 확인
Node에 부여된 Taint 확인
PV 이름 확인
PV에 연동된 EBS 볼륨를 확인하고 볼륨 ID를 환경변수로 지정
위에서 확인한 EBS 볼륨 상태 확인
Node가 정상으로 돌아왔다고 가정하고 Node에 부여된 Taint 삭제
Node 상태 확인
Pod가 생성되는지 확인
PV에 연동된 EBS 볼륨 상태 확인
리소스 삭제
PV가 삭제되었는지 확인 - 삭제 될때까지 시간이 걸릴수도 있음
PV에 연동된 EBS 볼륨이 삭제되었는지 확인
MySQL 클러스터 구성
ConfigMap 생성
Service 생성
StatefulSet 생성
Pod 생성 확인
생성된 PVC 확인
PVC에 명시된 PV가 생성되었는지 확인
각 PV에 맵핑된 EBS 볼륨 확인
Pod 생성
mysql-0 Pod를 통해서 데이터베이스 및 레코드 생성
읽기 엔드포인트 mysql-read 통해서 위에서 생성한 데이터를 확인
읽기 엔드포인트 mysql-read 가 읽기에 대한 쿼리를 분산하는지 확인
Ctrl+C를 입력해서 위에서 실행한 프로세스 종료
mysql-read Endpoint에 타켓으로 포함되어 있는 Pod 목록 확인
mysql-2 Pod의 ReadinessProbe가 실패하도록 수정
mysql-2 Pod의 상태 확인
mysql-2 Pod의 상세 상태 확인
읽기 엔드포인트 mysql-read 로 쿼리를 실행해서 mysql-2 Pod로 트래픽이 전달되는지 확인
mysql-read Endpoint에 타켓으로 mysql-2 Pod가 포함되어 있는지 확인
mysql-2 Pod의 ReadinessProbe가 성공하도록 수정
mysql-2 Pod의 상태 확인
mysql-read Endpoint에 타켓으로 mysql-2 Pod가 포함되어 있는지 확인
StatefulSet의 Replica 갯수를 0개로 조정
Pod 상태 확인
PVC가 삭제되었는지 확인
StatefulSet의 Replica 갯수를 3개로 조정
Pod 상태 확인
새로운 PVC가 생성되었는지 확인
기존에 생성한 데이터베이스 및 레코드가 존재하는지 확인
Ctrl+C를 입력해서 위에서 실행한 프로세스 종료
StatefulSet 삭제
PVC가 삭제되었는지 확인
StatefulSet 재생성
Pod 생성 확인
새로운 PVC가 생성되었는지 확인
기존에 생성한 데이터베이스 및 레코드가 존재하는지 확인
Ctrl+C를 입력해서 위에서 실행한 프로세스 종료
리소스 삭제
Last updated