[k8s] 서비스 (ClusterIP, NodePort ,LoadBalancer, ExternalName)

Posted by Albert 1Day 12Hour 27Min 46Sec ago [2025-04-18]

k8s 서비스 유형: ClusterIP < NodePort < LoadBalancer < ExternalName


ClusterIP: ClusterIP는 쿠버네티스 서비스의 기본 설정값으로 클러스터 내에서만 파드에 접근될 수 있는유형(외부에서는 접근불가)

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app.kubernetes.io/name: web-deploy
type: ClusterIP
ports:
- protocol: TCP
port: 80


NodePort: NodePort는 각 노드의 특정 포트를 통해 외부 접근을 제공하는 유형. 

NAT를 사용하여 클러스터 내에서 각노드들의 지정된 포트(30000~23767)를 외부에 노출시켜줌(NodePort는 ClusterIP의 상위 집합)

apiVersion: v1
kind: Service
metadata:
name: web-service-nodeport
spec:
selector:
app.kubernetes.io/name: web-deploy
type: NodePort
ports:
- protocol: TCP
nodePort: 31001
port: 80
targetPort: 80


LoadBalancer: LoadBalancer는 외부 고정된 IP를 할당하여 해당 IP를 통하여 서비스 접근가능하게 하는 NodePort상위 집합

apiVersion: v1
kind: Service
metadata:
name: web-service-loadbalancer
spec:
selector:
app.kubernetes.io/name: web-deploy
type: LoadBalancer
ports:
- protocol: TCP
nodePort: 31002
port: 80
targetPort: 80
externalIPs:
- 192.168.56.5


ExternalName: ExternalName은 CNAME 레코드를 통해 클러스터 외부 서비스 DNS조회를 제공하는 유형.

즉 서비스가 클러스터 외부에 있는 외부 도메인을 가리키도록 설정할 수 있다.

apiVersion: v1
kind: Service
metadata:
name: web-service-externalname
spec:
type: ExternalName
externalName: www.visionboy.com





LIST

Copyright © 2014 visionboy.me All Right Reserved.