인프런 커뮤니티 질문&답변

ydko71님의 프로필 이미지
ydko71

작성한 질문수

대세는 쿠버네티스 [초급~중급]

Pod - 실습

pod 생성시 cluster IP로 노출

작성

·

399

1

- 교육과정을 죽 학습하다가 이전의 과정이 궁금해지는 점이 있어서 문의 올립니다.
 
- Pod실습에서 pod 생상하고 나면 Cluster IP가 할당이 되었어요, containerPort를 사용했어요
- 이후 과정에서는 모두 Service controller를 사용해서 Service에 TargetPort를 사용해서 10.x.x.x대역 IP로 접근을 했구요
 
여기서 궁금한것이. Pod실습에서처럼, containerPort를 할당하면 모든 Pod들은 pod IP가 아닌 cluster IP 만 가지게 되는것인지요?
pod내의 container는 localhost IP로만 통신을 하게 되는것인지요 ? container별로 다른 IP 는 할당되는것이 없는지 궁금합니다.
 
 

답변 5

1

ydko71님의 프로필 이미지
ydko71
질문자

안녕하세요 강사님. ^^

강의 0:50 ~ 0:59 에 pod-1을 생성하는데요 containerPort를 사용하셧구요 IP가 10.16.36.75가 생겼어요, 서비스 없이 만들어졌구요  클러스터 내에서만 접속 할수 있어요 k8s master 에서 curl이 가능해요

1

ydko71님의 프로필 이미지
ydko71
질문자

답변 감사합니다.  일부 제가 질문을 잘못 했는데요

서비스 없이 POD에 Pod N/W  대역 IP 아닌 Server N/W 대역의 IP를 할당 받을수 있는지요 ? 

본 실습을 보면  pod생성시에 containerPort를 사용하면 Pod에 서비스 NW대역의 IP 가 생성되는 것으로 보여서 질문 드렸습니다.

0

일프로님의 프로필 이미지
일프로
지식공유자

네, 확인 감사합니다.

이제 무슨 내용인지 이해됐네요.

그건 캘리코 네트워크 플러그인 때문입니다.

강의에서 master나 worker노드에서 Pod나 Service의 IP를 호출할 경우가 있는데

그건 서비스 네트워크 플러그인으로 캘리코라는게 설치되었고,

해당 플러그인이 해당 VM에서 Pod IP로 호출해도 통신이 가능하게끔 기능을 제공해주기 때문에 가능한 점입니다.

모든 네트워크 플러그인이 그런 기능을 제공해주는건 아니고, 클라우드나 다른 환경적인 부분에 따라서 같은 캘리코 플러그인을 설치하더라도 그렇게 통신이 되지 않는 경우도 있습니다.

 

해당 부분을 보시고, Pod IP만 가지고 외부에서 호출한다라는 오해가 생길 수가 있겠네요.

외부에서 원하는 Pod로 호출하려면, 기본적으로 Service의 도움이 필요하다고 보시면 됩니다.

 

하지만, 정말 Pod만 생성해서 외부에서 통신 가능한 경우도 있긴 합니다.

그건 Pod 생성시 스펙으로 hostPort라는게 있는데, 

예를들어 Pod의 hostPort로 10080으로 세팅을 한다면,

해당 Pod가 workernode2번에 올라가 있을 경우, 해당 workernode2 IP의 10080으로 다이렉트로 연동이 됩니다.

이 경우는 DaemonSet이라는 컨트롤러로 앱을 설치해하는 경우 특별히 사용되는 케이스입니다.

0

일프로님의 프로필 이미지
일프로
지식공유자

일단 Pod에 Service의 네트워크 대역이 생성되지는 않습니다.

정확히 강의에 몇분 지점의 내용을 보시는 건지 알려주시면 확인해보겠습니다.

0

일프로님의 프로필 이미지
일프로
지식공유자

안녕하세요.

질문이 살짝 헷갈리는데, 일단 답변드리겠습니다.

Pod를 만들면, 각 Pod에 대한 IP가 동적으로 생성됩니다. Pod가 죽으면 IP가 변하고요,

그리고 해당 Pod에 Service를 연결하면, Service도 별도의 IP가 할당되고,

그 Service IP를 통해 Pod에 접근할 수 있습니다.

이렇게 하면 Pod가 죽어서 IP가 바뀌더라도, Service를 통해 고정적으로 접근가능해집니다.

좀더 다양한 Service 사용/호출 방법은

[중급편] Service를 보시면 됩니다.

 

그리고 Pod 내에 컨테이너가 두개 있다면,

컨테이너1이 컨테이너2에게는 localhost:8081, localhost:8082 등으로 호출 해야합니다.

컨테이너는 Pod의 한 IP를 공유하기 때문에 Port를 통해서만 구분해서 호출 할수 있거든요.

해당 부분의 좀더 자세한 내용은

[중급편] 아키텍쳐 - Networking을 보시면 됩니다.

 

부족한 답변이 있으면 추가 질문 주시기 바랍니다.

감사합니다.

ydko71님의 프로필 이미지
ydko71

작성한 질문수

질문하기