본문 바로가기
Programming/Kubernetes

Kubernetes Service

by guru_k 2021. 10. 8.
728x90
반응형

Kubernetes Pod은 각각 자신만의 IP를 할당 받으며, Pod의 생명주기는 매우 짧은 편입니다. 즉, Pod는 매우 빈번하게 삭제되거나 생성될 수 있으며 Pod은 생성될 때 IP를 할당 받고 삭제 이후 다시 Pod이 생성될 경우 새로운 IP를 할당 받게 됩니다.

이처럼 Pod의 IP는 빈번하게 변경되므로 stable한 IP가 필요한데 이 역할을 Service가 수행하게 됩니다.

Service Type에는 여러가지가 있지만 기본적인 타입은 고유의 Cluster IP를 가지며 이를 이용해서 Kubernetes 내부 혹은 외부에서 통신이 가능하게 됩니다.  

kubernetes Service는 기본적으로 selector로 선택된 app으로 트래픽을 전달하며 로드밸런싱 역할을 수행합니다.

apiVersion: v1
kind: Service
metadata:
  name: foo-service
spec:
  selector:                  
    app: foo
  ports:
  - port: 5000               
    protocol: TCP
    targetPort: 5000

위와 같이 Service를 생성할 수 있으며 foo-service를 통해 selector로 선택된 foo pod에 접근할 수 있습니다.

Kubernetes Service

foo-service를 생성 시 동일한 이름의 endpoints 가 생성이 되며 이 endpoints에 pod ip가 등록되어지며 새로운 pod이 생성 혹은 삭제 될 때 endpoints에 업데이트 됩니다.

Service Types

ClusterIP

kubernetes service의 default type으로 cluster 내부 ip 를 할당 받으며 cluster 내부에서 해당 service를 통해 pod으로 접근이 가능합니다.

NodePort

각 노드에 Port를 외부로 노출하여 외부로부터 노출된 Port로 접근이 가능하도록 합니다. 

Headless

로드밸런싱이 필요 없거나 싱글 서비스 IP가 필요하지 않을 경우 Headless type으로 Service를 구성할 수 있다. Cluster IP를 가지고 있지 않기 때문에 Headless type으로 설정된 Service를 호출 시 Pod IP를 직접 할당 받게 된다.

728x90
반응형

댓글