-
카테고리
-
세부 분야
데브옵스 · 인프라
-
해결 여부
미해결
Headless 관련 질문
22.06.09 12:12 작성 조회수 491
1
4.6 강의에 관한 질문입니다.
여기서 LoadBalancer로 svc를 배포했을 때는 외부에서 접근하려면 해당 서비스의 ip를 입력하여 pod에 접근하였습니다.
제가 이해한 것은 headless는 ip를 사용하는 대신에, 도메인주소를 사용하여 외부에서 특정 pod에 접근할 수 있게 해주는 것으로 이해했는데, 그렇다면 외부에서 접근하려면 어떻게 해야하나요?
예를 들어, svssts-chk-hn-2 라는 특정 pod에 접속하기 위해서는 net에서 nslookup에서 확인 할 수 있는
sts-chk-hn-2.sts-svc-domain.default.svc.cluster.local
이 부분이 도메인 주소인가요..? 이 부분을 브라우저 주소 창에 입력했을 때 접속이 안되서 질문 드립니다..
강좌에서도 headless를 사용했을 때 외부에서 접속하는 과정이 안나와 있는 것 같아 헷갈려서 질문드렸습니다!!
감사합니다.
답변을 작성해보세요.
2
주도
2022.06.11
안녕하세요, 김영진 님.
튜터 주도입니다.
질문 주신 부분은 다음과 같이 이해했습니다 :)
Q1. 외부에서 접근하려면 어떻게 해야하나요?
Q2. net에서 nslookup에서 확인 할 수 있는
sts-chk-hn-2.sts-svc-domain.default.svc.cluster.local 이 도메인 주소인가요? 왜 이 도메인 주소를 브라우저에 입력하면 접속이 안되나요?
질문과 관련된 개념을 정리해드리면 다음과 같습니다. :)
<서비스>
Pod 내부로 접근하는 방법을 서비스(Service)라고 합니다.
서비스는 네가지로 분류할 수 있습니다.
- 클러스터 내부에서만 사용 가능한 서비스 : Cluster IP
- Cluster IP에서 IP부분만 뺀 서비스 : 헤드리스
- 클러스터 외부에서 Pod로 접속 가능한 서비스 : NodePort, LoadBalancer
- 외부에 있는 이름을 내부의 리소스와 매핑해주는 서비스 : ExternalName
<헤드리스>
- 클러스터 내부에서만 사용 가능한 서비스가 바로 Cluster IP 이며, Cluster IP를 없는 상태(none)로 명시하면 헤드리스 서비스로 사용 가능합니다.
- 헤드리스는 IP는 없지만 도메인 이름으로 통신 가능하도록 할 수 있는 기능입니다. 단, 클러스터 내부에서 말이죠. 또한 도메인이름으로 통신 가능하다는점에서 StatuefulSet과 같이 사용하기 좋은 서비스 입니다.(참고 : 4.6강의 4분 24초)
-------------헤드리스 yaml 예시------------
---------------------------------------------------
<Ingress>
- 인그레스는 사용 목적 별로 경로 정보를 제공하는 표지판 역할을 하는 오브젝트입니다.
- 인그레스는 파드와 직접 통신할 수 없으며 노드포트 또는 로드밸런서같은 서비스의 도움을 받아야만 합니다. 다시 말해, 서비스가 없으면 인그레스도 없습니다.
- 인그레스가 제공하는 경로 정보를 실제로 운용하는 역할을 서비스가 합니다.
- 인그레스를 사용하려면 인그레스 컨트롤러를 배포해야 합니다.
- 인그레스는 고유한 주소를 제공해 목적에 따라 다른 경로 정보를 제공할 수 있습니다. 아래 yaml파일의 spec.rules 아래에서 경로 라우팅에 대한 정보를 설정할 수 있습니다.
---------------인그레스 yaml 예시------------------
따라서 답변은 다음과 같습니다. :D
Q1. 외부에서 접근하려면 어떻게 해야하나요?
A1. 클러스터 외부로부터 접근하려면 NodePort, LoadBalancer 서비스를 이용하여 가능하도록 할 수 있습니다. 도메인을 사용하여 외부로부터 접근하려면 '인그레스+인그레스 컨트롤러+서비스'조합으로 구성하여 접근할 수 있습니다.
Q2. net에서 nslookup에서 확인 할 수 있는
sts-chk-hn-2.sts-svc-domain.default.svc.cluster.local 이 도메인 주소인가요? 왜 이 도메인 주소를 브라우저에 입력하면 접속이 안되나요?
A2. sts-chk-hn-2.sts-svc-domain.default.svc.cluster.local 도메인은 클러스터 내부용 서비스인 ClusterIP, 헤드리스 서비스 이기때문입니다.
주신 질문과 관련된 강의는 4.6.클러스터주소(ClusterIP), 헤드리스(Headless)와 그 다음 진도인 4.8 인그레스(Ingress)에서 확인하실 수 있으며, 아래 리소스에서도 보실 수 있습니다.
- 공식 문서
- 조훈 선생님
혹시 추가로 궁금하신 점이 있으면 남겨주세요
감사합니다 :)
답변 1