1. 탬플릿 작성
-
로드밸런싱이 필요 없거나 단일 서비스 IP가 필요 없을 때 사용
-
headless.yaml
apiVersion: v1
kind: Service
metadata:
name: headless-service
spec:
type: ClusterIP
clusterIP: None
selector:
app: nginx-for-svc
ports:
- protocol: TCP
port: 80
targetPort: 80
2. 서비스 생성
kubectl apply -f headless.yaml
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
headless-service ClusterIP None <none> 80/TCP 6s
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 5h10m
- 상세 정보를 확인해 보면 서비스 IP는 없지만 Endpoint(파드)에 대한 IP는 확인 가능
kubectl describe svc headless-service
Name: headless-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"headless-service","namespace":"default"},"spec":{"clusterIP":"Non...
Selector: app=nginx-for-svc
Type: ClusterIP
IP: None
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 10.233.117.26:80
Session Affinity: None
Events: <none>
3. 테스트
- 새로운 파드에 접속(또는 생성) 하여 dig 명령어로 endpoint에 대한 CNAME 레코드 확인
kubectl exec -it testnet-5f694fd785-42krf /bin/bash
bash-5.0# dig headless-service.default.svc.cluster.local
...
;; ANSWER SECTION:
headless-service.default.svc.cluster.local. 5 IN A 10.233.117.26
...
댓글남기기