안녕하세요 늑대양입니다 😍
이번에 CloudNet@에서 진행하는 Production Kubernetes Online Study(PKOS)에 참여하여 관련 내용을 공유드리고자 합니다.
오늘은 PKOS 스터디 3주차 학습 내용을 안내해드리록하겠습니다.
CloudNet@ 팀 블로그 Main URL:
https://www.notion.so/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863
CloudNet@ Blog
CloudNet@ 팀에서 Cloud Infra & Network 기술에 대한 정보를 공유하는 블로그 입니다.
www.notion.so
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
Amazon EC2 인스턴스 스토어 - Amazon Elastic Compute Cloud
Amazon EC2 인스턴스 스토어 인스턴스 스토어는 인스턴스에 블록 수준의 임시 스토리지를 제공합니다. 스토리지는 호스트 컴퓨터에 물리적으로 연결된 디스크에 위치합니다. 인스턴스 스토어는
docs.aws.amazon.com
SSD 인스턴스 스토어 볼륨 - Amazon Elastic Compute Cloud
SSD 인스턴스 스토어 볼륨 Linux의 SSD 인스턴스 스토어 볼륨에 최상의 IOPS 성능을 보장하려면 Amazon Linux의 최신 버전을 사용하거나 커널 버전이 3.8 이상인 기타 Linux AMI를 사용하는 것이 좋습니다.
docs.aws.amazon.com
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) 방식 존재
Home - Ceph
Reliable and scalable storage designed for any organization Use Ceph to transform your storage infrastructure. Ceph provides a unified storage service with object, block, and file interfaces from a single cluster built from commodity hardware components. D
ceph.io
AWS EBS Controller
AWS EBS Controller 관련 github URL: https://github.com/kubernetes-sigs/aws-ebs-csi-driver
GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/
CSI driver for Amazon EBS https://aws.amazon.com/ebs/ - GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/
github.com
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
Volume Snapshots
In Kubernetes, a VolumeSnapshot represents a snapshot of a volume on a storage system. This document assumes that you are already familiar with Kubernetes persistent volumes. Introduction Similar to how API resources PersistentVolume and PersistentVolumeCl
kubernetes.io
GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/
CSI driver for Amazon EBS https://aws.amazon.com/ebs/ - GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/
github.com
Addons - kOps - Kubernetes Operations
kOps addons kOps supports two types of addons: Managed addons, which are configurable through the cluster spec Static addons, which are manifest files that are applied as-is Managed addons The following addons are managed by kOps and will be upgraded follo
kops.sigs.k8s.io
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
Amazon EFS CSI driver - Amazon EKS
Because Amazon EFS is an elastic file system, it doesn't enforce any file system capacity limits. The actual storage capacity value in persistent volumes and persistent volume claims isn't used when creating the file system. However, because storage capaci
docs.aws.amazon.com
GitHub - kubernetes-sigs/aws-efs-csi-driver: CSI Driver for Amazon EFS https://aws.amazon.com/efs/
CSI Driver for Amazon EFS https://aws.amazon.com/efs/ - GitHub - kubernetes-sigs/aws-efs-csi-driver: CSI Driver for Amazon EFS https://aws.amazon.com/efs/
github.com
과제
과제 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
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/025.gif)
긴 글 읽어주셔서 감사합니다 😍
'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 |