새소식

반응형
k8s/CloudNet@

[CloudNet@] Production Kubernetes Online Study - 3주차.

  • -
728x90
반응형

 

 

안녕하세요 늑대양입니다 😍

 

 

 

늑대양 오리지널 버전!!

 

 

 

 

이번에 CloudNet@에서 진행하는 Production Kubernetes Online Study(PKOS)에 참여하여 관련 내용을 공유드리고자 합니다.

 

 

오늘은 PKOS 스터디 3주차 학습 내용을 안내해드리록하겠습니다.

 

 

 

 

CloudNet@ 팀 블로그 메인 커버

 

 

 

 

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 타입으로 변경)

 

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 제공

 

 

 

AWS LoadBalancer Controller + Ingress (ALB) IP 모드 동작, Source: CloudNet@

 

 

 

 

쿠버네티스 스토리지

  • 파드 내부의 데이터는 파드가 정지되면 모두 삭제됨 → 즉, 파드들모두 상태가 없는(Stateless) 애플리케이션!!
  • 파드를 사용할 때, 데이터베이스처럼 데이터 보존이 필요 == 상태가 있는(Stateful) 애플리케이션 → 로컬 볼륨(hostPath) ⇒ Persistent Volume(PV) - 어느 노드에서도 연결하여 사용 가능, 예시) NFS, AWS EBS, Ceph 등
  • 파드가 생성될 때 자동으로 볼륨을 마운트하여 파드에 연결하는 기능 >> 동적 프로비저닝(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 CSI Driver Source: AWS

 

 

 

AWS EBS Controller

AWS EBS CSI Driver 동작 방식

 

 

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 관련 링크:

 

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

 

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 적용 후 관련 스샷 올려주세요

 

마리오 게임 - ALB 분기 처리 및 SSL 적용 완료!

 

 

 

테트리스 게임 - ALB 분기 처리 및 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 자원에서 보다 강력한 스토리지 인프라를 제공 가능!!

 

 

4k 디스크 블록 기준 Read 평균 IOPS 테스트

 

4k 디스크 블록 기준 Write 평균 IOPS 테스트

 

 

 

과제 3. AWS EBS를 PVC로 사용 후 온라인 볼륨 증가 후 관련 스샷 올려주세요

파드 내에서 볼륨 정보 확인

 

 

기존 4Gi 에서 10Gi 로 변경 후, 증가된 볼륨 정보 확인

 

 

 

과제 4. AWS Volume SnapShots 실습 후 관련 스샷 올려주세요

snapshotController spec 추가 후 배포 및 확인 진행

 

 

Volumesnapshot 확인

 

 

EBS 스냅샷 정보 확인

 

 

삭제 작업 진행 전 데이터 확인

 

 

복원 후 데이터 확인

 

 

 

 

 

 

# 실습 완료 후, 리소스 삭제 진행
kops delete cluster --yes && aws cloudformation delete-stack --stack-name mykops

 

 

 

 

 

 

긴 글 읽어주셔서  감사합니다 😍

 

 

 

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.