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

이희현님의 프로필 이미지

작성한 질문수

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

gcp 외부노출

해결된 질문

작성

·

338

1

GCP로 공부하고 있습니다만, 쿠버네티스 용 서비스가 아닌 일반 VM 인스턴스에서 직접 도커와 쿠버네티스를 설치하면서 실습하고있었는데요, 해당 강의중에 쿠버네티스로 서비스를 올려서 외부 아이피로 Http 웹사이트에 노출시키는 걸 봤는데 똑같이 파드 만들고 서비스까지 올렸지만 제 아이피와 포트번호는연결 거부가 나타나면서 방화벽 확인을 해달라하네요.

도커로 진행했을땐 동일 아이피에서 포트번호 8100으론 출력이 되었는데 쿠버네티스를 통해선 안되는데 별도 설정이 필요한걸까요?

아 해당 GCP 인스턴스 외부 아이피는 현재 고정상태입니다.

답변 7

1

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

No defined Path는 일단 pod로 잘 호출된 상태입니다. 

근데 예약된 Path가 아닌 api를 호출하면 그런 메세지가 리턴되도록 되어있고요.

api를 어떻게 호출하셨을까요?

1

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

apiserver-advertise-address는 Master Node의 IP로 하셔야합니다.

Service의 ExternalIPs 세팅시 통신이 안되면

Service 강의에 NodePort 세팅으로 구성을 해보시고도 안되는지 확인해보셔도 좋을거 같고요.

정상적으로 Pod가 Running 중인건지?

kubectl get pods --all-namespaces를 했을때 Pod 상태들이 모두 정상인가요?

그리고 netstate -anp | grep <port> 를 했을때 해당 포트가 리스닝 되있는지?

1

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

도커에서 8100으로 출력한 Port를 외부에서 접근 가능하다고 하심은결국 외부에서 VM의 특정 Port까지 접근 가능하고, 방화벽에는 문제 없다고 봐야겠네요?

근데 네트워크 문제는 각자의 환경에 따라 다르기 때문에 제가 딱 뭐가 문제다라고 말씀드리기가 어렵습니다.

정상적으로 쿠버네티스가 잘 설치됐다면, 별도로 externalIP를 위해서 해줘야할것 없어서요.

유일하게 쿠버네티스 설치시 신경써줘야 할 부분이 있다면 아래 내용인데 

kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.0.30

위에 apiserver-advertise-address 옵션을 잘 주셨나요?

그리고 어느 구간에 문제가 있는지 하나씩 디버깅을 해봐야는데

먼저 쿠버네티스에서 생성한 externalIP의 Port가 VM에서 실제 Port로 바인딩이 됐는지,,

0

이희현님의 프로필 이미지
이희현
질문자

아 확인 되었습니다. 감사합니다.

0

이희현님의 프로필 이미지
이희현
질문자

노드 포트로 진행했을테 curl 접근에선 강의와 같은 결과값을 받았습니다만, 웹으로 접근시엔

No defined Path.

라고 나오네요.

0

이희현님의 프로필 이미지
이희현
질문자

파드들은 정상적으로 러닝중입니다.

별도 노드용 인스턴스는 만들지 않았고 마스터 노드에서 실행중입니다. 마스터 롤은 제외시켰구요

netstat 확인해보니 해당 포드가 아에 목록에서 나오질 않네요..

도커쪽 포트는 리스닝중인데 확인 되는데 쿠버네티스는 안보이네요.

서비스의 상태입니다.

Name:              hello-svc

Namespace:         default

Labels:            <none>

Annotations:       <none>

Selector:          app=hello

Type:              ClusterIP

IP Families:       <none>

IP:                10.107.112.85

IPs:               10.107.112.85

External IPs:      내 VM 외부 IP 주소

Port:              <unset>  8200/TCP

TargetPort:        8000/TCP

Endpoints:         192.168.107.196:8000

Session Affinity:  None

Events:            <none>

svc야믈입니다.

apiVersion: v1

kind: Service

metadata:

  name: hello-svc

spec:

  selector:

    app: hello

  ports:

    - port: 8200

      targetPort: 8000

  externalIPs:

  - 내VM 외부 IP주소

0

이희현님의 프로필 이미지
이희현
질문자

--apiserver-advertise-address=192.168.0.30

이 옵션 값을 제 인스턴스 외부아이피와 맞춰야하나요?? 아니면 그냥 선생님처럼 진행하면될까요?

센토OS로 하셨지만 저는 현재 우분투 환경입니다.