brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Sep 05. 2022

16탄-10. AWS 관리형 쿠버 네티스 컨테이너



AWS 관리형 쿠버 네티스 컨테이너 서비스 Amazon EKS로 애플리케이션 배포 및 운영하기


<1> 쿠버 네티스 필요한 이유?

<2> 마스터 노드 =  컨트롤 플래인을 알아보자

<3>  워커 노드 =  데이터 플래인을 알아보자

<4>  워크로드 생성을 위한 기본 콘셉트

<5> 데이터 플레인 파 게이트 특징

<6> 쿠버 네티스는 인가만 한다.

<7> 사용 가능한 볼륨  3가지

<8> pod/node  자동 확장

<9> 네트워크

<10> EKS 클러스터 생성 방식

<11> 실습



<1> 쿠버 네티스 필요한 이유?


1

스케쥴링 - 서버에  pod를 원하는 데로 배포

배포 컨테이너가 문제가 생겼을 때 자동 처리됨

로드밸런서 사용

auto scaling 됨

롤링 업데이트 배포 - 새 버전 인스턴스를 하나씩 늘려가며, 기존 인스턴스를 하나씩 줄여가는 것.

이동성이 편리하다.  서로 다른 운영 환경에 대한 자유로운 이동.


2

쿠버 네티스는 마스터 노드와 워커 노드로 구성된다




<2> 마스터 노드 =  컨트롤 플래인을 알아보자


1

 API Server?

마스터 노드에 있으며, 쿠버 네티스 api를 호출하는 컨트롤 플래인의 컴포넌트이다.

사용자가 외부에서  kubectl로 명령을 내리는 것을  받아 처리한다.


2

컨트롤 매니저

서비스 운영에 필요한 다양한 컨트롤러를 통합

디플로이먼트 컨트롤러, 리플리카셋 컨트롤러, 노드 컨트롤러 등


3

스케쥴러?

노드가  할당되지 않는 새로운 pod를 노드에 할당되도록 해준다.


4

etcd?

모든 클러스터 데이터를 담는 저 정소로 사용되는 키-값 저장소.




<3>  워커 노드 =  데이터 플래인을 알아보자


1

kube-proxy?

워커 노드에서 실행되는 네트워크 프락시

노드의 네트워크 규칙을 모두 관리한다.

Daemonset  형태로 모든 노드에 배포된다.



2

kubelet?

에이전트로 배포된다.

API 서버와 통신한다.

Pod에서 컨테이너가 동작하도록 관리


3

Pod?

IP  할당.

하나 이상의 컨테이너를 배포할 수 있다.



<4>  워크로드 생성을 위한 기본 콘셉트


POD - 가장 작은 단위 워크로드

ReplicaSet - Pod의 스케줄, 스케일링, 삭제 

Deployment   - 리플리카셋에 대한 관리



<5> 데이터 플레인 파 게이트 특징


비용 청구의 단위가 Pod의 실행시간

노드별로 Pod가 1개 구성된다.  인스턴스 수준으로 격리가 가능하다.

마이크로  VM 이 생성된다.

리소스 제약이 있다.  4 Vcpu, 30 기가 메모리로 제약된다.

스테이스 리스만 가능하다.

NLB 사용할 수 없다.

퍼블릭 서브넷을 사용하지 못한다. NAT  Gateway와 조합이 필요하다.




<6> 쿠버 네티스는 인가만 한다.


1

인증은 하지 않는다.

인증은 IAM에서 한다.


2

쿠버 네티스는  인가를 한다. 권한에 대한 인가를 한다.



3

인증은?

kubectl과 IAM-Authenticator 서버를 이용한다.




<7> 사용 가능한 볼륨  3가지


1

emptydir

Pod 가 실행되는 동안만 사용 가능함. 


2

hostpath

워커 노드가 실행되는 동안만 사용 가능함


3

Persistent volume?

영구적으로 사용 가능.

pod와 독립적으로 존재

pvc생성 후 pv 연결 방식으로 사용한다.

CSI 드라이버를 사용하여야 한다.



<8> pod/node  자동 확장


1

CA?

클러스터 오토스 케일러

pod를 배포할 노드가 부족한 경우 신규 노드(서버)를 증가시키는 것이다.

스케일 아웃


2

HPA?

수평 파드 오토스케일링 , 파드의 수를 늘리는 것

스케일 아웃


3

VPA?

 pod자원이 부족할 경우 큰 pod로 교체 

스케일 업 



4

자동 확장을 위해서는 메트릭 수집을 해야 한다.

cAdvisor에서 메트릭 정보를 수집한다.


5

카펜터 (Karpenter)?

오토스케일링에 포함되지 않고 , 독립적으로 컴퓨팅을 배치할 수 있다.

즉각적으로 노드 추가가 가능하다.




<9> 네트워크


1

쿠버 네티스 pod 간 통신은?

eks에서 할당한 ip 가 아닌 내부 자체적인  ip를 사용해서 , 오버레이 네트워크를 사용한다.

인캡슐레이션 되는 오버해드 발생.


2

AWS는  VPC CNI를 사용한다.

CNI플러그인을 사용하여 기본 VPC 네트워크를 사용한다.

POD가  AWS  CIDR IP를 가진다.

오버 해드가 없다.



3

Cluster IP?

code dns에서 vpc cidr와 다른 ip를 할당한다.

자체 IP라 EKS  클러스터 밖에서는 접속을 못한다.


4

노드 포트?

EKS  클러스터 밖에서는 접속할 수 있게 한다.

클러스터  IP  앞에 노드 포트가 있는 것이다.


5

로드밸런서를 통해  EKS  클러스터 밖에서는 접속할 수 있게 한다.

로드밸런서 - 노드 포트-클러스터를  통해 서비스된다.


6

인그래스를 사용한다.

URL  라우팅이 필요할 때 사용한다.

ALB의 타깃은 인스턴스 모두 혹은 IP mode로 등록 가능(스티키 필요시 IP MODE 사용한다)

IP모드를 사용해야 Pod와 직접 연결된다.

ALB 생성을 위해 IAM 권한 필요.




<10> EKS 클러스터 생성 방식


1

Cloudformation

CDK


2

eksctl  (클라우드 포메이션을 활용하는 것이다)


3

테라폼, Rancher 




<11> 실습


https://awskocaptain.gitbook.io/aws-builders-eks/


https://whchoi98.gitbook.io/k8s/




다음 과정

https://brunch.co.kr/@topasvga/2691







https://brunch.co.kr/@topasvga/2678



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari