이 문서는 제가 쿠버네티스 공식문서를 혼자 보고 공부하는 곳입니다!
노드
컨테이너를 파드내에 배치를하고
실행을 시키고 싶을 때 실행하는 장소
API 서버에 노드를 추가하는 두 가지 주요 방법
1. 노드의 kubelet으로 컨트롤 플레인에 자체 등록
2. 사용자 또는 다른 사용자가 노드 오브젝트를 수동으로 추가
노드 생성
노드 생성은 kubectl을 사용해서 생성하고 수정할 수 있다.
파드의 노드 셀렉터와 함께 노드의 레이블을 사용해서 스케줄링을 제어할 수 있다.
예를 들어, 사용 가능한 노드의 하위 집합에서만 실행되도록 파드를 제한할 수 있다.
노드 상태
주소
HostName(노드의 커널에 의해 알려진 호스트명)
ExternalIP(외부 라우트 가능)
InternalIP(클러스터 내에서만 라우트 가능)
컨디션
conditions 필드는 모든 Running 노드의 상태를 기술한다.
Ready = 노드의 상태가 양호한지 (상태가 양호하면 True)
DiskPressure = 디스크 사이즈 상에 문제가 없는지 (디스크 용량이 많이 없으면 True)
MemoryPressure = 노드 메모리 상에 압박이 있는지 (메모리가 많이 없으면 True)
PIDPressure = 프로세스 상에 압박이 있는지 (노드 상에 많은 프로세스들이 존재하면 True)
NetworkUnavailable = 노드에 대해 네트워크가 올바르게 구성 됐는지 (올바르지 않으면 True)
용량과 할당가능
노드 상에 사용 가능한 리소스들을 나타낸다.
CPU
메모리
노드 상으로 스케줄 될 수 있는 최대 파드 수
정보
커널 버전
쿠버네티스 버전(kubelet, kube-proxy 버전)
docker버전(사용 할 때만)
OS 이름
이런 정보들은 kubelet에 의해 노드로부터 수집된다.
노드 용량
노드 오브젝트는 노드 리소스 용량(사용 가능한 메모리의 양, CPU의 수)를 추적한다.
쿠버네티스 스케줄러가 노드 상에 모든 노드에 대해(?)
충분한 리소스가 존재하도록 보장한다.
노드 상에 컨테이너에 대한 요청의 합이 노드 용량보다 더 크지 않도록 체크한다.
요청의 합은 kubelet에서 관리하는 컨테이너가 포함이 된다.
(kubelet에서 관리 안하는 컨테이너는 포함이 안된다.)
컨트롤 플레인 - 노드 간 통신
컨트롤 플레인(실제로는 API 서버)와 쿠버네티스 클러스터 사이에 대한 통신 경로의 목록에 대한 얘기.
노드 -> 컨트롤 플레인
컨트롤 플레인 -> 노드
1. API 서버에서 클러스터의 각 노드에서 실행되는 kubelet 프로세스
2. API 서버의 프록시 기능을 통해 API 서버에서 모든 노드, 파드 또는 서비스에 이르는 것
컨트롤러
컨트롤러는 에어컨의 실내 온도 조절기 같은 느낌이다.
우리가 온도를 24도로 맞추면 온도 조절기가 현재 온도와 우리가 맞춘 24도와 지속적으로 상태를 일치시킨다.쿠버네티스의 컨트롤러는 에어컨의 실내 온도 조절기의 역할을 한다.
컨트롤러 패턴
컨트롤러는 파드, 노드, 레플리카셋 같은 하나의 리소스를 무조건 추적을 한다.이러한 오브젝트들은 우리가 의도한 상태를 적어놓는다.그러면 컨트롤러는 그것을 보고 우리가 의도한 상태와 가깝게 만드는 역할을 한다.
API 서버를 통한 제어
잡(Job) 컨트롤러는 쿠버네티스의 내장 컨트롤러인데,파드, 혹은 여러 개의 파드를 실행,중지 등의 역할을 하는 리소스이다.
잡은 혼자서 실행되지 않고 API 서버에 명령을 내려서 지시한다."파드를 생성해줘" , "파드를 삭제해줘" 와 같은 명령을 내린다.
잡은 현재 상태를 의도한 상태에 가깝게 한다.
직접 제어
일부 컨트롤러는 클러스터 외부의 것을 변경해야 할 때는API 서버에서 의도한 상태를 찾은 다음, 외부 시스템과 직접 통신해서 현재 상태를 의도한 상태에 가깝게 만든다.
클라우드 컨트롤러 매니저
써드 파티 클라우드 플랫폼을 자신의 쿠버네티스 프로젝트에 릴리스하기 위한 도움을 주는 친구.
노드 컨트롤러
클라우드 인프라 스트럭처에 새 서버가 생성될 때 노드 오브젝트를 생성하는 역할
라우트 컨트롤러
쿠버네티스 클러스터의 다른 노드에 있는 각각의 컨테이너가 서로 통신할 수 있도록
클라우드에서 적절히 라우트를 구성하는 것
서비스 컨트롤러
필요한 서비스 리소스를 선언할 때 로드 밸런서와 기타 인프라 스트럭처 컴포넌트를 설정하는 것
'Kubernetes & Docker' 카테고리의 다른 글
쿠버네티스 공식문서 파헤치기 : 레플리카셋(ReplicaSet) (0) | 2020.07.16 |
---|---|
쿠버네티스 공식문서 파헤치기 : 파드(Pod) (0) | 2020.07.16 |
쿠버네티스 공식문서 파헤치기 : 개요 (0) | 2020.07.15 |
Docker-compose로 여러 개의 서비스 구동하기 (0) | 2020.07.10 |
Docker를 이용한 Tomcat Image pull & run (0) | 2020.07.10 |