1. Pod
Pod 안에는 하나의 독립적인 서비스를 구동할 수 있는 컨테이너들이 존재한다.
컨테이너는 각 서비스가 연결될 수 있는 포트를 가지고 있는데,
한 컨테이너에서 여러개의 포트를 가질 수는 있지만, 한 Pod 안에서 컨테이너끼리는 포트가 중복될 수 없다.
Pod가 생성될 때는 고유의 IP 주소가 할당 되는데, 만약 컨트롤러를 통해 Pod가 죽은 후 다시 생성되면 IP 주소가 변경된다. (휘발성)
Pod는 쿠버네티스 클러스터 내에서만 주소에 접근이 가능하며 외부에서는 접근이 불가능하다.
2. Label
Label은 Pod 뿐만 아니라 모든 오브젝트에서 사용될 수 있는데, 사용 목적에 따라 오브젝트를 분류하고, 분류된 오브젝트들만 따로 골라 연결하기 위해 존재하는 태깅이다.
Label은 Key:Value 쌍으로 구분되며 한 Pod에는 여러 개의 Label을 부여할 수 있다.
서비스를 작성할 때 Pod의 Label을 붙여주면 해당 Label의 Pod가 전부 연결된다.
3. Node Schedule
Pod는 여러 노드들 중에 한 노드에 올라가야 하는데, 노드를 지정하는 방법은 두 가지가 있다.
1) 노드에 연결한 Label을 Pod를 만들 때 지정하여 직접 선택하는 방법.
2) Kubernetes의 스케줄러가 노드의 자원량과 Pod가 사용할 리소스 사용량을 판단하여 Pod를 자동으로 할당하는 방법.
Pod를 생성할 때 Pod에 사용될 리소스양을 설정할 수 있는데, 이를 참조해 Node Scheduler가 알아서 Pod를 스케줄링해준다.
만약 리소스를 설정하지 않으면 Pod 안에 있는 컨테이너 앱에서 부하가 생길 때 무한으로 노드에 있는 자원을 사용하려 하며, 그 노드안에 있는 다른 Pod들은 사용할 수 있는 자원이 없기 때문에 다 같이 죽는 상황이 발생할 수 있다.
'Cloud Computing > Kubernetes' 카테고리의 다른 글
Kubernetes Object - ConfigMap, Secret (0) | 2021.01.13 |
---|---|
Kubernetes Object - Volume (0) | 2021.01.12 |
Kubernetes Object - Service (0) | 2021.01.12 |
Kubernetes 시작하기 (0) | 2021.01.11 |
Kubernetes 환경 세팅 (0) | 2021.01.07 |