kind:Service 와 kind:Deployment 의 차이
Service
와 Deployment
는 Kubernetes(K8s)의 핵심 구성요소이지만, 그들의 목적과 기능이 크게 다릅니다. 다음은 두 오브젝트의 주요 차이점입니다:
- 목적:
- Service: Service의 주요 목적은 Pod의 그룹에 대한 네트워크 접근을 제공하는 것입니다. 즉, 서비스는 하나 이상의 Pod에 안정적인 IP 주소와 DNS 이름을 제공하고, 네트워크 트래픽을 해당 Pod로 라우팅하는 기능을 합니다.
- Deployment: Deployment의 주요 목적은 애플리케이션의 상태를 선언적으로 관리하고 업데이트하는 것입니다. 이는 Pod의 원하는 수를 유지하거나 롤링 업데이트와 같은 Pod 업데이트 전략을 관리하기 위해 사용됩니다.
- 기능:
- Service:
- 특정 Pod에 대한 안정적인 IP 주소와 DNS 이름 제공.
- 선택기(selector)를 사용하여 Pod를 식별하고 트래픽을 해당 Pod로 라우팅.
- 내부 및 외부 트래픽을 위한 다양한 서비스 유형 제공 (예: ClusterIP, NodePort, LoadBalancer).
- Deployment:
- Pod와 ReplicaSet의 생성, 업데이트 및 삭제를 관리.
- 롤링 업데이트, 롤백 및 다른 업데이트 전략 제공.
- 애플리케이션의 확장 및 축소를 위한 ReplicaSet 관리.
- Service:
- 연관성:
- 일반적으로 Deployment로 생성된 Pod는 Service에 의해 노출되어 외부로부터 접근이 가능하게 됩니다. 즉, Deployment로 애플리케이션의 인스턴스를 관리하고, Service를 사용하여 해당 인스턴스에 네트워크 접근을 제공하는 패턴이 흔히 사용됩니다.
요약하면, Service
는 네트워크의 관점에서 Pod에 접근하기 위한 방법을 제공하며, Deployment
는 애플리케이션의 라이프사이클을 관리하기 위한 방법을 제공합니다.