쿠버네티스 객체
- 쿠버네티스에서 클러스터내의 리소스를 추상화하기 위해 객체라는 개념을 사용한다.
- 쿠버네티스 객체는 쿠버네티스에서 실행되는 애플리케이션, 서비스, 볼륨, 네트워크 등 모든 것을 표현한다.
- 명령적 방식과 선언적 방식으로 객체를 생성할 수 있으며 쿠버네티스 적절한 객체를 사용하여 복잡한 애플리케이션을 쉽게 배포하고 관리할 수 있다.
Pod 객체
- 여러 개의 컨테이너가 실행되는 가장 작은 배포단위로 컨테이너를 실행하고 관리하는 소스이다.
- pod는 컨테이너를 논리적으로 그룹화하고, 볼륨 및 네트워크 네임스페이스와 같은 공유 리소스를 공유한다.
- deployment, replicaset 등 다양한 오브젝트를 사용하여 pod를 생성하고 관리할 수 있다.
- pod는 클러스터 내부 IP주소(디폴트로 생성)를 가지며, 컨테이너 간 통신을 위해 localhost를 사용한다.
- pod가 교체되면 클러스터 내부 IP도 변경된다.
- pod는 일시적이며, 장애 또는 업그레이드에 대한 대응을 위해 자주 삭제되고 재생성된다.
- pod가 쿠버네티스에 의해 교체되거나 제거되면 기본적으로 저장된 데이터가 손실된다.
- 컨테이너 상태를 모니터링하고 로그를 수집할 수 있다.
- Pod는 스케일링 대상이 아니며, 여러 개의 동일한 Pod 인스턴스를 만들어서 관리하며, 스케일링은 replicaset, deployment등과 같은 오브젝트를 통해 이루어진다.
- 동일한 pod내의 컨테이너는 같은 호스트와 네트워크 네임스페이스에서 실행된다
- 여러 개의 컨테이너를 함께 배치하여 하나의 서비스로 제공하는 경우 사용된다.
- 일반적으로 Pod 객체를 수동으로 생성하고 특정 워커 노드에 할당하지 않는다.
Deployment 객체
- Deployment 객체는 Pod를 생성, 관리하며 pod의 라이프사이클 관리와 안정적인 운영을 도와주는 역할을 한다.
- Deployment는 애플리케이션의 배포 및 업데이트를 담당한다. Pod 버전을 관리하고 업데이트, 스케일링, 롤백등 작업을 수행할 수 있다.
- Deployment는 ReplicaSet을 생성하고 ReplicaSet은 Pod를 생성한다.
- ReplicaSet은 Pod를 지속적으로 모니터링하고, 원하는 개수만큼 Pod생성하거나 제거한다.
- ReplicaSet을 이용하여 라이프사이클을 관리할 수 있어 Pod의 개수를 지속적으로 유지하며, Pod가 비정상적으로 종료될 경우 자동으로 재시작한다.
- Deployment가 Replicaset을 관리하기 때문에 Pod의 생성, 삭제, 롤링 업데이트 등을 자동으로 수행한다. 롤링 업데이트를 통해 애플리케이션 버전을 변경하는 데 사용됩니다. 이로써 애플리케이션 업데이트 과정에서 중단 없이 새 버전의 Pod을 배포할 수 있다.
- ReplicaSet을 사용하면 애플리케이션을 병렬로 실행할 수 있으며, 여러 버전의 애플리케이션을 동시에 관리하는 데 도움이 된다.
Service 객체
- 여러 개의 Pod를 논리적인 집합으로 묶어서 관리하고, 클러스터 외부의 요청을 Pod 집합에 분배하는 역할을 한다.
- Service는 외부에서 Pod에 접근할 수 있도록 하는 추상적인 개념이다.
- Service 객체는 Pod의 IP 주소가 자주 변경되는 것을 대처하기 위해 사용된다.
- 기본적으로 Pod 내부 IP는 클러스터 외부에서 Pod에 접근하는 데 사용할 수 없다.
- Pod가 교체될 때마다 IP주소가 변경되는데 Service객체를 통해 일관된 주소를 사용하여 외부에서 접근할 수 있다.
- 클러스터 내부 또는 외부에서 Pod에 접근할 수 있는 IP주소를 제공한다.
- Service의 종류에 따라, 클러스터 내부에만 접근 가능한 ClusterIP, 외부에서 접근이 가능한 NodePort, LoadBalancer 등 다양한 유형이 있다.
- 로드밸런싱을 지원하여 여러 Pod 중에서 적절한 Pod로 접근을 분산한다.
Ingress 객체
- Ingress 객체는 HTTP 및 HTTPS 트래픽을 라우팅 하고, 애플리케이션의 외부 노출을 관리하는 역할을 한다.
- 인그레스는 애플리케이션의 외부에서 접근할 수 있도록 하는 추상적인 개념이다.
- 인그레스 객체는 클러스터 외부에서 클러스터 내부의 서비스로 들어오는 트래픽을 관리하며, HTTP 호스트 또는 경로 기반 라우팅 규칙을 설정할 수 있다.