Cloud Study - Kubernetes, EKS

2021. 3. 26. 16:18Work/Cloud_Devops

728x90
반응형

-> Kubernetes 란?

> 컨테이너화 된 애플리케이션의 배포, 확장 및 관리를 자동화하기위한 오픈소스 시스템(플랫폼)입니다.

> 쿠버네티스란 명칭은 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래했다. 

> k8s라고도 불리는데 이는 k(ubernete)s의 8자리를 따서 부르는 용어다.

> 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다. 

 

-> Kubernetes why?

> 배포 단순화 : 개발자가 운영자의 도움 또는 서버에 지식 없이 자체적으로 애플리케이션을 배포 가능하다.
로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 가능하다.
개발, 테스트, 배포에서 모두 동일하게 동작하고 어떤 머신을 쓰던 동일한 환경 구성이 가능하다.

-> 분산 시스템 : 쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공한다. 
애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공한다. 

-> 안정성 : 쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체 한다. (auto scaling 포함)
OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리 할 수 있다. 

*쿠버네티스 외에 여러 오픈소스 플랫폼이 있지만 사실상 사람들이 많이 쓰게되고 표준 처럼 되면서 사용함

 

-> EKS(Amazon Elastic Kubernetes Service)란?

> 자체 Kubernetes 제어 플레인 또는 노드를 설치, 작동 및 유지 관리할 필요 없이 
AWS에서 Kubernetes를 실행하는 데 사용할 수 있는 관리형 서비스입니다.

> Kubernetes 제어 플레인 인스턴스를 실행하여 고가용성을 보장 합니다.

> 비정상 제어 플레인 인스턴스를 자동으로 감지하고 교체하며, 자동화된 버전 업데이트 및 패치를 제공합니다.

> 오픈 소스 Kubernetes 소프트웨어의 최신 버전을 실행하므로 
Kubernetes 커뮤니티의 모든 기존 플러그인과 도구를 사용할 수 있습니다.

 

-> EKS 작동 방식들

 

 

-> 클러스터 구성

> kubectl 설치, eksctl 설치

> eksctl create cluster

 

-> .yaml 구성

> deployment.yaml

spec:
      containers:
        - name: flask-app
          image: {}.us-east-2.amazonaws.com/flask-repo:latest
          ports:
            - containerPort: 5000


> service.yaml

spec:
  type: LoadBalancer
  selector:
    name: flask-app
  ports:
    - protocol: TCP
      port: 5000
      targetPort: 5000

 

-> eks apply

> kubectl apply -f deployment.yaml.yaml

> kubectl apply -f service.yaml

 

-> eks service

> kubectl get services

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP                                                               PORT(S)          AGE
flask-app    LoadBalancer   {}   {}.us-east-2.elb.amazonaws.com   5000://TCP   102m

 

-> 결과 화면

/

/first

/user

 

*본 내용은 코멘토 직무 부트 캠프를 진행하면서 공부, 혹은 배용 내용들을 정리한 글입니다.

(AWS 해커톤 우승자 출신 글로벌 엔지니어와 클라우드 직무 A to Z)
728x90
반응형