작성
·
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 타입의 서비스를 사용하여 외부 로드 밸런서를 생성하고 그를 통해 접근하는 방법도 고려해볼 수 있습니다.
문제가 해결되지 않거나 추가 질문이 있으시면 언제든지 질문해 주세요.
감사합니다 인턴씨