본문 바로가기

Infrastructure/Kubernetes

(46)
[클러스터 아키텍처] 노드 노드 쿠버네티스 공식문서를 확인하며 쿠버네티스 노드에 대해서 기억해야 하는 부분을 기록한다. 쿠버네티스는 컨테이너를 파드내에 배치하고 노드에서 실행함으로 워크로드를 구동한다. 노드는 클러스터에 따라 가상 또는 물리적 머신일 수 있다. 각 노드는 컨트롤 플레인에 의해 관리되는 파드를 실행하는 데 필요한 서비스를 포함한다. 일반적으로 클러스터에는 여러 개의 노드가 있으며, 학습 또는 리소스가 제한되는 환경에서는 하나만 있을 수도 있다. 노드의 컴포넌트에는 kubelet, 컨테이너 런타임 그리고 kube-proxy가 포함된다. 관리 API 서버에 노드를 추가하는 아래에 있는 두가지 주요 방법이 있다. 노드는 kubelet으로 컨트롤 플레인에 자체 등록 사용자(또는 다른 사용자)가 노드 오브젝트를 수동으로 추가..
[K8S] 오브젝트 - 2 쿠버네티스 공식문서를 확인하며 레이블, 셀렉터, 파이널라이저에 대해서 기억해야 하는 부분을 기록한다. 레이블과 셀렉터 레이블은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 오브젝트의 특성을 식별하는 데 사용되어 사용자에게는 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브젝트의 하위 집합을 선택하고, 구성하는데 사용할 수 있다. 오브젝트를 생성할 때에 붙이거나 생성 이후에도 언제든지 수정이 가능하다. 오브젝트마다 미와 값으로 레이블을 정의할 수 있으며 키는 고유한 값이어야 한다. 레이블은 UI와 CLI에서 효율적인 쿼리를 사용하고 검색에 사용하기 적합하며, 식별되지 않는 정보는 애너테이션으로 기록해야 한다. 사용 동기 레이블을 사용하면 사용자가 느슨하게 결합한 방식으로 조직 구조와 시..
[K8S] 오브젝트 - 1 쿠버네티스 공식문서를 확인하며 쿠버네티스 오브젝트와 ID, 네임스페이스에 대해서 기억해야 하는 부분을 기록한다. 쿠버네티스 오브젝트가 쿠버네티스 API에서 어떻게 표현되고, 그 오브젝트를 어떻게 .yaml 형식으로 표현할 수 있는지에 대해 이해한다. 쿠버네티스 오브젝트는 쿠버네티스 시스템에서 영속성을 가지는 오브젝트로 클러스터의 상태를 나타내기 위해 이 오브젝트를 이용하며 아래와 같은 정보를 포함할 수 있다. 어떤 컨테이너화된 애플리케이션이 동작 중인지(그리고 어느 노드에서 동작 중인지) 그 애플리케이션이 이용할 수 있는 리소스 그 애플리케이션이 어떻게 재구동 정책, 업그레이드, 내고장성과 같은 것에 동작해야 하는지에 대한 정책 쿠버네티스 오브젝트는 “하나의 의도를 담은 레코드”로 오브젝트를 생성하게 되..
[K8S] 쿠버네티스란 쿠버네티스 공식문서를 확인하며 쿠버네티스 개념과 관련하여 기억해야 하는 부분을 기록한다. 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고 확장가능한 오픈소스 플랫폼이다. 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스란 명칭은 키잡이(helmsman)이나 파일럿을 뜻하는 그리스어에서 유래했다. 15년 이상의 구글 경험이 담겨있는 쿠버네티스를 구글이 2014년에 오픈소스화했다. 역사 전통적인 배포(Traditional Deployment)가 이루어지던 시기에는 아래와 같은 특징이 있다. 애플리케이션을 물리 서버에서 실행하였고 하나의 물리적인 서버에 여러 애플리케이션이 실행되면서 리서스를 정의할 방법이 없었기 때문에 리소스 할당의 문제가 발생하였다. 해결책으로 서로 다른 여..
[K8S] 모범 사례 쿠버네티스 공식문서를 확인하며 모범 사례와 관련하여 기억해야 하는 부분을 기록한다. 대형 클로스터에 대한 고려 사항 클러스터는 컨트롤 플레인에서 관리하는 쿠버네티스 에이전트를 실행하는 노드(물리 또는 가상 머신)의 집합이며 v1.25에서는 아래의 기준을 만족하는 설정을 수용하도록 설정되어 있다. 노드 당 파드 110 개 이하. 노드 5,000개 이하. 전체 파드 150,000개 이하. 전체 컨테이너 300,000개 이하. 노드를 추가하거나 제거하여 클러스터를 확장할 수 있지만 수행하는 방법은 클러스터 배포 방법에 따라 다르다. 클라우드 프로바이더 리소스 쿼터 리소스 쿼터는 여러 팀이 노드로 클러스터를 공유할 때 한 팀이 분배된 리소스보다 많은 리소스를 사용하는 것을 의미한다. 여러 노드를 가지는 클러스터..
[K8S] 컨테이너 런타임 쿠버네티스 공식문서를 확인하며 컨테이너 런타임 관련하여 기억해야 하는 부분을 기록한다. kube-apiserver나 kube-proxy와 같은 몇몇 구버네티스 컴포넌트들은 클러스터 내에서 컨테이너 이미지를 통해 배포할 수 있다. 쿠버네티스 컴포넌트들은 가급적 컨테이너 이미지로 실행하는 것을 추천하며, 이를 통해 쿠버네티스가 해당 컴포넌트들을 관리하도록 한다. 컨테이너를 구동하는 컴포넌트(특히 kubelet)는 여기에 속하지 않는다. 쿠버네티스 클러스터를 직접 관리하고 싶지 않다면, 인증된 플랫폼과 같은 매니지드 서비스를 선택할 수도 있다. 광범위한 클라우드 또는 베어 메탈 환경에 걸쳐 사용할 수 있는 표준화된/맞춤형 솔루션도 있다. 클러스터를 직접 관리하는 경우, 공식적으로 지원되는 쿠버네티스 구축 도구..