쿠버네티스 서비스란
- 쿠버네티스 네트워크이다.
- api 서비스이다.
- service는 쿠버네티스에 동일한 레이블을 가진 파드들을 하나의 ip로 묶어서 관리를 요청한다.
- 쿠버네티스는 동일한 레이블을 갖고 있는 pod를 하나의 virtual ip로 묶는다.
- virtual ip는 로드밸런스 ip가 된다.
- 즉 이러한것이 만들어지도록 요청하는것이 쿠버네티스 서비스이다.
서바스 타입
cluster ip
기본 cluspte의 역할로 로드밸런서 ip를 만듦
예제
kind: Service metadata: name: ${name} spec: type: ClusterIP clusterIP: ${ip} selector: app: ${app} ports: - protocol: TCP port: ${virtual ip port} targetPort: ${pod port}
node port
cluster ip 기능에 추가로 포트까지 지원함
즉 로드밸런서 ip에 포트까지 붙일 수 있도록 지원
외부에서 들어올수 있는 노드의 포트가 열림
워커 노드가 1,2,3이 있고 각각에 pod가 하나씩 있을때
2번 워커노드의 열린 포트로 클라이언트가 요청을 하면
해당 워커노드가 로드밸런싱을 하여 1,2,3번의 내부 pod 중 하나로 요청을 보내준다.
kind: Service metadata: name: ${name} spec: type: NodePort clusterIP: ${ip} selector: app: ${app} ports: - protocol: TCP port: ${virtual ip port} targetPort: ${pod port} nodePort : ${node port}
loadbalaner
- 클러스터 Ip 에 추가로 실제 로드밸런서 장비의 포트와 virtual 로드밸런서 포트를 연결
- 물리 로드밸런서가 node port 로 요청을 전달
external Name
- 네이밍 서비스를 만든다.
- dns 서비스를 클러스터 내부안에서 지원해준다.
- 보통 외부 서버로 요청을 연결하는 경우에 사용한다.
확인해보기
- ip : lb ip
- endpoints : 실제 연결되는 ip
kubectl describe svc clusterip-service
서바스 중단
kubectl delete service -all
헤드리스 서비스
- clusterip가 없는 서비스로 단일 진입점이 따로 필요 없을때 사용됨
- 하지만 endpoint로는 묶어줌
- pod들의 endpoint를 dns resolving service 쓸 수 있도록 함
- 즉 pod하나하나에 대한 dns를 core dns에 등록하여 각각 쓸 수 있음
###kube-procyapiVersion: v1 kind: Service metadata: name: ${name} spec: type: ClusterIP clusterIP: None #이부분으로 사실상 헤드리스 서비스 명시!
- 쿠버네티스의 백엔드를 구현
- 즉 clusert ip를 쓰면, 실제로는 실제 각 노드별로 iptables가 있어서, 이게 요청을 받으면 각 내부 pod중 한개로 전달하는 방식이다.
- 그래서 실제 노드에서 iptables확인해보면 iptables가 찍힌다.
- node port를 쓰는 경우 해당 포트를 리슨함
'쿠버네티스' 카테고리의 다른 글
ha 쿠버네티스(multimaster 쿠버네티스) (0) | 2022.04.05 |
---|---|
job/cronjob (0) | 2022.04.04 |
StatefulSet (0) | 2022.04.04 |
daemonset (0) | 2022.04.04 |
ReplicaSet (0) | 2022.04.04 |