inflearn logo
강의

Course

Instructor

The Trend is Kubernetes (Beginner to Intermediate)

Pod - Hands-on Practice

pod 생성시 cluster IP로 노출

528

ydko71

3 asked

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 는 할당되는것이 없는지 궁금합니다.
 
 

pod kubernetes docker

Answer 5

1

ydko71

안녕하세요 강사님. ^^

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

1

ydko71

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

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

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

0

1pro

네, 확인 감사합니다.

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

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

강의에서 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

1pro

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

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

0

1pro

안녕하세요.

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

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을 보시면 됩니다.

 

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

감사합니다.

yml 작성하다가 에러 발생해서 문의 드립니다.

0

39

2

설치수업중에 질문드립니다.

1

58

2

기초다지기 설치 문의드립니다.

1

106

4

HPA 부분 Auto Scaler 설치하는 링크가 없습니다!!

1

66

3

클러스터 초기화 및 팟 네트워크 세팅시 문제가 있습니다

1

102

1

환경 구성에 있어서 질문드립니다

1

92

2

configMap 파일생성

1

77

2

dashboard에서 pod 생성이 되지 않습니다.

1

78

2

nodePort 서비스 접근 Client sent an HTTP request to an HTTPS server

1

74

2

대시보드 화면이 달라요 ㅠㅠ

1

61

2

대시보드 접근이 안됩니다!

1

98

2

Ingress실습에 난관이 있습니다

1

67

2

master 노드에서 ssh 로그인 창이 안뜨는 오류

1

82

3

안녕하세요 일프로님 궁금한 거 있습니다

0

50

1

7강 마지막 대시 보드 출력에 관한 문제

1

57

2

Could not resolve host: externalname1; Unknown error

0

60

2

Failed to create pod sandbox

1

90

2

자료실을 못 찾겠습니다 ㅜ ㅡ ㅜ

0

57

2

0/3 nodes are available

1

57

2

Back-off restarting fail~~

1

100

4

쿠버네티스 대시보드 접속 문제

1

89

2

설치관련 질문입니다

1

116

2

raw.githubusercontent.com 에 대한 질문

1

138

2

worker노드 추가시에

1

68

1