[k] 서비스, 파드, 컨테이너 구조 및 CrashLoopBackOff 해결
2022. 9. 26. 10:39ㆍOS/쿠버네티스
[k] 서비스, 파드, 컨테이너 구조
Service, Deployment
- 서비스포트에 targetPort가 있고 Deployment에 conatinerPort및 pod에 conatinerport 없어도 오류 나지 않음
apiVersion: v1
kind: Service
metadata:
name: name
labels:
app: name
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: name
apiVersion: apps/v1
kind: Deployment
metadata:
name: d
namespace: heis
labels:
app: d
spec:
replicas: 1
selector:
matchLabels:
app: d
template:
metadata:
labels:
app: d
spec:
containers:
- name: f
image: uri
ports:
- containerPort: 8080
env:
- name: DATE
value: 'DATE_STRING'
- name: e
image: uri
env:
- name: DATE
value: 'DATE_STRING'
원하는기능
- 컨테이너f를 내리고싶음
오류나는 상황
- f컨테이너는 스프링앱인데, 스프링앱만 내리기 위해
SpringApplication.run
부분을 주석 처리 하여 배포 할 경우 CrashLoopBackOff 상황 발생
원인
istio 에서 spring인 f컨테이너를 체크하는데, run부분이 주석걸려있으므로 컨테이너 내에 프로세스가 떠있지 않는다.
맞겠지?
해결방법
name f 컨테이너만 주석처리해도 오류나지 않고 배포 성공
서비스가 targetPort 8080을 보고있는데 8080 컨테이너가 없음애도 오류가 나지 않는 이유는?
- 나중에 채우기
참고 : kubernetes - Container port pods vs container port service - Stack Overflow