본문 바로가기

⭐ Kubernetes & EKS

(140)
Horizontal Pod Autoscaler를 이용한 파드 오토스케일링 # 쿠버네티스 에서는 두가지의 오토스케일링 정책을 제공한다. 1. Cluster Autoscaler : AWS EC2의 오토스케일링과 같이 EC2 인스턴스 자체를 스케일 아웃 하여 신규로 생성하는 것을 말한다. 2. Horizontal Pod Autoscaler : HPA : pod에 스케일 아웃 옵션을 주어 해당 리소스가 임계값을 초과해서 사용할 경우 pod를 증가시키는 방법이다. # 여기서 Cluster Autoscaler는 생략하고, HPA에 대해서 설명하도록 하겠다. 1. 메트릭 서버배포 - pod의 자원 현황을 실시간으로 확인해야 하므로 지표값을 수집하는 역할을 하는 메트릭 서버를 배포한다. - 배포하는 방법은 다양하다. # pod와 node들의 자원을 모니터링 하는 방법에 대해서 알아보자. -..
EKS 리소스 관리 (requests와 limits) # 도커 컨테이너와 pod의 차이점 - 도커 : 도커 컨테이너는 일단 동작하면 부하에 따라 호스트의 CPU나 메모리를 사용할 수 있는 만큼 사용한다. - k8s 의 pod : 쿠버네티스 에서는 파드가 사용할 CPU/메모리의 양을 설정하고 호스트에 최소한의 부하를 주도록 설정하는 구조가 있다. (pod별 리소스 사용량을 지정 가능) 1. 예제 소스 코드를 활용한 requests와 limits 설명 - 예제코드 전체 apiVersion: apps/v1 kind: Deployment metadata: name: backend-app labels: app: backend-app spec: replicas: 2 selector: matchLabels: app: backend-app template: metadat..
pod의 헬스체크 (Readiness Probe와 Liveness Probe) # pod와 연결된 서비스를 모니터링하기 - pod와 연결된 서비스를 모니터링하는 방법은 2가지가 있다. - Readiness Probe와 Liveness Probe 이다. 1. Readiness Probe : 애플리케이션의 정상여부 확인, 정상이라고 판단되면 서비스를 통해 트래픽을 수신 ex) 예를들어 애플리케이션이 동작할때 헬스체크 응답용 페이지를 생성해두고 HTTP로 그 페이지에 접속해 상태 코드가 200으로 돌아오면 서비스를 통해 접속하는 등의 방법을 사용할 수 있다. - 예제 파일을 통해 확인 (전체 리소스 파일 - Readiness Probe와 Liveness Probe의 내용을 중점적으로 보자.) apiVersion: apps/v1 kind: Deployment metadata: name: ..
컨테이너를 외부로 공개하기 위한 리소스 # 컨테이너를 외부로 공개하는 방법 - 파드를 서비스로 묶기 쿠버네티스에서는 서비스 리소스를 이용하여 파드 여러개를 묶어 하나의 DNS 이름으로 접속 할 수 있다. 또한 서비스를 이용하면 대상 리소스에서 정상적으로 동작하는 파드에만 요청을 할당할 수있다. 1. 서비스 리소스 타입 ClusterIP : 서비스에 대해 내부에서 유요한 IP 주소를 부여, 클러스터 외부에서 는 접속 불가 NodePort : 각 노드에서 해당 서비스를 접속하기 위해 포트를 열고 외부에서 접속 가능하도록 한다 LoadBalancer : Nodeport에서 열린 각각의 서비스 공개용 포트를 묶는 형태로 클러스터 외부에 로드밸런서를 구축한다. (EKS의 경우 기본으로 CLB가 생성되고 설정에 따라 NLB로 변경 가능하다. ALB는 사..
쿠버네티스 YAML configuration 파일 설명 및 YAML 문법 검사 사이트 # 쿠버네티스의 YAML 설정 파일에 대해서 알아보자. - Deployment란? 디플로이먼트는 간단하게 말해서 pod + 리플리카 셋 입니다. 리플리카 셋은 파드의 수를 수시로 체크하고 상태를 유지해주는 오브젝트 입니다. 디플로이 먼트를 생성할때는 기본적으로 create, apply를 사용합니다. - Configuration 파일의 3가지 구성요소? 1. metadata : 리소스의 라벨, 이름 등을 지정함 2. specificaion : 각 컴포넌트에 대한 상세 설명 및 어떤 오브젝트 종류인지에 내용을 설명 3. status : 쿠버네티스가 자동으로 생성, 자신의 원하는 상태가 되도록 현재 상태를 나타냄 - 예를 들어 spec에 replicas가 2라고 명시되어 있지만 현재 상태는 status에는 1..
pod 생성 및 삭제 # 쿠버네티스에서 pod을 생성하고 삭제하는 방법에 대하여. # pod 생성 kubectl에는 create와 appy가 있는데, create -f 로 하면 이후에 apply를 통해 다시 반영할 수 없다. 하지만 처음부터 apply -f 로 하면 계속 apply할 수 있다는 차이점이 있다. $ kubectl create -f nginx-deployment.yaml pod 상태를 조회한다. $ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-adwasd 0/1 Pending 0 6m nginx-deployment-asdwsdw 0/1 Pending 0 6m 3. pod 삭제 $ kubectl delete -f nginx-deployment...
pod 재시작 # kubernetes Pod 재시작 사용법 : kubectl get pod -n -o yaml | kubectl replace --force -f- kubectl get pod -n -o yaml | kubectl replace --force -f- 문법을 보면 알겠지만 파드(Pod)를 재시작한다라기 보다 삭제하고 다시 만든다고 보는게 맞을것 같다. 예시) web Pod 재시작 shell> kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.11 443/TCP 10d web ClusterIP 10.105.13.151 8080/TCP 40h web2 ClusterIP 10.105.146.101 8..
쿠버네티스 Basic Architecture, 기본 아키텍처 # 쿠버네티스의 기본 아키텍처와 서비스에 대해서 알아보자. - 쿠버네티스의 기본 구성은 pod, 레플리카셋, 디플로이먼트, 서비스(클러스터IP, 노드포트, 로드밸런서), Ingress - pod : Pod 는 쿠버네티스에서 가장 기본적인 배포 단위로, 컨테이너를 포함하는 단위이다. 쿠버네티스의 특징중의 하나는 컨테이너를 개별적으로 하나씩 배포하는 것이 아니라 Pod 라는 단위로 배포하는데, Pod는 하나 이상의 컨테이너를 포함한다. - ReplicaSet : 레플리카셋이란? 쿠버네티스에서 가장 유명한 특징중 하나는 "pod이 죽었을때 다시 복구해준다" 입니다. pod을 복구해주는 resource는 대표적으로 레플리케이션 컨트롤러(replication-controller)와 레플리카셋(replicaset)..