...
Code Block | ||
---|---|---|
| ||
/ # telnet kube-dns.kube-system 53 Connected to kube-dns.kube-system Connection closed by foreign host |
Headless Service
위 Service 예제에서는 편의상 externalIPs
를 모두 할당하였다.
하지만,
Pod 간 통신 즉 클러스터 내 통신만을 하기 때문에 굳이
externalIPs
를 할당할 필요가 없다.클러스터된 Pod가 2개 이상이고, 이들 pod들에 load balancing 하여 request할 필요가 없다.
등의 경우, Headless 서비스를 생성하면 되는데, 클러스터 내에서 DNS 쿼리를 하면, 앞 장에서 살펴본 CLUSTER-IP
가 할당되지 않기 때문에 해당 Pod의 IP를 직접 제공해준다.
만약 2개 이상의 Pod가 seletor로 연결되어 있다면, 랜덤한 순서로 이 서비스에 연결된 모든 IP 리스트를 리턴하게 된다. 말그대로, DNS 서버 역할만 수행한다.
자세한 내용은 구글 검색 등을 통해 살펴보기를 바라며, 아래와 같이 clusterIP: None
을 명시적으로 붙여주면 된다.
Code Block | ||
---|---|---|
| ||
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
namespace: test
spec:
selector:
app: nginx # 위 matchLabels에 지정되었던 label 지정.
type: ClusterIP
clusterIP: None
ports:
- name: http
port: 80 # targetPort를 지정하지 않을 경우, targetPort=port 설정 값. |
생성 후, 앞 장의 내용대로 nslookup
테스트를 해보면 이해가 될 것이다.
정리
이 실습들을 통해 모던 어플리케이션 시스템을 어떻게 K8s 상에 구축할 것 인가에 대한 통상의 개념을 알아보았다.
...