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

임정우님의 프로필 이미지

작성한 질문수

데브옵스(DevOps)를 위한 쿠버네티스 마스터

포드 디스크립터 작성

GKE 질문입니다

작성

·

231

0

안녕하세요, 강사님

현재 GKE에서 실습 중인데 GKE에서 팟을 실행한 다음 로컬에서 curl로 요청을 보내거나 웹브라우저로 접근하려고하는데, curl로 요청하거나 웹브라우저로 접근하면 무한로딩만 걸려서 질문드립니다. IP는 클러스터 정보에 있는 외부엔트포인트로 접근했습니다.

아래와 같이 jenkins.yaml을 만들어서 apply를 했습니다.

읽어주셔서 감사합니다.

 

jenkins.yaml:

apiVersion: v1

kind: Pod

metadata:

name: my-pod

labels:

app: MyApp

spec:

containers:

- name: my-container

image: jenkins/jenkins

ports:

- containerPort: 80

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

GKE(Google Kubernetes Engine)에서 Pod를 실행한 뒤 해당 Pod에 접근하고자 하시는 상황이시군요. 여기서 주의하실 점은, 단순히 Pod를 생성했다고 해서 외부에서 바로 접근할 수 있는 것은 아니라는 것입니다. Pod의 컨테이너가 외부에서 접근 가능하도록 하려면 서비스(Service) 객체를 생성하여 클러스터 외부에 노출시켜야 합니다.

제공해주신 jenkins.yaml 파일에는 서비스 객체가 정의되지 않고 있으므로, 외부 IP를 통한 접근이 안 될 것입니다. Pod에 대한 서비스를 생성하여 외부에 노출시키려면, 다음과 같이 서비스(Service) 정의를 추가하셔야 합니다.

예를 들어, NodePort 타입의 서비스를 사용하여 Pod에 접근하도록 설정하는 예시는 다음과 같습니다:

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30000

여기서 selector 필드는 해당 서비스가 관리할 Pod들을 어떻게 찾을지를 정의합니다. 위의 경우, app: MyApp 라벨을 가진 Pod를 대상으로 합니다. ports 필드에서는 서비스가 받을 포트(port), Pod의 연결 대상 포트(targetPort), 그리고 Node에서 열릴 포트(nodePort)를 지정합니다.

NodePort 서비스를 생성한 후에는 해당 노드의 IP와 nodePort(예: 30000)에 지정한 포트 번호를 사용하여 외부에서 Pod에 접근할 수 있습니다.

제공된 문서 중 “deploying applications to a cloud platform” 부분을 참고해 보시면 Kubernetes 환경에 Spring Boot 애플리케이션을 배포하는 데 보다 자세한 내용을 얻을 수 있을 것입니다.

추가로, GKE와 같은 관리형 Kubernetes 서비스를 사용하고 계시다면 LoadBalancer 타입의 서비스를 사용하여 외부 로드 밸런서를 생성하고 그를 통해 접근하는 방법도 고려해볼 수 있습니다.

문제가 해결되지 않거나 추가 질문이 있으시면 언제든지 질문해 주세요.

임정우님의 프로필 이미지
임정우
질문자

감사합니다 인턴씨