728x90
반응형
안녕하세요 늑대양입니다 😍
이번에 CloudNet@에서 진행하는 Production Kubernetes Online Study(PKOS)에 참여하여 관련 내용을 공유드리고자 합니다.
오늘은 PKOS 스터디 3주차 학습 내용을 안내해드리록하겠습니다.
CloudNet@ 팀 블로그 Main URL:
https://www.notion.so/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863
Production Kubernetes Online Study - 3주차
3주차 학습 주제: 쿠버네티스 인그레스 & 스토리지 (Ingress & AWS EBS/EFS Controller)
Index.
- 이론
- 실습 환경 배포 (c5d.large 타입으로 변경)
- Ingress
- 쿠버네티스 스토리지
- AWS EBS Controller
- AWS Volume SnapShots Controller
- AWS EFS Controller
- 과제
- 과제 1. Ingress(with 도메인, 단일 ALB 사용)에 PATH /mario 는 mario 게임 접속하게 설정하고, /tetris 는 tetris 게임에 접속하게 설정하고, SSL 적용 후 관련 스샷 올려주세요
- 과제 2. 호스트 Path(local-path-provisioner) 실습 및 문제점 확인과 성능 측정 후 관련 스샷 올려주세요
- 과제 3. AWS EBS를 PVC로 사용 후 온라인 볼륨 증가 후 관련 스샷 올려주세요
- 과제 4. AWS Volume SnapShots 실습 후 관련 스샷 올려주세요
실습 환경 배포 (c5d.large 타입으로 변경)
- 이번 주 실습에서 파드를 다수 배포하여 c타입으로 변경
- c5d.large EC2 인스턴스 스토어 활용(임시 블록 스토리지)
- Amazon EC2 인스턴스 스토어 관련 링크: https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/InstanceStorage.html
Ingress
Ingress 개요:
- 클러스터 내에서 실행되는 서비스에 대한 외부 액세스를 관리하는 트래픽 라우팅 시스템!!
- 클러스터 내부의 서비스(Cluster IP, NodePort, LoadBalancer)를 외부로 노출(HTTP/HTTPS)
- 외부 트래픽을 위한 단일 진입점 제공
- SSL/TLS 암호화 적용
- Web Proxy 역할
- URL rewriting 및 request redirection 제공
쿠버네티스 스토리지
- 파드 내부의 데이터는 파드가 정지되면 모두 삭제됨 → 즉, 파드들모두 상태가 없는(Stateless) 애플리케이션!!
- 파드를 사용할 때, 데이터베이스처럼 데이터 보존이 필요 == 상태가 있는(Stateful) 애플리케이션 → 로컬 볼륨(hostPath) ⇒ Persistent Volume(PV) - 어느 노드에서도 연결하여 사용 가능, 예시) NFS, AWS EBS, Ceph 등
- Ceph 관련 참고 URL: https://ceph.com/en/
- 파드가 생성될 때 자동으로 볼륨을 마운트하여 파드에 연결하는 기능 >> 동적 프로비저닝(Dynamic Provisioning)
- PV의 사용이 끝났을 때, 해당 볼륨은 어떻게 초기화할 것인지 별도로 설정 가능 >> 이를 Reclaim Policy 라고 부름
- Reclaim Policy 에는 크게 Retain(보존), Delete(삭제, 즉 EBS 볼륨도 삭제됨), Recycle(deprecated) 방식 존재
AWS EBS Controller
AWS EBS Controller 관련 github URL: https://github.com/kubernetes-sigs/aws-ebs-csi-driver
AWS Volume SnapShots Controller
Volume snapshot 관련 링크:
- k8s 공식 문서 링크: https://kubernetes.io/docs/concepts/storage/volume-snapshots/
- EBS CSI Driver 관련 깃헙 링크: https://github.com/kubernetes-sigs/aws-ebs-csi-driver/tree/master/examples/kubernetes/snapshot
- 실습 환경 kops에서 사용 관련 링크: https://kops.sigs.k8s.io/addons/#snapshot-controller
AWS EFS Controller
- 실제 프로젝트 환경에서 사용했던 EFS Controller 관련 내용
- AWS 공식 docs 링크: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html
- EFS CSI Driver 관련 github 링크: https://github.com/kubernetes-sigs/aws-efs-csi-driver
과제
과제 1. Ingress(with 도메인, 단일 ALB 사용)에 PATH /mario 는 mario 게임 접속하게 설정하고, /tetris 는 tetris 게임에 접속하게 설정하고, SSL 적용 후 관련 스샷 올려주세요
과제 2. 호스트 Path(local-path-provisioner) 실습 및 문제점 확인과 성능 측정 후 관련 스샷 올려주세요
yaml 파일에서 hostname 값 변경: i-03e38ea74ba6913b
문제점:
- Kubernetes에서 local-path-provisioner를 사용할 때 발생하는 문제는 각 노드가 동일한 공유 스토리지에 액세스할 수 있어야 함
- 특히 로컬 스토리지가 일시적인 클라우드 환경에서 다중 노드 클러스터에서 설정 및 유지 관리하기 어려울 수 있음
- 또한 로컬 스토리지를 사용하면 클러스터의 확장성과 가용성이 제한될 수 있으며, 노드에 장애가 발생하면 연결된 스토리지도 사용할 수 없음
- 이러한 환경 테스트를 위하여, drain 등을 활용하여 노드 이사를 진행하면 기존의 설정처럼 사용 불가능 >> 무한 pending..
개선방안:
- Amazon EFS와 같은 NFS, GlusterFS와 같은 NAS 사용 >> 여러 노드가 네트워크를 통해 스토리지를 공유 가능
- 가용성과 확장성이 뛰어난 스토리지를 제공할 수 있는 Ceph와 같은 분산 스토리지 솔루션을 구현
- 자동으로 관리되고 고가용성(HA)을 제공하는 공유 스토리지 솔루션을 제공할 수 있는 Amazon EBS 또는 Google Persistent Disk와 같은 클라우드 제공 스토리지 솔루션 사용
- 이러한 솔루션은 local-path-provisioner의 한계를 해결하고 k8s 자원에서 보다 강력한 스토리지 인프라를 제공 가능!!
과제 3. AWS EBS를 PVC로 사용 후 온라인 볼륨 증가 후 관련 스샷 올려주세요
과제 4. AWS Volume SnapShots 실습 후 관련 스샷 올려주세요
# 실습 완료 후, 리소스 삭제 진행
kops delete cluster --yes && aws cloudformation delete-stack --stack-name mykops
긴 글 읽어주셔서 감사합니다 😍
728x90
반응형
'k8s > CloudNet@' 카테고리의 다른 글
[CloudNet@] Production Kubernetes Online Study - 6주차. (0) | 2023.02.25 |
---|---|
[CloudNet@] Production Kubernetes Online Study - 5주차. (3) | 2023.02.19 |
[CloudNet@] Production Kubernetes Online Study - 4주차. (0) | 2023.02.12 |
[CloudNet@] Production Kubernetes Online Study - 2주차. (0) | 2023.01.29 |
[CloudNet@] Production Kubernetes Online Study - 1주차. (2) | 2023.01.10 |