Kubernetes 30

[쿠버네티스] EKS 에서 크론잡으로 스케줄 동작

들어가며: 잡이란? 크론잡이란? 크론잡 정의 크론잡 실행 내용 크론잡 고유의 설정과 유의점 크론잡으로 동작시키는 컨테이너를 개발할 때 주의점 들어가며: 잡(Job)이란? 잡(Job) 컨트롤러는 파드(컨테이너)의 애플리케이션(잡)의 실행이 완료/종료되는 것에 초점을 맞춘 컨트롤러입니다. 레플리케이션 컨트롤러, 레플리카셋, 데몬셋은 파드의 애플리케이션이 계속적으로 잘 동작하는 것을 초점으로 맞춘 것에 대비됩니다. 즉, 애플리케이션이 실행되고 실행이 완료되면 파드의 할 일이 끝난 것으로 간주하고 파드를 종료시킵니다. 잡 컨트롤러는 임시(Ad-hoc) 작업 및 배치(Batch) 작업에 유용하게 사용될 수 있습니다. 만약 애플리케이션이 실행되고 있는 중에 노드가 죽거나 파드의 실행이 완료되지 않았다면, 파드를 다..

[쿠버네티스] EKS를 활용한 디플로이먼트와 하위에 생성되는 레플리카셋

들어가며: 디플로이먼트란? 디플로이먼트 구성파일 디플로이먼트 생성 디플로이먼트 목록 표시 레플리카셋이란? 디플로이먼트 하위에 생성되는 레플리카셋 파드란? 레플리카셋으로 생성되는 파드 kubectl describe 명령으로 상세 정보 수집 들어가며: 해당 포스팅은 클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트를 참고하여 작성했습니다. 클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트 - YES24 애플리케이션 엔지니어도 쉽게 배우는 실전 쿠버네티스 프로젝트를 만난다!클라우드 컴퓨팅, 컨테이너, 쿠버네티스라는 세 가지 인프라 관련 기술이 등장하면서 최신 서비스 개발 환경은 클라 www.yes24.com 디플로이먼트 업데이트 전략 대한 설명 추가적인 설명을 원한다면 이전 포스팅을 참고하시기 바랍니다. 디플..

파드 란? , 다중 컨테이너가 동작하는 파드

파드란? nginx 컨테이너 단독 구성 파일 예제 다중 컨테이너가 동작하는 파드 사이드카 패턴 앰버서더 패턴 파드 초기화 컨테이너 파드 란? 쿠버네티스에서 프로그램을 동작시키는 기본 단위 관련성 있는 하나 이상의 컨테이너를 합쳐놓은 오브젝트 nginx 컨테이너 단독 구성 파일 예제 # 02_nginx_k8s.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: app: nginx-app spec: containers: - name: nginx-container image: nginx ports: - containerPort: 80 apiVersion: v1은 이 매니페스트 파일에서 정의된 오브젝트가 준수해야 하는 사양의 버전을 설정. 자세한 설..

[쿠버네티스] 쿠버네티스 란?

들어가며: 컨테이너에 대한 이해 쿠버네티스 배경 지식: 쿠버네티스가 탄생한 이유 쿠버네티스 어원과 역사 들어가며: 컨테이너에 대한 이해 컨테이너에 대한 이해는 이전 포스트를 참고하시기 바랍니다. 쿠버네티스 배경 지식: 쿠버네티스가 탄생한 이유 컨테이너 가상화 기술은 서비스간에 자원격리를 하는데 OS를 별도로 띄우지 않아도 되기에 자동화에 빠르고, 자원 효율이 매우 높습니다. 그리하여 도커가 유명세를 탔습니다만. 도커는 하나의 서비스를 컨테이너에 가상화시켜서 배포하는 것이지 컨테이너에 배포된 많은 서비스를 관리하는 것, 컨테이너 오케스트레이터의 역할은 하진 않습니다. 쿠버네티스는 컨테이너 오케스트레이터를 수행해주는 도구의 종류 중 1가지 입니다. Auto scaling 을 이용한 탄력적인 자원 사용이라고 ..

[쿠버네티스] k8s 잡(Job) 컨트롤러란? 단일잡, 다중잡, 병렬잡

들어가며: 잡소개 잡 컨트롤러의 레이블 셀렉터 잡 컨트롤러 잡 컨트롤러 생성 잡 컨트롤러 확인 잡 컨트롤러 삭제 다중 잡 컨트롤러 다중 잡 컨트롤러 생성 다중 잡 컨트롤러 확인 다중 잡 컨트롤러 삭제 병렬 다중 잡 컨트롤러 병렬 다중 잡 컨트롤러 생성 병렬 다중 잡 컨트롤러 확인 병렬 다중 잡 컨트롤러 삭제 잡의 종료 파드 백오프(backoff) 유효 데드라인 들어가며: 잡 소개 잡(Job) 컨트롤러는 파드(컨테이너)의 애플리케이션(잡)의 실행이 완료/종료되는 것에 초점을 맞춘 컨트롤러입니다. 레플리케이션 컨트롤러, 레플리카셋, 데몬셋은 파드의 애플리케이션이 계속적으로 잘 동작하는 것을 초점으로 맞춘 것에 대비됩니다. 즉, 애플리케이션이 실행되고 실행이 완료되면 파드의 할 일이 끝난 것으로 간주하고 파드..

