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
감사합니다.