쿠버네티스 컴포넌트
구버네티스를 배포하면 클러스터를 얻음
- 쿠버네티스 클러스터는 컨테이니화된 응용프로그램을 실행하하는 노드라고 불리우는
워커 머신의 집합
- 모든 클러스터는 최소 한개의 워커 노드를 가진다.
* 워커노드
실제로 Pod들이 주로 적재되는 노드로써 팟들을 유지 및 런타임 환경을 제공
응용프로그램의 구성요소인 Pad를 호스트(실행) 한다.
* 컨트롤 플레인
워커 노드와 클러스터 내 파드를 관리한다.
운영환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고
클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공
쿠버네티스 클러스터 구성요소
* 컨트롤 플레인 컴포넌트
- 클러스터에 관한 전반적인 결정(예 : 스케줄링)을 수행하고 클러스터 이벤트( 예 : 디플로이먼트의 replicas 필드에 대한 요구 조건이 충족되지 않을 경우 새로운 파드를 구동시키는 것)를 감지하고 반응한다.
- 클러스터 내 어떠한 머신에서든지 동작할 수 있다
- 간결성을 위하여 구성 스크립트는 보통 동일 머신 상에 모든 컨트롤 플레인 컴포넌트를 구동 시키고 사용자 컨테이너는 해당 머신 상에 동작 시키지 않는다.
* kube-apiserver
- API 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다.
- API서버는 쿠버네티스 컨트롤 플레인의 프론트 엔드이다.
- 구버네티스 API서버의 주요 구현은 kube-apiserver 이다.
- kube-apiserver는 수평으로 확장되도록 디자인 되었다는 것은 더 많은 인스턴스를 배포해서 확장할 수 있다는 것이다.
- 여러 kube-apiserver 인스턴스를 실행하고 인스턴스간의 트래픽을 균형있게 조절할 수 있다.
* etcd
- 모든 크러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성 고가용성 키-값 저장소
- 쿠버네티스 클러스터에서 etcd를 뒷다늬 저장소로 사용한다면 이 데이터를 백업하는 계획인 필수 이다.
* kube-scheduler
- 노드가 배정되지 않은 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트
- 스케줄링 결정을 위해서 고려되는 요소는 리소스에 대한 개별 및 총체적 요구사항, 하드웨어/소프트웨어/정책적 제약, 어피니티(affinity)및 안티 어피니티(anti-affinity)명세 데이터 지역성 워크로드간 간섭 데드라인을 포함한다.
* kube-controller-manager
- 컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트
- 논리적으로 각 컨트롤러는 분리된 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행된다.
- 다음을 포함
./노드 컨트롤러 : 노드가 다움되었을 때 통지와 대응에 관한 책임을 가진다.
./ 레플리케이션 컨트롤러 : 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드를 유지시켜주는 책임
./ 엔트포인드 컨트롤러 : 엔트포인트 오브젝트를 채운다(서비스와 파드를 연결 시킨다)
./ 서비스 어카운트 & 토큰 컨트롤러 : 새로운 네임스페이스에 대한 기본 계정과 API접근 토큰을 생성한다.
* Cloud-controller-manager
- 클라우드별 컨트롤 로직을 포함하는 쿠버네티스 컨트롤 프레인 컴포넌트이다.
- 클라우드 컨트롤러 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고 해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 클러스터와만 상호작용하는 컴포넌트를 구분할 수 있게 해준다.
- 클라우드 제공자 전용 컨트롤러만 실행한다.
- 자신의 사내 또는 PC내부의 확습환경에서 쿠버네티스를 실행 중인 경우 클러스테에는 클라우드 컨트롤러 매니저가 없다
- 논리적으로 독립적인 여러 컨트롤 루프를 단일 프로세스로 실행하는 단일 바이너리로 결합한다,
- 수평으로 확장(두개 이상의 복제실행)해서 성능을 향상 시키거나 장애를 견딜 수 있다
- 아래의 컨트롤러들은 클라우드 제공 사업자의 의존성을 가질 수 있다.
./ 노드 컨트롤러 : 노드가 응답을 멈춘 후 클라우드 상에서 작제되었는지 판별하기 위해 클라우드 제공 사업자에게 확인하는 것
./ 라우트 컨트롤러 : 기본 클라우드 인프라에 경로를 구성하는 것
./ 서비스 컨트롤러 : 클라우드 제공 사업자 로드밸런서를 생성,업데이트 그리고 삭제하는것
* 노드 컴포넌트
노트 컴포넌트는 동작 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공하며 모든 도느 상에서 동작한다.
* kubelet
- 클러서터의 각 노드에서 실행되는 에이전트, Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리한다.
- Kubelet은 다양한 메커니즘을 통해 제공된 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 안전하게 동작하는 것을 보장한다.
- Kubelet는 쿠버네티스를 통해 생성되지 않는 컨테이너느 관리하지 않는다.
* Kube-proxy
- kebe-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스의 서비스 개념의 구현부이다.
- kube-proxy는 노드의 네트워크 규칙을 관린하며 이 네트워크 규칙을 이용하여 내부네트워크 세션이나 클러스터 밖의 파드로 통신을 한다.
- kube-proxy는 운영 체제에 가용한 패킷 필터링 계층이 있는 경우 이를 사용한다. 패킷 필터링 계층이 없는 경우 kube-proxy는 트래픽 자체를 forward한다.
* 컨테이너 런타임
컨테이너 런타임은 컨테이너 실행을 담당하는 소프트웨어이다.
쿠버네티스는 containerd,CRI-O와 같은 컨테이너 런타임 및 모든 Kubernetes CRI(컨테이너 런타임 인터페이스)구현체를 지원한다.
* 애드온
애드온은 쿠버네티스 리소스(데몬셋, 디플로이먼트 등)를 이용하여 클러스터 기능을 구현한다.
이들은 클러스터 단위의 기능을 제공하기 때문에 애드온에 대한 네임스페이스 리소스 kube-system 네임스페이스에 속한다.
*DNS
클러스터 DNS는 구성환경 내 다른 DNS서버와 더불어 쿠버네티스 서비스를 위해 DNS 레코드를 제공해 주는 DNS 서버다
쿠버네티스에 의해 구동되는 컨테이너는 DNS 검색에서 이 DNS서버를 자동으로 포함한다.
*웹 UI(대시보드)
대시보드는 쿠버네티스 클러스터를 위한 범용의 웹 기반 UI다
사용자가 클러스터 자체뿐만 아니라, 클러스터에서 동작하는 애플리케이션에 대한 관리와 문제 해결을 할 수 있도록 도와준다
* 컨테이너 리소스 모니터링
컨테이너 리소스 모니터링은 중앙 데이터베이스 내의 컨테이너들에 대한 포괄적인 시계열 맫트리스를 기록하고 그 데이터를 열람하기 위한 UI를 제공
* 클러스터-레벨 로깅
클러스터 레벨 로킹 메커니즘은 검색/열람 인터페이스와 함께 중앙 로그 저장소에 컨테이너 로그를 저장하는 책임을 진다
https://d33wubrfki0l68.cloudfront.net/2475489eaf20163ec0f54ddc1d92aa8d4c87c96b/e7c81/images/docs/components-of-kubernetes.svg
쿠버네티스[4] 오브젝트 (0) | 2022.08.31 |
---|---|
쿠버네티스[3] API (0) | 2022.08.30 |
쿠버네티스 [1] 컨테이너 까지의 정리 20220828 (1) | 2022.08.28 |
도커와 쿠버네티스는 컨테이너와 오케스트레이선의 약칭 (0) | 2022.08.26 |
도메인 구조 참고 20220811 (0) | 2022.08.11 |
댓글 영역