inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 배우는 쿠버네티스(v1.35)

4.6.클러스터주소(ClusterIP), 헤드리스(Headless)

Headless 관련 질문

672

김영진

작성한 질문수 8

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를 사용했을 때 외부에서 접속하는 과정이 안나와 있는 것 같아 헷갈려서 질문드렸습니다!!

 

감사합니다.

docker kubernetes

답변 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 예시------------

apiVersion: v1
kind: Service
metadata:
  name: nginx-headless
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx

---------------------------------------------------



<Ingress>

  • 인그레스는 사용 목적 별로 경로 정보를 제공하는 표지판 역할을 하는 오브젝트입니다.
  • 인그레스는 파드와 직접 통신할 수 없으며 노드포트 또는 로드밸런서같은 서비스의 도움을 받아야만 합니다. 다시 말해, 서비스가 없으면 인그레스도 없습니다.
    • 인그레스가 제공하는 경로 정보를 실제로 운용하는 역할을 서비스가 합니다.
  • 인그레스를 사용하려면 인그레스 컨트롤러를 배포해야 합니다. 
  • 인그레스는 고유한 주소를 제공해 목적에 따라 다른 경로 정보를 제공할 수 있습니다. 아래 yaml파일의  spec.rules 아래에서 경로 라우팅에 대한 정보를 설정할 수 있습니다.

 ---------------인그레스 yaml 예시------------------

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ing-default
            port:
              number: 80
      - path: /hn
        pathType: Prefix
        backend:
          service:
            name: ing-hn
            port:
              number: 80
      - path: /ip 
        pathType: Prefix
        backend:
          service:
            name: ing-ip
            port:
              number: 80
---------------------------------------------------

 따라서 답변은 다음과 같습니다.  :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)에서 확인하실 수 있으며, 아래 리소스에서도 보실 수 있습니다.

 

혹시 추가로 궁금하신 점이 있으면 남겨주세요

감사합니다 :)

 

0

김영진

한번에 궁금증이 해결 됐습니다!!

감사합니다!!

0

주도

안녕하세요, 영진님!

인그레스 부분을 더 명확하고 자세히 보완하여 답변을 수정했습니다. 

확인 부탁드립니다 :)

감사합니다!

섹션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