[쿠버네티스] k8s 레플리카셋(ReplicaSet) 이란? & 레플리케이션 컨트롤러와의 비교

들어가며: 레플리카셋를 왜 쓰는걸까요? 레플리카셋과 레플리케이션 컨트롤러의 비교 레플리카셋 생성 레플리카셋 확인 레플리카셋의 레이블 셀렉터 사용 matchLabels 레이블 셀럭터 matchExpressions 레이블 셀럭터 matchExpressions를 사용한 레플리카셋 생성 파드의 수평 스케일링 레플리케이션 컨트롤러 및 파드 삭제 들어가며 : 레플리카셋(replicaSet)를 왜 쓰는걸까요? 쿠버네티스의 기본 단위인 Pod는 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 훌륭한 컨테이너 묶음입니다. 그러나 YAML에 포드만 정의해 생성하게 되면 이 Pod의 생애 주기(Lifecycle)은 컨테이너 삭제 시 영원히 사라지게 됩니다. 이처럼 yaml 파일에 포드만 정의해 생성할..

[쿠버네티스] k8s 스테이트풀셋을 이용한 MySQL 백업 복제본 구성

들어가며: 전체적인 설명 MySQL 설정 파일 컨피그맵 생성 서비스 생성 고가용성을 위한 MySQL 데이터베이스 생성 MySQL 데이터베이스 확인 들어가며: 전체적인 설명 공식 MySQL이미지를 이용하여 스테이트풀셋이 관리할 파드를 2개를 생성합니다. 2개를 생성하는 이유는 데이터베이스의 백업 복제본을 제공하기 위함입니다. 당연하지만 각각의 파드는 각각의 PVC를 요청하고 다른 PV를 사용함에 따라 별도의 상태를 가질 수 있습니다. MySQL 데이터베이스의 백업 복제본을 위해 xtrabackup을 이용하여 복제본을 구성하고, 첫 번째 생성되는 파드는 마스터(읽기/쓰기)로, 두 번째부터 생성되는 파드는 슬레이브(읽기 전용)로 구성됩니다. 마스터와 슬레이브용 설정 파일을 컨피그맵에 등록하고, 서비스는 데이터..

[쿠버네티스] 쿠버네티스 스테이트풀셋 (StatefulSet) 소개 및 관리

들어가며: 기존 컨트롤러의 문제점 스테이트풀셋(StatefulSet) 소개 스테이트풀셋 이란? 스테이트풀셋의 주의사항 스테이트풀셋의 파드 이름 규칙 스테이트풀셋의 파드 DNS 주소 규칙 스테이트풀셋의 스토리지 볼륨 스테이트풀셋의 스케일링 스테이트풀셋 관리 스테이트풀셋 기본 살펴보기 스테이트풀셋의 볼륨 클레임 템플릿 들어가며: 기존 컨트롤러라고 하면 레플리케이션 컨트롤러나 레플리카셋과 같은 본제본을 가지고 있는 컨트롤러를 의미합니다. 이후에서는 상징적으로 레플리카셋 컨트롤러로 대표해서 이야기 해보도록 하겠습니다. 레플리카셋은 파드 템플릿(replicaset.spec.template)에서 파드의 복제본을 생성합니다. 다음은 레플리카셋의 파드 템플릿의 예 입니다. ... template: metadata: l..

[쿠버네티스] 디플로이먼트 업데이트 전략(RolliingUpdate, ReCreate, Blue/Green, Canary)

들어가며: 디플로이먼트 란? 디플로이먼트의 전략 RollingUpdate Recreate 디플로이먼트 생성 및 확인 디플로이먼트 롤아웃 상태 확인 디플로이먼트 롤링업데이트 들어가며: 디플로이먼트 란? Deployment는 쿠버네티스에서 가장 널리 사용하는 오브젝트 중 한개입니다. 레플리카셋(ReplicaSet) 컨트롤러와 지금은 거의 사용하지않는 레플리케이션(Replication) 컨트롤러는 파드를 생성하고 관리합니다. 레플리케이션 컨트롤러보다 더 상위 수준의 컨트롤러 리소스가 있습니다. 그것이 디플로이먼트(Deployment) 리소스 입니다. 디플로이먼트는 애플리케이션(컨트롤러, 파드)을 배포하고 선언적으로 업데이트를 수행하는 리소스입니다. 디플로이먼트 리소스는 하위에 레플리카셋 컨트롤러를 제어하고 그..

[쿠버네티스] 쿠버네티스 인그레스 (ingress) 소개 및 실습

들어가며: 인그레스(Ingress) 란? 인그레스 생성 들어가며: 쿠버네티스에서 서비스를 외부에 노출시키는 방법은 NodePort와 LoadBalancer 서비스 타입 그리고 Ingress(인그레스) 서비스 컨트롤러가 있습니다. NodePort 및 LoadBalancer 서비스는 OSI Layer 4(TCP/UDP)에서 작동하지만, Ingress 리소스는 OSI Layer 7(HTTP/HTTPS)에서 작동합니다. 쿠버네티스에서 외부에 노출시켜야 할 서비스가 많은 경우 NodePort는 각 서비스마다 전용의 포트를 할당해야 하고 LoadBalancer의 경우 외부 로드밸런서가 각 서비스마다 프로비저닝 되어야 합니다. 그러나 Ingress는 HTTP 요청의 주소를 구분해 하나의 인그레스 리소스를 이용해 각 ..