Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- java #추상클래스
- 정보처리기사 실기 #정처기 실기 #2024년 2회 #정처기 2024년 2회 #공부법 # 꿀팁
- object 클래스 # java
- level3
- server engineer
- ndc2025
- 25304번
- 반복문
- 주니어 백엔드 개발자
- 서버 개발자
- level2
- static #자바 메모리 구조 #멤버 변수
- 단계10
- 넥슨개발자컨퍼런스
- software enginner
- Spring
- 자바 #자바문법 #자바기초 #참조형 #기본형
- java #예외처리 #throw #throws
- tmax tibero
- 백엔드 개발자 로드맵
- 올 겨울은 조금 따뜻할 것 같다.
- server developer
- 2798블랙잭
- Next.js
- 서버 엔지니어
- 이분탐색
- 브루트 포스법
- tibero 7.23
- heap area #stack area #static area #jvm
- 나는야 4학년 #5학년 까지 가보자구
Archives
- Today
- Total
개발자 쿠키
[k8s] SpringBoot 서버를 pod로 띄우기 본문
1. Spring Boot 프로젝트 세팅

2. AppController 코드 작성

3. 프로젝트 실행

4. Dockerfile 작성
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
4-1. 빌드가 안되는 사람만, 잘 되면 pass
# java version 확인
java --version
# jvm version 확인
./gradlew --version
java, jvm 17로 세팅
jvm은 ctrl + alt + s -> gradle

환경변수
윈도우 검색창에 환경 변수 입력 → 시스템 환경 변수 편집 클릭

PATH=%JAVA_HOME%\bin;%PATH%
5. Spring Boot 프로젝트 빌드
./gradlew clean build
6. Dockerfile을 바탕으로 이미지 빌드하기
docker build -t spring-server .
7. 이미지 확인
docker image ls

8. spring-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: spring-pod
spec:
containers:
- name: spring-container
image: spring-server
ports:
- containerPort: 8080
9. 매니페스트 파일 기반 파드 생성
kubectl apply -f spring-pod.yaml
10. 파드 생성 확인
kubectl get pods
이미지 풀 정책
쿠버네티스가 .yaml 파일을 읽어 파드를 생성할 때, 이미지를 어떻게 pull할지에 대한 정책을 의미
1. Always : 무조건 레지스트리(=dockerhub, ECR과 같은 원격 이미지 저장소)에서 가져옴
2. IfNotPresent : 로컬에서 이미지를 먼저 가져옴. 만약 로컬에 없다면 레지스트리에서 가져옴
3. Never : 로컬에서만 이미지를 가져옴
이미지 풀 정책 설정 방법
apiVersion: v1
kind: pod
metadata
name: spring-pod
spec:
containers:
- name: spring-container
image: spring-server
ports:
- containerPort: 8080
imagePullPolicy: IfNotPresent
이미지의 태그가 latest or 명시하지 않으면 imagePullPolicy는 Always로 설정됨
이미지의 태그가 laters가 아닌 경우: imagePullPolicy는 IfNotPresent로 설정됨
STATUS가 ImagePullBackOff로 에러가 발생했다면?
기존에는 imagepullPolicy가 always로 작동했는데, spring-server라는 이미지는 dockerhub에 올린적이 없기 때문에 이미지를 받아 온 것이다.
기존 파드 삭제 후 다시 생성
kubectl delete pod spring-pod
kubectl apply -f spring.pod.yaml
kubectl get pods

11. Spring Boot 서버에 요청 보내 잘 응답 확인
11-1. 파드 내부로 들어가서 요청 보내기
kubectl exec -it spring-pod -- bash
curl localhost:8080
11-2. 포트 포워딩
kubectl port-forward pod/spring-pod 12345:8080

localhost:12345로 접속시 hello world 출력됨
파드 삭제
kubectl delete pod spring-pod
'k8s' 카테고리의 다른 글
| [CI/CD] Github Actions, Jenkins, ArgoCD로 CICD 파이프라인 구축 (8) | 2025.08.18 |
|---|---|
| [k8s] Next.js를 pod로 띄우기 (0) | 2025.06.08 |
| [k8s] Nginx로 pod 띄우기 (1) | 2025.06.07 |
| [k8s] window에서 Kubernetes 설치하기 (docker desktop) (1) | 2025.06.07 |