본문 바로가기

Infrastructure/Kubernetes

(91)
[클러스터 아키텍처] 가비지 수집 가비지 수집 쿠버네티스 공식문서를 확인하며 가비지 수집에 대해서 기억해야 하는 부분을 기록한다. 가비지 수집은 쿠버네티스가 클러스터의 자원을 정리하기 위해 사용하는 다양한 방법을 종합한 용어로 아래와 같은 리소스를 정리한다. 실패한 파드 종료된 잡 소유자 참조가 없는 오브젝트 사용되지 않는 컨테이너와 컨테이너 이미지 반환 정책이 삭제인 스토리지클래스에 의해 동적으로 생성된 퍼시스턴트볼륨 Stale 또는 만료된 CertificateSigningRequests(CSRs) 노드는 아래와 같은 상황에서 삭제된다. 클러스터가 클라우드 컨트롤러 매니저를 사용하는 클라우드 클러스터가 클라우드 컨트롤러 매니저와 유사한 애드온을 사용하는 온프레미스 노드 리스(Lease) 오브젝트 소유자(Owners)와 종속(Depend..
[클러스터 아키텍처] cgroup v2 cgroup v2 쿠버네티스 공식문서를 확인하며 cgroup v2에 대해서 기억해야 하는 부분을 기록한다. 리눅스에서는 통제 그룹(control group) 프로세스에 할당되는 리소스를 제한한다. kubelet 기본 컨테이너 런타임은 cgroup과 인터페이스하여 컨테이너화 된 워크로드에 대한 CPU/Memory 요청 및 제한과 같은 리소스 관리를 해야 한다. 리눅스에는 cgroup v1 및 cgroup v2 두 가지 버전이 존재하고 여기서 cgroup v2가 cgroup API의 새로운 버전이다. cgroup v2는 무엇인가 cgroup v2는 Linux cgroup API의 다음 버전으로 cgroup v2는 기존에 비해 향상된 리소스 관리 기능을 갖춘 통합 제어 시스템을 제공한다. cgroup v2는 ..
[클러스터 아키텍처] 클라우드 컨트롤 매니저 클라우드 컨트롤 매니저 쿠버네티스 공식문서를 확인하며 클라우드 컨트롤 매니저에 대해서 기억해야 하는 부분을 기록한다. 클라우드 인프라스트럭처 기술을 통해 퍼블릭, 프라이빗 그리고 하이브리드 클라우드에서 쿠버네티스를 실행할 수 있다. 쿠버네티스는 컴포넌트간의 긴밀한 결합없이도 자동화된 API 기반의 인프라스트럭처를 신뢰한다. 클라우드 컨트롤 매니저는 클라우드별 컨트롤 로직을 포함하는 컨트롤 플레인의 컴포넌트이다. 클라우드 컨트롤 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고, 해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 클러스터와 상호 작용하는 컴포넌트를 구분할 수 있게 해준다. 쿠버네티스와 기본 클라우드 인프라스트럭처 간의 상호 운용성 로직을 분리함으로써, cloud-controller..
[클러스터 아키텍처] 컨트롤러 컨트롤러 쿠버네티스 공식문서를 확인하며 컨트롤러에 대해서 기억해야 하는 부분을 기록한다. “컨트롤 루프”는 로보틱스와 자동화에서 시스템 상태를 조절하는 종료되지 않는 루프이며 실내 온도 조절기 등에서 사용된다. 사용자는 원하는 온도(의도한 상태)를 온도 조절기에 알려주고 온도 조절기는 장비를 켜거나 꺼서 현재 상태를 사용자가 원하는 상태로 가깝게 하기 위해 작동한다. 쿠버네티스 컨트롤러는 클러스터의 상태를 관찰한 다음, 필요한 경우에 생성 또는 변경을 요청하는 컨트롤 루프로, 현재 클러스터 상태를 사용자가 의도한 상태에 가깝게 하기 위해 작동한다. 컨트롤러 패턴 컨트롤러는 적어도 하나 이상의 쿠버네티스 리소스 유형을 추적한다. 오브젝트는 의도한 상태를 표현하는 사양 필드를 가지고 있으며 현재 상태를 의도..
[클러스터 아키텍처] 컨트롤 플레인-노드 간 통신 쿠버네티스 공식문서를 확인하며 컨트롤 플레인-노드 간 통신에 대해서 기억해야 하는 부분을 기록한다. API 서버와 클러스터 사이에 대한 통신 경로의 목록을 알아본다. 사용자가 신뢰할 수 없는 네트워크나 클라우드 공급자의 완전 퍼블릭 IP에서 클러스터를 실행할 수 있도록 네티워크 구성을 강화하기 위한 설비를 할 수 있도록 한다. 노드에서 컨트롤 플레인으로의 통신 쿠버네티스에는 “허브 앤 스포크(hub-and-spoke)” API 패턴을 가지고 있다. 노드와 파드의 모든 API 사용은 API 서버에서 종료된다. 다른 컨트롤 플레인 컴포넌트 중 어느 것도 원격 서비스를 노출하도록 설계되지 않았다. API 서버는 하나 이상의 클라이언트 인증 형식이 활성화된 보안 HTTPS 포트에서 원격 연결을 수신하도록 구성된..
[클러스터 아키텍처] 노드 노드 쿠버네티스 공식문서를 확인하며 쿠버네티스 노드에 대해서 기억해야 하는 부분을 기록한다. 쿠버네티스는 컨테이너를 파드내에 배치하고 노드에서 실행함으로 워크로드를 구동한다. 노드는 클러스터에 따라 가상 또는 물리적 머신일 수 있다. 각 노드는 컨트롤 플레인에 의해 관리되는 파드를 실행하는 데 필요한 서비스를 포함한다. 일반적으로 클러스터에는 여러 개의 노드가 있으며, 학습 또는 리소스가 제한되는 환경에서는 하나만 있을 수도 있다. 노드의 컴포넌트에는 kubelet, 컨테이너 런타임 그리고 kube-proxy가 포함된다. 관리 API 서버에 노드를 추가하는 아래에 있는 두가지 주요 방법이 있다. 노드는 kubelet으로 컨트롤 플레인에 자체 등록 사용자(또는 다른 사용자)가 노드 오브젝트를 수동으로 추가..
[K8S] 오브젝트 - 2 쿠버네티스 공식문서를 확인하며 레이블, 셀렉터, 파이널라이저에 대해서 기억해야 하는 부분을 기록한다. 레이블과 셀렉터 레이블은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 오브젝트의 특성을 식별하는 데 사용되어 사용자에게는 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브젝트의 하위 집합을 선택하고, 구성하는데 사용할 수 있다. 오브젝트를 생성할 때에 붙이거나 생성 이후에도 언제든지 수정이 가능하다. 오브젝트마다 미와 값으로 레이블을 정의할 수 있으며 키는 고유한 값이어야 한다. 레이블은 UI와 CLI에서 효율적인 쿼리를 사용하고 검색에 사용하기 적합하며, 식별되지 않는 정보는 애너테이션으로 기록해야 한다. 사용 동기 레이블을 사용하면 사용자가 느슨하게 결합한 방식으로 조직 구조와 시..
[K8S] 오브젝트 - 1 쿠버네티스 공식문서를 확인하며 쿠버네티스 오브젝트와 ID, 네임스페이스에 대해서 기억해야 하는 부분을 기록한다. 쿠버네티스 오브젝트가 쿠버네티스 API에서 어떻게 표현되고, 그 오브젝트를 어떻게 .yaml 형식으로 표현할 수 있는지에 대해 이해한다. 쿠버네티스 오브젝트는 쿠버네티스 시스템에서 영속성을 가지는 오브젝트로 클러스터의 상태를 나타내기 위해 이 오브젝트를 이용하며 아래와 같은 정보를 포함할 수 있다. 어떤 컨테이너화된 애플리케이션이 동작 중인지(그리고 어느 노드에서 동작 중인지) 그 애플리케이션이 이용할 수 있는 리소스 그 애플리케이션이 어떻게 재구동 정책, 업그레이드, 내고장성과 같은 것에 동작해야 하는지에 대한 정책 쿠버네티스 오브젝트는 “하나의 의도를 담은 레코드”로 오브젝트를 생성하게 되..