Devops 엔지니어 솔렐레 IT

[도커/쿠버네티스 기초] Kubernetes Service - 개념, 종류 본문

Devops 엔지니어가 알려주는 클라우드 지식/Docker, Kubernetes

[도커/쿠버네티스 기초] Kubernetes Service - 개념, 종류

솔렐레_ 2020. 11. 22. 09:00


Pod에 있는 IP는 시스템 장애나 성능 장애가 발생할 경우 언제든지 새로 생성되는 오브젝트이며 재생성이 되면 IP가 변하게 됩니다. 하지만 Service에 있는 IP의 경우는 사용자가 직접 삭제하지 않는 한 지워지지 않는 IP입니다.따라서 Service ip에 접근을하게 되면 그에 연결된 Pod에 접근을 할 수 있게 됩니다. Service는 여러 개의 Pod로 트래픽을 분산하여 전달을 해주게 됩니다.

1. ClusterIP

Service IP의 종류 중 가장 기본이 되는 ClusterIP 는 쿠버네티스 클러스터 내에서만 접근이 가능한 IP이지만 외부에서는 접근하지 못하는 ip입니다. 이를 ClusterIP 타입이라합니다. ClusterIP는 외부에서 접근이 불가하기 때문에 인가된 운영자, 내부 대시보드 관리, Pod의 서비스 상태를 디버깅할 때 주로 사용합니다.

2. NodePort
NodePort 타입을 만들면 기본적으로 Service에는 ClusterIP가 할당이 되고 모든 Node에 같은 Port가 할당이 되어서 외부로부터 Node IP와 할당된 Port로 접근이 가능합니다. 이 호출은 Service에 전달되어 연결되어있는 Pod로 트래픽을 전달해줍니다. 호출된 Node에 있는 Pod가 아니더라도 Service에 연결된 Pod 라면 호출이 가능합니다.
NodePort는 내부망에 대한 연결이나 데모, 임시 연결용으로 주로 사용합니다.

 

3. LoadBalancer
LoadBalancer 타입의 경우 NodePort의 성격을 가지고 있으면서 추가적으로 Node에 접근하기 전 트래픽을 분산시켜주는 역할을 하는 것을 의미합니다. 외부에서 접속을 하기 위해서는 LoadBalancer에 IP를 할당을 해줘야 합니다. LoadBalancer의 External IP는 Plugin을 통해 할당이 필요합니다. LoadBalancer는 외부 시스템 노출용으로 사용됩니다. 이를 통해서 내부 IP를 노출하지 않고 외부 IP를 통해 서비스를 할 수 있습니다.

4. Headless Service
Headless 서비스의 경우 Pod의 이름과 Service의 이름이 도메인에 등록이 되어 IP 대신 도메인 이름으로 원하는 Pod에 접근을 할 수 있습니다. 이렇게 되면 IP를 모르거나 변경되었을 경우에도 지속적으로 Pod와 서비스 연결을 할 수 있도록 합니다.

5. ExternalName Service
ExternalName으로 google이나 aws같이 특정 도메인 주소를 넣을 수가 있는데 Pod에서 원하는 데이터를 외부에서 가져올 때 Service Name만 변경해주면 원하는 곳에서 Pod의 변경 없이 Service만 변경하여 가져올 수 있습니다.

Comments