k8s

개요EKS의 HPA를 찾아보는 과정에서 Karpenter라는 키워드를 많이 듣기도 했고, 여러 세션에서 Karpenter에 대한 설명도 조금씩은 들었었다. 그래서 정리해보고자 한다. 기존의 Autoscaling기존에 EKS에서 오토 스케일링을 위해서는 Cluster Autoscaler(CA) 를 이용한 것으로 보인다. Cluster Autoscaler(CA)란?Cluster Autoscaler(CA)란 Kubernetes 클러스터가 워크로드에 따라 용량을 자동으로 조절하는 기능을 하는 도구이다. 개발자가 Pod를 많이 배포하거나 HPA 과정에서 새로 생성된 Pod가 Node의 리소스 부족으로 인해 Pending 상태에 빠지게 되면 Node를 Scale Out 해 Pod를 배치하는 방식이다.CA의 작동방식..
정의 Helm이란 Chart라는 패키지 형식을 사용해 Kubernetes의 패키지 관리를 도와준다. 여기서 Chart는 Kubenernetes 리소스의 집합을 설명하는 Yaml 파일 모음이라고 생각하면 된다. 흔히 패키지 관리를 도와주는 npm과 pip와 같은 역할을 하는데 Helm의 경우 Pod를 구성하기 위해 필요한 모든 리소스들을(예: 서비스, 디플로이먼트, 파드 등) 패키지화 한 것이라고 생각하면 된다. Helm Chart를 검색하는 방법은 구글에서 원하는 것 + helm chart라고 검색하면 Github 링크가 나올 것이다. 유명한 툴들은 보통 공식 github에 helm chart가 다 구성되어 있으니 이렇게 찾으면 된다. 그게 아니어도 https://artifacthub.io/ 라는 좋은 ..
· 책, 강의
서비스 : 클라이언트가 파드를 검색하고 통신을 가능하게 함 파드는 일시적이다. 파드가 파드를 위한 공간을 확보하려고 노드에서 제거되거나, 누군가 파드 수를 줄이거나, 클러스터 노드의 장애로 언제든 다른 노드로 이동할 수 있다. 쿠버네티스는 노드에 파드를 스케줄링한 후 파드가 시작되기 바로 전에 파드의 IP 주소를 할당한다. 따라서 클라이언트는 서버인 파드의 IP 주소를 미리 알 수 없다. 수평 스케일링은 여러 파드가 동일한 서비스를 제공할 수 있음을 의미한다. 그리고 모든 파드를 단일 IP 주소로 액세스할 수 있어야 한다. 위와 같은 문제를 해결하려고 리소스 유형인 서비스를 제공한다. 5장에서 다루는 내용 단일 주소로 파드를 노출하는 서비스 리소스 만들기 클러스터 안에서 서비스 검색 외부 클라이언트에 서..
· 책, 강의
4장에서 다루는 내용 파드의 안정적인 유지 동일한 파드의 여러 인스턴스 실행 노드 장애 시 자동으로 파드 재스케줄링 파드의 수평 스케줄링 각 클러스터 노드에서 시스템 수준의 파드 실행 배치 잡 실행 잡을 주기적 또는 한 번만 실행하도록 스케줄링 실환경에서는 배포한 애플리케이션이 자동으로 실행되고 수동적인 개입 없이도 안정적인 상태로 유지하기 위해서 레플리케이션컨트롤러 또는 디플로이먼트와 같은 유형의 리소스를 생성해 파드를 생성하고 관리한다. 4.1 파드를 안정적으로 유지하기 파드가 노드에 스케줄링되는 즉시, 해당 노드의 Kubelet은 파드의 컨테이너를 실행하고 파드가 존재하는 한 컨테이너가 계속 실행되도록 할 것이다. 컨테이너의 주 프로세스에 크래시가 발생하면 Kubelet이 컨테이너를 다시 시작한다...
· 책, 강의
3장에서 다루는 내용 파드의 생성, 실행, 정지 파드와 다른 리소스를 레이블로 조직화하기 특정 레이블을 가진 모든 파드에서 작업 수행 네임스페이스를 사용해 파드를 겹치지 않는 그룹으로 나누기 특정한 형식을 가진 워커 노드에 파드 배치 3.1 파드 소개 파드는 함께 배치된 컨테이너 그룹이며 쿠버네티스의 기본 빌딩 블록이다. 컨테이너를 개별적으로 배포하기보다는 컨테이너를 가진 파드를 배포하고 운영한다. 파드는 단일 컨테이너일 수도 여러 개의 컨테이너일 수도 있다. 3.1.1 파드가 필요한 이유 로그를 쌓는 과정에서 A 컨테이너에서 X와 Y 프로세스를 실행한다고 가정했을 때, 모든 프로세스는 동일한 표준 출력으로 로그를 기록하기 때문에 어떤 프로세스가 남긴 로그인지 파악하는 것이 어렵다. 또한, 개별 프로세스..
· 책, 강의
2장에서 다루는 내용 도커를 사용한 컨테이너 이미지 생성, 실행, 공유 로컬에 단일 노드 쿠버네티스 클러스터 실행 구글 쿠버네티스 엔진에서 쿠버네티스 클러스터 설치 kubectl CLI 클라이언트 설정과 사용 쿠버네티스에서 애플리케이션의 배포와 수평 스케일링 2.1 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기 2.1.1 도커 설치와 Hello World 컨테이너 실행하기 책에서는 busybox 컨테이너를 실행했다. busybox는 echo, ls, gzip 등과 같은 UNIX 명령줄 도구들을 합쳐 놓은 단일 실행파일이다. busybox는 docker run을 사용해 어떤 이미지를 다운로드하고 실행할지, 필요하다면 실행할 다른 명령어를 추가적으로 기술하면 된다. $ docker run busybo..
· 책, 강의
1장에서 다루는 내용 최근 소프트웨어의 개발과 배포의 변화 이해 애플리케이션을 격리하고 컨테이너를 사용해 실행 환경 차이 줄이기 쿠버네티스에서 사용되는 컨테이너와 도커의 이해 쿠버네티스로 개발자와 시스템 관리자의 작업 간소화하기 서론 소프트웨어 애플리케이션은 원래 거대한 모놀리스였다. 레거시 시스템은 릴리스 주기가 느리고 비교적 업데이트가 자주 되지 않는다. 거대한 모놀리스 레거시 애플리케이션은 점차 마이크로서비스라는 독립적으로 실행되는 더 작은 구성 요소로 세분화 되고 있다. 오늘날 급변하는 비즈니스 요구사항을 충족시키려면 서로 분리되어 있는 마이크로서비스가 적합하다. 왜? 개별적으로 개발, 배포, 업데이트, 확장 가능하기 때문에. 허나, 배포 가능한 구성 요소가 많아질수록 이를 구성, 관리, 유지하기..
Nowon9159
'k8s' 태그의 글 목록