Headless 관련 질문
672
작성한 질문수 8
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를 사용했을 때 외부에서 접속하는 과정이 안나와 있는 것 같아 헷갈려서 질문드렸습니다!!
감사합니다.
답변 1
2
안녕하세요, 김영진 님.
튜터 주도입니다.
질문 주신 부분은 다음과 같이 이해했습니다 :)
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)에서 확인하실 수 있으며, 아래 리소스에서도 보실 수 있습니다.
- 공식 문서
- 조훈 선생님
혹시 추가로 궁금하신 점이 있으면 남겨주세요
감사합니다 :)
섹션2. 1.5쿠버네티스_컨트롤플레인_노드와_워커_노드_그리고 kubeadm으로 쿠버네티스 직접 구성하기-v1.30 오류
0
62
2
[해결] 2.4. tabby config.yaml 파일 복사 실패 시
1
118
1
9.3 Error 발생 유도 테스트 확인 부탁드립니다.
0
110
2
livenessProbe 어플리케이션 재시작 의미
0
79
2
K8S 노들에 접근이 안됩니다.
0
186
6
arm virtualBox의 vagrant up 에러
0
122
2
추후 강의계획 질문
0
160
1
MAC 에서 사용할 수 있는 ova 파일은 없나요?
0
229
2
7.8. w3-affinity-leader 적용 에러 문제 질문드립니다.
0
226
5
커리큘럼 순서 문의
0
219
2
apply 실행 후 pod상태가 ContainerCreating 에서 변경이 안됩니다.
0
379
2
livenessProbe에 대한 설명이 조금 부족한거 같네요
0
228
3
controlplane_node.sh 실행 오류 문의
0
255
2
예제폴더의 경로와 영상의 경로가 너무나도 다릅니다
0
227
2
9.6강의 소스 수정 요청 및 에러 문의
0
174
2
8.6 강의 중 sysnet4admin/chk-info 이미지 bash 이슈
0
169
3
드디어 맥에서도 virtualbox가 지원 됩니다.
0
298
2
8.3강의 set-ctx-pod-admin.sh 수정 요청
0
130
3
7.5 강의 tardy-nginx 이미지 문제
0
3317
3
ch1. controlplan_node.sh 실행 시 에러가 뜹니다
0
315
3
Kubenetes 클러스터에 추가적으로 신뢰하는 CA를 넣을 수 있나요?
0
193
1
clusterrolebinding의 --namespace 옵션의 역할
0
173
2
A.0003 파일 vagrant file 수정 (자문자답)
0
174
2
nfs-client-provisioner 관련 생성 오류 질문
0
197
1





